Izvan Jave: Programski jezici na JVM-u

Ako postoji bilo koji jezik koji je poznata i provjerena količina za programere, to je Java. Poduzetnici, web programeri, programeri za mobilne uređaje i mnogi drugi osim toga, učinili su Javu sveprisutnom i pridonijeli masivnoj kulturi podrške oko Jave.

Štoviše, Java runtime ili Java Virtual Machine (JVM) postao je svoj vlastiti softverski ekosustav. Osim Jave, veliki broj drugih jezika iskoristio je Java Virtual Machine kako bi sami postali moćni i vrijedni alati za razvoj softvera.

Korištenje JVM-a kao runtime-a donosi sa sobom nekoliko prednosti. JVM je pročišćen tijekom više desetljeća i može postići visoke performanse ako se dobro koristi. Aplikacije napisane na različitim jezicima na JVM-u mogu dijeliti knjižnice i raditi na istim podatkovnim strukturama, dok programeri koriste prednosti različitih jezičnih značajki.

U nastavku ćemo predstaviti nekoliko najznačajnijih programskih jezika stvorenih za JVM. Od Kotlina i Scale do Jythona i JRubyja, ovi jezici nude jednostavnije i fleksibilnije načine nadopunjavanja Jave ili moćne alternative dizajnirane da je zamijene.

Kotlin

Stvorio ga je JetBrains 2010., a otvoren 2012., Kotlin je sažetiji i sigurniji od Jave. O Kotlinu možete misliti kao o "Javi, ali jednostavnijoj." Sintaksa je manje opširna od Java-e, a često se kompajlira brže od Java koda. Kotlin također dopušta funkcionalne stilove programiranja koji trenutno nisu dostupni na Javi te ima sigurnije i elegantnije načine za rukovanje null vrijednostima. Android programeri sve više biraju Kotlin umjesto Jave za razvoj aplikacija na toj platformi.

Budući planovi za Kotlin nadilaze JVM. Jedan projekt uključuje kompajliranje Kotlina u strojni kôd putem LLVM okvira.

Više o Kotlinu potražite u pregledu jezika Martina Hellera.

Scala

Poput Kotlina, Scala je stvorena kako bi programeri Java učinili produktivnijima. Scala kombinira funkcionalno i objektno orijentirano programiranje na istom jeziku, čineći funkcionalnu paradigmu dostupnom i korisnom za korisnike ekosustava Java. Osim toga, Scala sintaksa približava se Javi od funkcionalne alternativne Clojure, čija sintaksa poput Lispa može dezorijentirati neupućene. Kombinacija funkcionalne i objektno orijentirane paradigme velik je dio Scaline privlačnosti.

Trenutno je u izradi Scala Native, inačica Scale koja se izvodi izvan JVM-a na golom metalu, putem LLVM-a. Ali još je prerano za upotrebu u proizvodnji.

Clojure

Programer Rich Hickey želio je izgraditi funkcionalni jezik u obitelji Lisp za JVM, a stvorio je Clojure da ga ogrebe. Clojure je namijenjen olakšavanju pisanja istodobnih aplikacija visokih performansi, korisnih gdje god se Java izvodi, ali dopuštajući drugačiji skup programskih stilova nego što ih Java tradicionalno podržava. Jedna od uspješnih priča je Puppet Server, koji je migriran iz Ruby u Clojure.

Groovy

Izvorno ga je razvio Pivotal, ali sada pod nadzorom Apache Software Foundation, Groovy se snažno temelji na postojećem iskustvu s Javom, nudeći značajke nadahnute dinamičnim jezicima poput Pythona i Rubyja. Groovy je jedan od jezika koji izravno podržava popularni Jenkinsov poslužitelj za kontinuiranu integraciju, a s njim je izgrađen i jedan od ključnih mrežnih okvira, Grails.

Buduće verzije Groovyja prihvatit će značajke u novijim verzijama Jave i JVM-a, poput sintakse lambda Java 8.

Jython i JRuby

Jython i JRuby su implementacije Pythona, odnosno Rubyja za JVM. Jython je kompatibilan s Pythonovom 2.x granom. JRuby je kompatibilan s relativno nedavnim Ruby 2.3. Obje se dinamički kompajliraju u bajt kod Java i mogu slobodno surađivati ​​s drugim JVM jezicima, posebno s Javom.

Ostali JVM jezici

  • Cejlon : Ceylon, koji je razvio Red Hat, osmišljen je kako bi se pozabavio nekim Java problemima, poput njegove opširnosti i veza s nekim temeljnim mehanizmima u JVM-u. Cejlon se može kompajlirati za pokretanje na JVM, na Dart VM ili na Node.js.
  • Frege : Verzija funkcionalnog jezika Haskell za JVM. Frege kod kompilira se u Java klasu i općenito surađuje s Javom, ali može iskoristiti nepromjenjivost i funkcionalne paradigme u stilu Haskell.
  • Eta : Još jedna Haskell varijanta za JVM. Njegova istaknuta prednost je što može koristiti pakete iz Haskell-ovog spremišta paketa, Hackage, za maksimalnu kompatibilnost s Haskell-ovim ekosustavom.
  • Haxe : Haxe se kompilira u JVM kao jedno od mnogih mogućih ciljeva, uključujući mrežu, mobilne uređaje i goli metal. Njegova sintaksa podsjeća na Javu i može komunicirati s drugim Java knjižnicama ako je potrebno kada se kompilira za JVM.
  • Fantom : Jezik s implementacijama i za JVM i za .Net CLR, Fantom nudi API-je koji apstrahiraju razlike između obje platforme. Fantom se također može kompajlirati u JavaScript, a u teoriji se može rasporediti na bilo koji broj drugih ciljeva.