GraalVM
Z Denik
(→Jak teď dále?) |
(→Jak teď dále?) |
||
Řádka 40: | Řádka 40: | ||
'''GraalVM''' je připravena na použití. To však neznamená, že není co vylepšovat. Neustále pracujeme na zúplnění implementace (rychlé již jsou dost) jazyků ''Python'', ''R'' a ''Ruby''. Není však v našich silách naimplementovat všechny jazyky a nástroje. Naštěstí je '''GraalVM''' otevřený ekosystém, který motivuje každého k vytváření vlastních jazyků a nástrojů. Navštivte http://www.graalvm.org a: | '''GraalVM''' je připravena na použití. To však neznamená, že není co vylepšovat. Neustále pracujeme na zúplnění implementace (rychlé již jsou dost) jazyků ''Python'', ''R'' a ''Ruby''. Není však v našich silách naimplementovat všechny jazyky a nástroje. Naštěstí je '''GraalVM''' otevřený ekosystém, který motivuje každého k vytváření vlastních jazyků a nástrojů. Navštivte http://www.graalvm.org a: | ||
* postavte svůj vlastní jazyk na '''GraalVM''' | * postavte svůj vlastní jazyk na '''GraalVM''' | ||
- | * vytvořte svůj vlastní nástroj, jež bude pracovat se všemi | + | * vytvořte svůj vlastní nástroj, jež bude pracovat se všemi jazyky |
* začleňte '''GraalVM''' do své aplikace | * začleňte '''GraalVM''' do své aplikace | ||
Pojďme budovat tuto revoluční technologii pro polyglotní svět společně! | Pojďme budovat tuto revoluční technologii pro polyglotní svět společně! |
Verze z 12. 4. 2018, 12:43
V současnosti běžně používáné virtuální stroje umí rychle vykonávat programy napsané v jednom jazyce, či malé množině sobě podobných jazyků. Překladače, správu paměti a vývojové či ladící nástroje je tedy třeba psát znovu a znovu téměř od začátku. To komplikuje život nejen tvůrcům virtuální strojů, ale i vývojářům, jež je používají. Nekonzistetní rychlostní charakteristiky, úplně odlišná vývojová prostředí, nové způsoby konfigurace. To vše musí člověk zvládnout při přechodu z jednoho vývojového ekosystému na jiný. Problémy se ještě znásobí, povšimneme-li si obtížnosti a složitosti komunikace mezi programy napsanými v různých jazycích. To obvykle vyžaduje nákladnou serializaci a opětnou deserializaci datových struktur při volání z jednoho systému do jiného, což je operace, jež bezpečně zabije rychlost jakéhokoli výpočtu. Navíc jsou v současnosti nejvýkonnější virtuální stroje složití bumbrlíčci více připomínající operační systém než něco, co byste si chtěli vložit do svého programu jako knihovnu.
Obsah |
OracleLabs
Je tomu již několik let, co se OracleLabs rozhodly založit novou výzkumnou skupinu zaměřenou na překonání výše uvedených nedostatků. Naší vizí je vytvořit univerzální VM, která by poskytla tu nejvyšší výkonnost pro libovolné programovací jazyky a tudíž překonala současná omezení v komunikaci mezi jednotlivými programy a jejich knihovnami. Kromě toho by takováto univerzální architektura poskytla sjednocenou, jazykově nezávislou platformu pro tvorbu nástrojů, zjednodušila jejich použití a údržbu. Při našem důrazu na snadnost začlenění této platformy do existujících a nově vznikajících systémů, by pak mělo stačit přidat tuto univerzální knihovnu a okamžitě by byl k dispozici jakýkoli z téměř neomezeného spektra jazyků.
Abychom tohoto cíle dosáhli, rozhodli jsme se vydat zcela novým směrem výzkumu a po letech experimentování jsme schopni nabídnout systém, který z těchto revolučních myšlenek těží. GraalVM je nejen univerzální virtuální stroj, ale především celý ekosystém navržený pro polyglotní svět!
GraalVM dodá každému jazyku rychlost, umožní jeho propojení s jakýmkoli jiným a to s nulovým zpomalením! Místo obalování a zapouzdřování datových struktur při přechodu mezi jazyky, objekty používané v GraalVM mohou plynule a bez omezení plout z jednoho jazyka do druhého. Tyto jazyky pak s nimi mohou přirozeně pracovat. Vytvářet vícejazyčné aplikace ještě nikdy nebylo snažší. Máte vlastní knihovnu v Javě a chtěli byste ji použít v node.js? Napsal váš kolega algoritmus v Pythonu a vy byste jej chtěli volat z Java aplikace? Provádíte statistické výpočty a zobrazení v jazyce R a máte data vypočtena jiným jazykem? Není problém! GraalVM dává vývojářům svobodu použít programovací jazyk nejvhodnější pro dané účely.
GraalVM
Univerzální virtuální stroj GraalVM vám umožní spouštět:
- jazyky postavené nad JVM jako je Java, Scala, Groovy nebo Kotlin
- JavaScript - samostatně či v rámci node.js
- jazyky přeložitelné do LLVM bitkódu jako je C, C++ či Rust
- experimentální verze jazyků Ruby, R a Python
GraalVM lze použít buď samostatně a nebo ji začlenit do existujících systémů jako je OpenJDK, node.js či dokonce integrovat do databází jako je MySQL a nebo Oracle RDBMS. Zvláštní pozornost byla věnována vytvoření efektivního mechanismu pro zpřístupnění dat těchto systémů pro jazyky běžících uvnitř GraalVM a to bez zbytečných konverzí či alokací proxy objektů. Jazyky mohou tudíž operovat nad daty ve formátech, které se již používají a při tom neztratit nic ze své rychlosti.
Pro jazyky založené nad JVM nabízí GraalVM nástroj umožňující vytvoření spustitelných, samostatně distribuovatelných EXE souborů (případně .so či .dylib knihoven) s okamžitou inicializací a menšími paměťovými nároky. Tento nástroj 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. Takto vytvořenou knihovnu lze spojit s ostatními přeložitelnými programy a případně i přibalit GraalVM kompilátor pro just-in-time překlad dynamických jazyků.
Neopomenutelnou součástí GraalVM ekosystému je i podpora pro tvorbu jazykově nezávislých nástrojů. Standardní distribuce GraalVM nabízí debugger, profiler a nástroj na analýzu paměti. Tyto nástroje byly vytvořeny nad stabilním instrumentačním API. Výzkumné týmy a nezávislí vývojáři mají tudíž možnost postavit své existující či nové nástroje nad tímto API a získat tak přístup k uživatelům jakéhokoli jazyku implementovaného pro GraalVM. Věříme, že GraalVM může být univerzálním virtuálním strojem propojujícím nástroje a jazyky v synergii dosud nevídané.
Produkční nasazení
Jednou z nejznámějších společností jež těží z revolučních vlastností GraalVM je Twitter, který takto spouští své tvítovací Scala mikroslužby. Díky agresivním optimalizacím je totiž GraalVM překladač schopen zredukovat alokace objektů a urychlit tak celkovou rychlost výpočtů. Díky méně alokovaným objektům je pak třeba třeba trávit méně času při úklidu pomocí garbage kolektoru, méně přerušovat běh uživatelského výpočtu a celkově snížit energetické náklady provozování globální komunikační služby jakou Twitter je. Více o tom, jak Twitter šetří náklady díky GraalVM lze nalézt v prezentaci Twitter JVM inženýra. V současnosti můžeme s čistým svědomím doporučit produkční nasazení GraalVM pro běh jazyků založených nad JVM, pro JavaScript (samostatně či společně s node.js). Jazyky jako R, Ruby či Python jsou zatím vhodné spíše pro experimentování.
Jak teď dále?
GraalVM Community Edition, jež je sestavena čistě z otevřených zdrojových kódů, lze stáhnout z GitHubu. Kromě toho nabízíme také přístup k GraalVM Enterprise Edition, jež poskytuje větší bezpečnost, škálovatelnost a rychlost v produkčních prostředích. Tato verze je dostupná například v prostředí Oracle Cloudu, případně může být stažena k vyzkoušení z Oracle Technology Network stránek. Kontaktujte prosím graalvm-enterprise_grp_ww@oracle.com pro možné komerční nasazení.
Nejnovější informace včetně vydaní nových verzí a dokumentace lze nalézt na http://www.graalvm.org. Každodenní vývoj lze sledovat v naší GitHub repozitoři, kde je také možné se k vývojářské komunitě připojit. O všeobecných novinkách tvítujeme jako @graalvm.
GraalVM je připravena na použití. To však neznamená, že není co vylepšovat. Neustále pracujeme na zúplnění implementace (rychlé již jsou dost) jazyků Python, R a Ruby. Není však v našich silách naimplementovat všechny jazyky a nástroje. Naštěstí je GraalVM otevřený ekosystém, který motivuje každého k vytváření vlastních jazyků a nástrojů. Navštivte http://www.graalvm.org a:
- postavte svůj vlastní jazyk na GraalVM
- vytvořte svůj vlastní nástroj, jež bude pracovat se všemi jazyky
- začleňte GraalVM do své aplikace
Pojďme budovat tuto revoluční technologii pro polyglotní svět společně!