UTVIKLING

Avduket virtuell maskin som mestrer mange ulike programmeringsspråk

Oracles nye GraalVM kan utvides med støtte for enda flere språk og integrasjon i ulike programvareplattformer.
Oracles nye GraalVM kan utvides med støtte for enda flere språk og integrasjon i ulike programvareplattformer. Illustrasjon: Oracle
Harald BrombachHarald BrombachNyhetsleder
19. apr. 2018 - 20:00

Mange av dagens mest brukte programmeringsspråk, inkludert Java, C# og Python, kompileres ikke direkte til maskinkode, men til en form for mellomliggende kode som kjøres i en virtuell maskin. Dette betyr at programvaren kan kjøres på tvers av ulike underliggende systemer. 

Men de fleste av de virtuelle maskinene som er tilgjengelige, er optimalisert bare for ett eller noen få programmeringsspråk. Dette kan gjøre det vanskeligere og mer ressurskrevende å utvikle og kjøre applikasjoner som er basert på kode skrevet i flere ulike programmeringsspråk.

Det er sjelden at ett og samme programmeringsspråk er det beste valget til alle ulike oppgaver. Derfor foretrekker mange utviklere å kunne velge mellom ulike språk, på samme måte som at en snekker ikke bruker hammeren til alt.

GraalVM

Denne uken avduket Oracle offisielt en ny, virtuell maskin (VM) som Oracle Labs har jobbet med i flere år. Den kalles for GraalVM og omtales som en universell VM som skal kunne tilby høy ytelse for alle programmeringsspråk og legge til rette for kommunikasjon mellom språkene.

Dette skal gjøre det mulig å kjøre for eksempel Ruby i konteksten til Java-applikasjoner.

Som en del av arkitekturen tilbys også felles, språkagnostiske utviklerverktøy som skal gjøre vedlikehold og integrasjon enklere. 

Språk og integrasjon

En rekke ulike språk støttes allerede. Dette inkluderer JVM-baserte språk som Java, Scala, Groovy og Kotlin, JavaScript (inkludert som erstatter for V8 i Node.js) og LLVM-bitkode fra programmer programmert i C, C++ eller Rust. I tillegg tilbys eksperimentell støtte for Ruby, R og Python.

GraalVM tilbyr programmeringsgrensesnitt som gjør det mulig for tredjeparter å utvide utvalget av språk som støttes, samt å integrere GraalVM-støtte i andre utviklerverktøy. 

Per i dag kan GraalVM kjøres separat, men også som en integrert del av OpenJDK eller Node.js. Ja, det skal til og med være mulig å integrere VM-en i databasesystemer som MySQL og Oracle RDBMS.

Lover bedre ytelse

Vanligvis er det slik at løsninger som skal gjøre mange til lags, må inngå betydelig kompromisser. Ikke minst gjelder dette ytelsen. Men Oracle lover at GraalVM ikke bare skal gi fullgod ytelse som separate VM-er i mange tilfeller.

I en del tilfeller skal ytelsen til og med være betydelig høyere med GraalVM enn med JVM. Dette gjelder ikke minst ved kjøring av JVM-baserte språk som Scala, noe som allerede har fått Twitter til å ta i bruk GraalVM i forbindelse med en håndfull av selskapets Scala-baserte mikrotjenester.

Twitter-utvikleren Christian Thalinger forteller om dette i videoen nedenfor.

GraalVM støtter også ahead-of-time-kompilering (AOT) av eksisterende JVM-applikasjoner. Dette oppretter systemspesifikke binærfiler med maskinkode som kan kjøres umiddelbart, uten den vanlige oppstartskostnaden.

To versjoner

GraalVM 1.0 kommer i to utgaver, Community Edition (CE) og Enterprise Edition (EE).

Artikkelen fortsetter etter annonsen
annonse
Innovasjon Norge
Store muligheter for norsk design i USA
Store muligheter for norsk design i USA

CE-utgaven er fritt tilgjengelig som åpen kildekode, det meste med vanlig GPL 2-lisens. EE-utgaven kan lastes ned gratis for testing og annen ikke-produksjonsbruk. 

De viktigste forskjellene på de to utgavene, i tillegg til prisen, er at EE-utgaven har bedre ytelse, bruker mindre minne, kan kjøre systemspesifikk kode i en sikkerhetssandkasse og også er tilgjengelig for MacOS. 

Oracle skal i tillegg tilby kommersiell brukerstøtte til EE-utgaven.

Begge utgavene er tilgjengelige for Linux og kan lastes ned via denne siden.

Leste du denne? Java SE 10 er her allerede

 
Del
Kommentarer:
Du kan kommentere under fullt navn eller med kallenavn. Bruk BankID for automatisk oppretting av brukerkonto.