“Debatten” om JVM’ens relevans i den moderne utviklingsverdenen kan sammenlignes med et klassisk zombiedrama: Er JVMen virkelig død, eller har den bare gått over til en tilstand av vandød? Her er noen tanker om saken.

Public cloud: JVMens kryptonitt?#

Med public cloud har vi beveget oss inn i en tid der hurtighet og lettvektsløsninger dominerer. Kontaineroppstart på sekunder, skalerbare mikrotjenester, og serverless-filosofien etterlater liten plass for mastodonter.

Så, hvorfor dra med seg et enormt runtime med altfor lange oppstartstider og høyt ressursforbruk, når man kan spinne opp en Go- eller Rust-binær på millisekunder?

Livstegn?#

JVMen nekter å gi opp og forsøker å holde seg relevant med nyvinninger som Quarkus og GraalVM. Disse verktøyene har gjort det mulig å bygge tjenester med raskere oppstartstid og redusert ressursforbruk.

Disse løsningen har sin pris: lengre byggetider, økt ressursforbruk i utviklingsfasen, og ikke minst kompatibilitetsutfordringer. “Native image”-kompilering kan føre til problemer med tredjepartsbiblioteker som ikke fullt ut støttes. Noe som krever ekstra arbeid fra utviklere for å få alt til å fungere.

Kombinasjonen av disse ulempene gjør det vanskelig for JVMen å konkurrere fullt ut med lettvektsalternativer som Go og Rust.

Det litt ironiske#

Det er kanskje mulig å påstå at public cloud har blitt som en distribuert JVM — en samling av abstrakte “beans” som opererer uavhengig, tilpasset behovet for rask levering og elastisitet. Satt noe på spissen, men du skjønner tegninga.

På JVMen ble applikasjonsservere laget for å kjøre komplekse, sammensatte prosesser, har skyen brutt dette ned i små, distribuerte enheter. Hva er en Pod annet enn en virtuell beholder for kjørbare “classes”? Likevel er forskjellen i skala og fleksibilitet åpenbar: der JVM strever med rask elastisitet, skinner de kompilerte språkene.

Den “ubehagelige” sannheten#

Joda, det er fullt mulig å bruke JVM-baserte løsninger i skyen — og noen ganger er det helt ok. Kanskje du har en stor og kompleks legacy-applikasjon? Du trenger kanskje tilgangen til det massive økosystemet av biblioteker? Du er ikke avhengig av oppstartstid eller dynamisk skalering? Men spørsmålet gjenstår: Hvor lenge kan vi holde på slik?

De fleste moderne systemer har krav om rask oppstart, lavt ressursforbruk og fleksibilitet. Selv med nyvinninger som Quarkus og GraalVM, er alternativene som Go eller Rust stadig mer attraktive.

Konklusjon#

Er JVMen død, eller holder vi den kunstig i live fordi vi ikke tør å bryte ut av gamle vaner?

I en verden hvor du stadig oftere betaler for “compute” per sekund er det på tide å killall -9 java.