Programmering

Utover Java: Programmeringsspråk på JVM

Hvis det er noe språk som er en kjent og påvist mengde for utviklere, er det Java. Bedriftsutviklere, webutviklere, mobilutviklere og mange andre i tillegg har gjort Java allestedsnærværende og bidratt til den enorme kulturen med støtte rundt Java.

I tillegg har Java runtime, eller Java Virtual Machine (JVM), blitt et eget programvareøkosystem. I tillegg til Java har mange andre språk utnyttet Java Virtual Machine til å bli kraftige og verdifulle programvareutviklingsverktøy i seg selv.

Å bruke JVM som kjøretid medfører flere fordeler. JVM har blitt raffinert over flere tiår, og kan gi høy ytelse når den brukes godt. Programmer skrevet på forskjellige språk på JVM kan dele biblioteker og operere på samme datastrukturer, mens programmerere benytter seg av forskjellige språkfunksjoner.

Nedenfor profilerer vi flere av de mest betydningsfulle programmeringsspråkene som er opprettet for JVM. Fra Kotlin og Scala til Jython og JRuby tilbyr disse språkene enklere og fleksible måter å utfylle Java på, eller kraftige alternativer designet for å erstatte det.

Kotlin

Kotlin ble opprettet av JetBrains i 2010 og åpent i 2012, og er både mer konsist og tryggere enn Java. Du kan tenke på Kotlin som “Java, men enklere.” Syntaksen er mindre omfattende enn Java, og den kompilerer ofte raskere enn Java-kode. Kotlin tillater også funksjonelle programmeringsstiler som for øyeblikket ikke er tilgjengelige i Java, og har tryggere og mer elegante måter å håndtere nullverdier på. Android-utviklere velger i økende grad Kotlin fremfor Java for apputvikling på den plattformen.

Fremtidige planer for Kotlin går utover JVM. Ett prosjekt innebærer å kompilere Kotlin til maskininnfødt kode ved hjelp av LLVM-rammeverket.

For mer om Kotlin, se Martin Hellers oversikt over språket.

Scala

I likhet med Kotlin ble Scala opprettet for å gjøre Java-utviklere mer produktive. Scala kombinerer funksjonell og objektorientert programmering på samme språk, noe som gjør det funksjonelle paradigmet tilgjengelig og nyttig for Java-økosystembrukere. I tillegg hugger Scala-syntaksen nærmere Java enn funksjonell alternativ Clojure, hvis Lisp-lignende syntaks kan være desorienterende for de uinnvidde. Blandingen av funksjonelle og objektorienterte paradigmer er en stor del av Scalas appell.

For tiden er i verk Scala Native, en variant av Scala som går utenfor JVM på bart metall, ved hjelp av LLVM. Men det er fortsatt for tidlig å bli brukt til produksjon.

Clojure

Utvikler Rich Hickey ønsket å bygge et funksjonelt språk i Lisp-familien for JVM, og han opprettet Clojure for å klø den kløen. Clojure er ment å gjøre det enkelt å skrive samtidige applikasjoner med høy ytelse, nyttige hvor som helst Java kjører, men tillater et annet sett med programmeringsstiler enn Java tradisjonelt støtter. En suksesshistorie som er kjent er Puppet Server, som ble migrert fra Ruby til Clojure.

Groovy

Opprinnelig utviklet av Pivotal, men nå under forvaltning av Apache Software Foundation, bygger Groovy sterkt på eksisterende erfaring med Java og tilbyr funksjoner inspirert av dynamiske språk som Python og Ruby. Groovy er et av språkene som direkte støttes av den populære Jenkins kontinuerlige integreringsserveren, og en viktig nettramme, Grails, er bygget med den.

Fremtidige versjoner av Groovy vil omfatte funksjoner i nyere versjoner av Java og JVM, som Java 8 lambda-syntaks.

Jython og JRuby

Jython og JRuby er implementeringer av henholdsvis Python og Ruby for JVM. Jython er kompatibel med Pythons 2.x-gren. JRuby er kompatibel med den relativt ferske Ruby 2.3. Begge kompileres dynamisk til Java bytecode og kan fritt samarbeide med andre JVM-språk, spesielt Java.

Andre JVM-språk

  • Ceylon: Utviklet av Red Hat, ble Ceylon utviklet for å ta opp noen av Java-spørsmålene, som dens ordlighetsgrad og dens bånd til noen av de underliggende mekanismene i JVM. Ceylon kan kompileres for å kjøre på JVM, på Dart VM eller på Node.js.
  • Frege: En versjon av funksjonsspråket Haskell for JVM. Frege-kode kompileres til en Java-klasse og fungerer generelt sammen med Java, men kan dra nytte av Haskell-stilens uforanderlighet og funksjonelle paradigmer.
  • Eta: En annen Haskell-variant for JVM. Den spionerte fordelen er at den kan bruke pakker fra Haskells pakkeforråd, Hackage, for maksimal kompatibilitet med Haskell-økosystemet.
  • Haxe: Haxe kompilerer til JVM som et av mange mulige mål, inkludert internett, mobile enheter og bart metall. Syntaksen minner om Java, og den kan samarbeide med andre Java-biblioteker om nødvendig når den kompileres for JVM.
  • Fantom: Et språk med implementeringer for både JVM og .Net CLR, Fantom tilbyr API-er som abstrakte bort forskjellene mellom begge plattformene. Fantom kan også samles til JavaScript, og i teorien kan det distribueres til et hvilket som helst antall andre mål.
$config[zx-auto] not found$config[zx-overlay] not found