Dataprogrammeringsspråk utvikler seg, men viktigheten av såkalte legacy-språk som mange virksomhetskritiske applikasjoner er avhengige av er anerkjent, og modernisering av disse språkene er avgjørende. Java er et eksempel. Den som spurte om Java er død (det var og er fortsatt mange der ute som stiller dette spørsmålet) har ikke sett på lang levetid for COBOL. For det første handlet Java aldri om språket, men økosystemet rundt Java Virtual Machine (JVM), en språkplattform. Men innsatsen for å få Java til å prestere i cloud-native databehandling (CNC), inkludert serverløs og WebAssembly, gjenspeiler investeringen mange bedrifter har gjort i Java og ønsker å bruke den i de nyeste utviklingsmiljøene.
Språkkrav for Cloud-Native Computing
For å få mest mulig ut av CNC, bygger utviklere programvareapplikasjoner i mikrotjenestearkitektur og bruker serverløse tjenester, for eksempel funksjon som en tjeneste. Dette krever at applikasjoner lastes opp på superrask tid. En beholder kan snurres opp på millisekunder, en applikasjon kjøres, og deretter avsluttes beholderen. På en offentlig sky er det også kostnader knyttet til hvor lenge containere er i bruk. En funksjon som kjøres i serverløs modus belastes av minnet som brukes og varigheten, vanligvis avrundet til 1 millisekund, så raskt-løpende språk har en klar kostnadsfordel. Programmeringsspråk må lastes inn i millisekunder for å være CNC-kompatible.
Mikroprofil for å gjøre Java CNC-kompatibel
Den første rådsregelen er å bruke det eksisterende programmeringsspråket som dominerer, hvis mulig, forårsaker minst mulig endring og har ferdighetene tilgjengelig. For mange organisasjoner som har investert i Java, er spørsmålet om Java er CNC-klar. Tradisjonelle Java-kjøringer er uegnet for mikrotjenester. Hver forekomst må laste for mange megabyte, mens andre språk som Node.js og Go er langt mer strømlinjeformet og raskere å starte opp. Dette motiverte Java-samfunnet til å møte utfordringen med å modernisere Java. Flere høyteknologiske selskaper med eierandeler i Java, inkludert Fujitsu, IBM (inkludert Red Hat) og Oracle, dannet åpen kildekode MicroProfile-prosjektet i Eclipse Foundation, som, for å sitere sitt oppdrag, “er rettet mot å optimalisere Enterprise Java for mikrotjenester-arkitekturen.”
En av lærdommene man har lært av å jobbe med mikrotjenester er at når flere mikrotjenester kjører innenfor samme JVM, kan en grådig mikrotjeneste sulte andre på ressurser. Løsningen er å distribuere en enkelt mikrotjeneste per applikasjonsserver, noe som førte til spesialiserte Java-kjøringer som Liberty (IBM), Quarkus (Red Hat) og Spring Boot (VMware). For å unngå fragmentering i Java-samfunnet, da Java begynte å bli brukt for mikrotjenester, ble MicroProfile opprettet for å gi et felles sett med APIer for flere Java-rammeverk og kjøretider. Siden lanseringen i 2016 har prosjektet beveget seg raskt og har gitt ut flere spesifikasjoner og oppdateringer for å bevege seg i samme hastighet som CNC-industrien utvikler seg.
Behovet for å støtte Kubernetes er avgjørende i dagens CNC-miljøer, og kjøretider som Liberty, Quarkus og Spring Boot er designet for å være Kubernetes-native. Disse kjøretidene adresserer minneforbruket, rask oppstart og andre bekymringer som gjør at Java er et førsteklasses valg for mikrotjenester som kjører i Kubernetes-miljøer.
Søkelys på IBM Liberty, en Java Runtime MicroProfile-implementering
Liberty er ikke noe IBM har snakket mye om, men vi tror dette vil endre seg, og det er verdt å merke seg hva det tilbyr Java-fellesskapet. WebSphere Liberty ble opprettet i 2012, og er en moderne progresjon av WebSphere-applikasjonsserveren (WAS), og mye av den ble gitt over til Open Liberty, et åpen kildekode-prosjekt fra IBM som ble lansert i 2017. Mange monolittiske Java-applikasjoner for bedrifter, vanligvis kjører i virtuelle maskiner, fortsetter å bruke applikasjonsservere som WebLogic og WebSphere, og er i en holdestabil og vedlikeholdsmodus. Liberty er designet for Java-applikasjoner som moderniseres og for ferske CNC-prosjekter, og er en liten, lett kjerne som individuelle funksjoner kan legges til, slik at oppstartsbelastningen holdes på et minimum med akkurat nok til å støtte en applikasjon eller mikrotjeneste. Den tilbyr alle fordelene med en MicroProfile-implementering.
Open Liberty er en produksjonsklar åpen kildekode Java-runtime for CNC og støttes av WebSphere-lisenser. WebSphere Liberty er en kommersiell versjon av Open Liberty og legger til flere funksjoner for å hjelpe med å modernisere monolittiske Java-applikasjoner for bedrifter.
Omdia har sett IBMs benchmarks med Liberty som har den beste gjennomstrømningen på tvers av sin portefølje av Java-kjøretider, så vel som rivaler, og lavere minnekrav, noe som vil redusere driftskostnadene. I sitt veikart på kort sikt vil IBM lansere nye funksjoner i Open Liberty som vil demonstrere en “instant on”-funksjon, med superraske første responstider, noe som gjør den egnet for serverløse der det er vanlig å skalere containere ned til null og opp til hundrevis. . Liberty InstantOn bruker Linux Checkpoint/Restore in Userspace (CRIU), som tar prosessbilder og lar dem gjenopprettes umiddelbart i Kubernetes administrerte containere. Dette gjelder også for en full Java monolittisk applikasjon som kan startes på under en tredjedel av et sekund. Disse kommende funksjonene i Liberty vil være et løft for Java i CNC.
WebAssembly kjører Java
W3C-standarden WebAssembly (Wasm) er en voksende utviklingstilnærming som lar kode i nettleseren kjøre med nesten opprinnelig ytelse og støttes på alle større nettlesere. Språk som C/C++, C#/.Net, Rust, Python, og Go støttes for øyeblikket. Det pågår forsøk på å kjøre Java native i nettleseren ved hjelp av WebAssembly. Det er et åpen kildekode-prosjekt, JWebAssembly, en Java-bytekode til WebAssembly-kompilator.
Nettlesere er hvor mange sluttbrukere som samhandler med applikasjoner, og å tillate nettlesere å kjøre applikasjoner like raskt som native åpner nye muligheter for utviklere. Wasm er en ny og voksende teknologi, og når noe kjører i nettleseren, må det tas ytterligere sikkerhetshensyn. Når du husker at sikkerhetsproblemer plaget epoken med nettlesermotorer som Flash og Silverlight (JavaFX er fortsatt aktiv) og var en faktor i deres bortgang, er det viktig for Wasm-fellesskapet å utvikle teknologien med innebygd sikkerhet fra grunnen av.
Michael Azoff er Chief Analyst, Cloud and Data Center Practicepå Omdia.
Denne artikkelen gikk opprinnelig på Omdia, forskningsarmen til Informa.