Programování

Beyond Java: Programming languages ​​on the JVM

Pokud existuje nějaký jazyk, který je pro vývojáře známým a osvědčeným množstvím, pak je to Java. Podnikoví vývojáři, weboví vývojáři, mobilní vývojáři a spousta dalších kromě toho učinili Java všudypřítomnou a přispěli k masivní kultuře podpory kolem Javy.

Navíc se runtime Java neboli Java Virtual Machine (JVM) stal vlastním softwarovým ekosystémem. Kromě Javy využilo mnoho dalších jazyků prostředí Java Virtual Machine k tomu, aby se staly výkonnými a hodnotnými nástroji pro vývoj softwaru samy o sobě.

Používání JVM jako modulu runtime přináší několik výhod. JVM byl během několika desetiletí zdokonalován a při dobrém použití může přinést vysoký výkon. Aplikace napsané v různých jazycích na JVM mohou sdílet knihovny a pracovat na stejných datových strukturách, zatímco programátoři využívají výhod různých jazykových funkcí.

Níže uvádíme několik nejvýznamnějších programovacích jazyků vytvořených pro JVM. Od Kotlin a Scala po Jython a JRuby, tyto jazyky nabízejí jednodušší a pružnější způsoby, jak doplnit Javu, nebo výkonné alternativy, které ji mají nahradit.

Kotlin

Vytvořený společností JetBrains v roce 2010 a otevřeným zdrojem v roce 2012, je Kotlin stručnější a bezpečnější než Java. Kotlina si můžete představit jako „Javu, ale jednodušší.“ Jeho syntaxe je méně podrobná než v jazyce Java a často se kompiluje rychleji než kód v jazyce Java. Kotlin také umožňuje funkční styly programování, které v současné době nejsou k dispozici v Javě, a má bezpečnější a elegantnější způsoby zpracování nulových hodnot. Vývojáři Androidu si pro vývoj aplikací na této platformě stále častěji vybírají Kotlin přes Javu.

Budoucí plány pro Kotlina jdou nad rámec JVM. Jeden projekt zahrnuje kompilaci Kotlin do strojově nativního kódu prostřednictvím rámce LLVM.

Další informace o Kotlinovi najdete v přehledu jazyka Martina Hellera.

Scala

Stejně jako Kotlin, i Scala byla vytvořena proto, aby vývojáři Java byli produktivnější. Scala kombinuje funkční a objektově orientované programování ve stejném jazyce, čímž je funkční paradigma přístupné a užitečné pro uživatele ekosystému Java. Syntaxe Scala je navíc blíže k Javě než funkční alternativa Clojure, jejíž Lispova syntaxe může být pro nezasvěcené dezorientující. Kombinace funkčních a objektově orientovaných paradigmat je velkou součástí přitažlivosti Scaly.

Aktuálně je v pracích Scala Native, varianta Scaly, která běží mimo JVM na holém kovu, prostřednictvím LLVM. Na výrobu je ale ještě příliš brzy.

Clojure

Vývojář Rich Hickey chtěl pro JVM vybudovat funkční jazyk v rodině Lispů a vytvořil Clojure, aby to svědění poškrábal. Clojure má usnadnit psaní souběžných a vysoce výkonných aplikací, které jsou užitečné všude tam, kde běží Java, ale umožňují jinou sadu programovacích stylů, než Java tradičně podporuje. Jedním z příkladů úspěchu je Puppet Server, který byl migrován z Ruby do Clojure.

Báječný

Původně vyvinutý společností Pivotal, ale nyní pod správou Apache Software Foundation, Groovy silně staví na existujících zkušenostech s Javou a nabízí funkce inspirované dynamickými jazyky, jako jsou Python a Ruby. Groovy je jedním z jazyků přímo podporovaných populárním serverem pro kontinuální integraci Jenkins a je s ním vytvořen jeden klíčový webový rámec, Grails.

Budoucí verze Groovy budou zahrnovat funkce v novějších verzích Java a JVM, jako je syntaxe Java 8 lambda.

Jython a JRuby

Jython a JRuby jsou implementace Pythonu a Ruby pro JVM. Jython je kompatibilní s Pythonovou větví 2.x. JRuby je kompatibilní s relativně nedávným Ruby 2.3. Oba se dynamicky kompilují do bajtového kódu Java a mohou volně spolupracovat s jinými jazyky JVM, zejména s Javou.

Jiné jazyky JVM

  • Cejlon: Ceylon byl vyvinut společností Red Hat a byl navržen tak, aby řešil některé problémy Java, jako je jeho výřečnost a vazby na některé základní mechanismy v JVM. Ceylon lze zkompilovat tak, aby běžel na JVM, na Dart VM nebo na Node.js.
  • Frege: Verze funkčního jazyka Haskell pro JVM. Frege kód se kompiluje do třídy Java a spolupracuje s Javou obecně, ale může využít nezměnitelnosti ve stylu Haskell a funkčních paradigmat.
  • Eta: Další varianta Haskell pro JVM. Jeho oblíbenou výhodou je, že pro maximální kompatibilitu s ekosystémem Haskell může používat balíčky z úložiště balíků Haskell, Hackage.
  • Haxe: Haxe se kompiluje do JVM jako jeden z mnoha možných cílů, včetně webu, mobilních zařízení a holého kovu. Jeho syntaxe připomíná Javu a při kompilaci pro JVM může v případě potřeby spolupracovat s jinými knihovnami Java.
  • Fantom: Jazyk s implementacemi pro JVM i .Net CLR, Fantom poskytuje rozhraní API, která odstraňují rozdíly mezi oběma platformami. Fantom lze také zkompilovat do JavaScriptu a teoreticky jej lze nasadit na libovolný počet dalších cílů.