No jestli se chceš dozvědět něco o GraalVM, máš veliké štěstí, zrovna na to téma shodou okolností vyšel bezva článek na rootu, můžeš si ho přečíst tady: https://www.root.cz/clanky/pribehy-z-vyvoje-nejrychlejsiho-virtualniho-stroje-na-svete/
Já myslím, že obdoba hotspot je tam popsána ...
".. provádí statickou analýzu kódu s cílem nalezení částí, které se skutečně mohou v průběhu běhu programu použít. Po té provede úplný ahead-of-time překlad a vytvoří samostatně použitelný soubor pro daný operační systém .."
Ale mohu se mýlit, GraalVM neznám, mám jen informace z článku.
P.S.: NEsouhlasím se zpracováním osobních údajů v rozsahu v odkazovaném textu u checkboxu, který jde NAD rámec údajů nezbytných pro technické zpracování
Někde uprostřed článku je část věnované čisté Javě. Nejprve se běží na standardní verzi Javy8:
$ mvn -f java/pom.xml install $ java -version java version "1.8.0_171" $ mvn -f java/algorithm/pom.xml exec:java Hundred thousand primes computed in 86 ms
a pak se ten samý kód spustí na GraalVM. Úplně stejným příkazem, jen s odkazem na jiný adresář, kde je nainstalována GraalVM (to je možné, protože rozložení souborů je vlastně úplně stejné):
$ JAVA_HOME=/graalvm-1.0.0-rc1/ mvn -f java/algorithm/pom.xml exec:java Hundred thousand primes computed in 79 ms
Z toho mělo vyplynout, že GraalVM je 100% kompatibilní náhražka oficiálního JDK. Prostě si GraalVM stáhnete a hned uvidíte, jestli vám váš Java výpočet poběží rychleji!
GraalVM = JDK8 - C2Kompilátor + GraalKompilátor + interpretry JS/Ruby/R/LLVM/Python + native-image
Z pohledu ciste javy by se to dalo vyjadrit i jako: GrallVM = (Hotspot+JVMCI)+GraalKompilator(JIT)
Otestoval jsem to na našem větším projektu: 1.5MLOC, 5752 source files:
OpenJdk8:
skybber@skybber ~/workspace/project.prj $ java -version
openjdk version "1.8.0_162"
OpenJDK Runtime Environment (build 1.8.0_162-b12)
OpenJDK 64-Bit Server VM (build 25.162-b12, mixed mode)
skybber@skybber ~/workspace/project.prj $ time mvn -Dmaven.test.skip=true package
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:16 min
[INFO] Finished at: 2018-06-01T22:06:26+02:00
[INFO] Final Memory: 19M/410M
[INFO] ------------------------------------------------------------------------
real 1m18.002s
user 3m50.231s
sys 0m5.159s
GraalVM:
skybber@skybber ~/workspace/project.prj $ java -version
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-12)
GraalVM 1.0.0-rc1 (build 25.71-b01-internal-jvmci-0.42, mixed mode)
skybber@skybber ~/workspace/project.prj $ time mvn -Dmaven.test.skip=true package
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:24 min
[INFO] Finished at: 2018-06-01T21:58:07+02:00
[INFO] Final Memory: 29M/471M
[INFO] ------------------------------------------------------------------------
real 1m26.417s
user 4m20.092s
sys 0m5.753s
Ten článek si opravdu přečtěte, i podrobněji, stojí za to. Je sice psán stylem PR, ale má jinak i celkem zajímavé informace.
Takže, pokud GraalVM blížeji neznáte, musíte přeskočit úvodní marketingové žblepty, abyste se dozvěděl o čem je řeč. Musíte jít až na třetí odstavec (2-3 stránku) "GraalVM ... Univerzální virtuální stroj GraalVM vám umožní spouštět: .. GraalVM lze použít buď samostatně a nebo ji začlenit ...".
Už na té třetí straně začíná plnohodnotný (non PR) text, už psaný normálnějším slohem. A je docela přínosný.
P.S.: Občas si i pak musíte odmyslet angažované svazácké výkřiky typu "Pojďme budovat tuto revoluční technologii ..." či styl opakovaných a zbytečných řečnických otázek typu "Jsou opravdu GraalVM jazyky tak rychlé, jak o sobě tvrdí?", ale už je toho výrazně méně, než v úvodu. To už ignorujte, zbytek textu má svou informační hodnotu, která za přečtení stojí.
P.P.S.: NEsouhlasím se zpracováním nepotřebných osobních údajů, zejména v rozsahu v odkazovaném textu u checkboxu, který jde NAD rámec údajů nezbytných pro technické zpracování (např. II.2.2 ... je v rozporu s GDPR vynucovat takový souhlas, bez možnosti užít službu bez souhlasu).