Programmering

Beyond Java: Programmeringssprog på JVM

Hvis der er noget sprog, der er en kendt og dokumenteret mængde for udviklere, er det Java. Virksomhedsudviklere, webudviklere, mobile udviklere og mange andre derudover har gjort Java allestedsnærværende og bidraget til den massive støttekultur omkring Java.

Hvad mere er, Java-runtime eller Java Virtual Machine (JVM) er blevet et helt eget softwareøkosystem. Ud over Java har mange andre sprog brugt Java Virtual Machine til at blive kraftfulde og værdifulde softwareudviklingsværktøjer i sig selv.

Brug af JVM som en runtime medfører flere fordele. JVM er blevet raffineret i flere årtier og kan give høj ydeevne, når den bruges godt. Applikationer skrevet på forskellige sprog på JVM kan dele biblioteker og fungere på de samme datastrukturer, mens programmerere udnytter forskellige sprogfunktioner.

Nedenfor profilerer vi flere af de mest betydningsfulde programmeringssprog oprettet til JVM. Fra Kotlin og Scala til Jython og JRuby tilbyder disse sprog enklere og fleksible måder at supplere Java eller kraftfulde alternativer designet til at erstatte det.

Kotlin

Oprettet af JetBrains i 2010 og open source i 2012, er Kotlin både mere kortfattet og sikrere end Java. Du kan tænke på Kotlin som "Java, men enklere." Dens syntaks er mindre detaljeret end Java, og det kompilerer ofte hurtigere end Java-kode. Kotlin tillader også funktionelle programmeringsstile, der ikke findes i Java i øjeblikket, og har sikrere og mere elegante måder at håndtere nullværdier på. Android-udviklere vælger i stigende grad Kotlin frem for Java til appudvikling på denne platform.

Fremtidige planer for Kotlin går ud over JVM. Et projekt involverer kompilering af Kotlin til maskinindfødt kode ved hjælp af LLVM-rammen.

For mere om Kotlin, se Martin Hellers oversigt over sproget.

Scala

Ligesom Kotlin blev Scala oprettet for at gøre Java-udviklere mere produktive. Scala kombinerer funktionel og objektorienteret programmering på samme sprog, hvilket gør det funktionelle paradigme tilgængeligt og nyttigt for Java-økosystembrugere. Plus, Scala syntaks hugger tættere på Java end funktionelt alternativ Clojure, hvis Lisp-lignende syntaks kan være desorienterende for de uindviede. Blandingen af ​​funktionelle og objektorienterede paradigmer er en stor del af Scalas appel.

I øjeblikket er værkerne Scala Native, en variant af Scala, der løber uden for JVM på bare metal ved hjælp af LLVM. Men det er stadig for tidligt at blive brugt til produktion.

Clojure

Udvikler Rich Hickey ønskede at opbygge et funktionelt sprog i Lisp-familien til JVM, og han skabte Clojure for at ridse den kløe. Clojure er beregnet til at gøre det let at skrive samtidige, højtydende applikationer, nyttige hvor Java kører, men tillader et andet sæt programmeringsstile, end Java traditionelt understøtter. En succeshistorie af note er Puppet Server, som blev migreret fra Ruby til Clojure.

Groovy

Oprindeligt udviklet af Pivotal, men nu under forvaltning af Apache Software Foundation, bygger Groovy stærkt på eksisterende erfaring med Java og tilbyder funktioner inspireret af dynamiske sprog som Python og Ruby. Groovy er et af de sprog, der understøttes direkte af den populære Jenkins kontinuerlige integrationsserver, og en vigtig webramme, Grails, er bygget med den.

Fremtidige versioner af Groovy vil omfatte funktioner i nyere versioner af Java og JVM, som Java 8 lambda-syntaks.

Jython og JRuby

Jython og JRuby er implementeringer af henholdsvis Python og Ruby til JVM. Jython er kompatibel med Pythons 2.x-gren. JRuby er kompatibel med den relativt nylige Ruby 2.3. Begge kompileres dynamisk til Java bytecode og kan interoperere frit med andre JVM-sprog, især Java.

Andre JVM-sprog

  • Ceylon: Udviklet af Red Hat, blev Ceylon udtænkt til at adressere nogle af Java's problemer, ligesom dens bredhed og dens bånd til nogle af de underliggende mekanismer i JVM. Ceylon kan kompileres til at køre på JVM, på Dart VM eller på Node.js.
  • Frege: En version af det funktionelle sprog Haskell til JVM. Frege-kode kompileres til en Java-klasse og fungerer generelt sammen med Java, men kan udnytte Haskell-stilens uforanderlighed og funktionelle paradigmer.
  • Eta: En anden Haskell-variant til JVM. Dens udråbte fordel er, at den kan bruge pakker fra Haskells pakkeopbevaring, Hackage, for maksimal kompatibilitet med Haskell-økosystemet.
  • Haxe: Haxe kompilerer til JVM som et af mange mulige mål, herunder internettet, mobile enheder og bare metal. Dens syntaks minder om Java, og det kan fungere sammen med andre Java-biblioteker, hvis det er nødvendigt, når det kompileres til JVM.
  • Fantom: Et sprog med implementeringer til både JVM og .Net CLR, Fantom leverer API'er, der abstraherer forskellene mellem begge platforme. Fantom kan også kompileres til JavaScript, og i teorien kan det distribueres til et vilkårligt antal andre mål.