Pracujete na projektu GraalVM. Graal ale není jen VM – co všechno pod tento projekt spadá a jakými způsoby ho lze používat?
Graal je opravdu velký projekt. Občas až tak velký, že je těžké na něco zásadního nezapomenout. Ale pojďme to zkusit:
Primární v GraalVM je překladač. Ten překládá Java bytecode do nativního kódu. A je v tom dobrý. Takže spousta programů napsaných v moderních jazycích a přeložených pro JVM běží na GraalVM rychleji.
Velmi oblíbenou částí GraalVM je takzvaná Native Image. Systém pro konverzi Java bytekódu do spustitelných souborů. Pokud byste chtěli svůj Java program používat na příkazové řádce, přeložte jej pomocí Native Image. Protože pak nastartuje dříve než řeknete švec.
GraalVM si hodně zakládá na podpoře různých jazyků a jejich vzájemné interoperabilitě. Zkombinujte JavaScript, Javu, Ruby, R do jednoho procesu a nechte je si vzájemně vyměňovat objekty. Vše bude hladce fungovat a navíc pekelně rychle.
Kromě dynamických jazyků umí GraalVM spustit i staticky přeložené jako je C, C++, Fortran, Rust, atd. GraalVM pak dokáže tyto jazyky běžet v bezpečném režimu a hlídat zdali nedělají nějaké moc velké divočiny.
Krásnou věcí je, že nástroje jako je debugger, profiler, atd. stačí pro GraalVM napsat jen jednou a ony fungují pro všechny jazyky.
A tohle je jen krátký seznám výhod, které GraalVM nabízí…
Jak jste se k téhle práci vlastně dostal?
Kdysi dávno jsem zakládal NetBeans a navrhoval NetBeans Platformu. Před dvaceti lety, v říjnu 1999, nás koupil Sun Microsystems. Byla to vůbec první akvizice velké americké počítačové firmy v regionu. Od té doby se věci dost vyvinuly: z NetBeans je projekt Apache NetBeans, ze Sunu je Oracle a já už primárně nepracuji na NetBeans, ale v OracleLabs na projektu GraalVM. Ale i za to vděčím NetBeans – napsal jsem totiž knihu o návrhu aplikačních rozhraní Practical API Design a díky ní mne přijali do OracleLabs.
Jaká je vaše role na projektu? Jak vypadá váš běžný pracovní den?
Role se mění, ale to, co mně baví nejvíc je vymyslet si něco bláznivého, něco, co všichni považují za nemožné. Pak chodím okolo a přesvědčuji ostatní, aby udělali něco tak a něco jinak. Aby si v rámci toho, co stejně dělají, vybrali tu vhodnější variantu. A pak se to všechno vezme, zamíchá a složí dohromady.
Tento postup se mi již mnohokrát osvědčil. Když to vyjde, tak z toho vznikne něco, v co málokdo věřil, ale o to větší radost z toho pak člověk má. Naposledy jsem se takhle pobavil s T-Tracem – no nekoupili byste si to?
Takže povídat si s kolegy je velkou částí mé práce. Ale i když uspěji a přesvědčím je, tak ono se to pak samo dohromady nesloží, takže ještě zbývá spousta programování, které je třeba dodělat.
GraalVM i OpenJDK (Java) jsou vydané pod svobodnou licencí GNU GPL. Jak se může člověk zapojit do vývoje? Jsou příspěvky zvenku vítané? Jak bych měl postupovat, když chci opravit nějakou chybu nebo implementovat novou funkčnost?
GraalVM se dodává ve dvou edicích. Zdrojové kódy k CE – komunitní verzi jsou dostupné pod různými otevřenými licencemi. Hlavní repozitoří je graal na GitHubu. To určuje způsob přispívání: forknout, nakódovat a udělat Pull Request. Více na stránce pro přispěvatele.
Pokud by měl kdokoli zájem o práci v naší pobočce v Praze či v Brně, tak není lepším doporučením než GraalVM zkusit použít a pokud něco nefunguje úplně ideálně, tak to opravit a vylepšit. Většina kódu je napsána v Javě a lze jej upravovat v libovolném editoru (i v NetBeans a těch druhých dvou vývojových prostředích). Není to moc těžké a řekl bych, že takový Pull Request je mnohem lepší než životopis vyšperkovaný nekonečným seznamem zkratek všech populárních technologií.
Díky za rozhovor.