Derfor bør du glede deg til Java 9
Versjon 8 er fortsatt fersk, men allerede vet vi mye om hva neste versjon av jordas mest uskjelte språk vil ha å by på.
Programvareutviklingsmiljøet Java er – avhengig av hvem du spør – det mest eller nest mest utbredte programmeringsspråket i verden. Estimatene for hvor mange Java-utviklere det finnes i verden varierer noe – Oracle mener antallet er ni millioner, andre anslag er noe lavere. Antallet brukere av Java løper opp i milliarder, det finnes for eksempel over tre milliarder smartmobiler som støtter Java i verden, og de aller fleste av verdens nettlesere støtter også denne programvaren.
Samtidig er Java antakelig det aller mest utskjelte programvaresystemet på jordas overflate, der særlig sikkerhetsaspektene ved Java-basert programvare har fått mye og berettiget kritikk. Nå skal det legges til at den enorme utbredelsen i seg selv vil avstedkomme tilsvarende mengder med kritikk, men det er hevet over tvil at Java-plattformen trenger videreutvikling for å holde tritt med bruksområdene.
Dette tar heldigvis Oracle på alvor, og utviklingstoget for neste generasjon av produktet er godt i gang.
Java 9 i tidlig 2016
Den nyeste stabile versjonen av programvareutviklingsmiljøet Java, Java Standard Edition (SE) 8, ble offisielt lansert den 18. mars i år, og den nyeste oppdateringen av miljøet kom 19 august, i form av Java SE 8 Update 20.
Samtidig har arbeidet med neste generasjon, Java 9, for lengst kommet ut av startblokkene. Utviklingssettet for Java, Java Development Kit (JDK), er allerede under definisjon, og for ikke lenge siden ble flere nye JEP-er (JDK Enhancement Proposal) oppdatert og publisert.
I disse dokumentene finner vi informasjon om hvordan Java-plattformen kommer til å utvikle seg fram til neste hovedlansering. Det blir Java SE 9, og i skrivende stund er målsetningen at lanseringen av denne versjonen blir i tidlig 2016. Her er noen av godbitene som er i vente i neste versjon av Java:
Modularitet og Jigsaw
Den viktigste og mest kjente funksjonaliteten i neste versjon, er at Java skal bli modulær, i det som er omtalt som «Project Jigsaw». Dette var opprinnelig planlagt inn i dagens versjon, men ble utsatt til Java 9 i fjor sommer.
Prosjektet går ut på å designe og implementere et standard modulsystem for Java SE, for deretter implementere både selve plattformen og utviklingssettet med denne teknologien.
Hovedmålet er å lage implementasjoner av plattformen som skalerer ned til små, mobile enheter. I tillegg skal modulariteten bidra til forbedret sikkerhet og enklere vedlikehold, forbedre ytelsen til applikasjoner og gi utviklerne bedre verktøy for programmeringen.
Med denne grunnleggende endringen av arkitekturen vil Java dermed bli langt mer skalerbar, særlig nedover, slik at det blir mulig å kjøre Java på mindre og enklere enheter enn før.
Nye API-er
Dokumentasjonen viser at det kommer minst to nye API-er: Process API og Lightweight JSON API. JSON API er et grensesnitt for å opprette og hente dokumenter og andre datastrømmer ved hjelp av JSON - JavaScript Object Notation dataformat. Dette formatet er et alternativ til XML, og har blitt mer og mer utbredt for webtjenester i moderne tid. Ifølge JEP-en er tanken at dette skal tilby de mest utbredte og etterspurte funksjonene, og utnytte Java 8- og 9-språket, i tillegg til funksjonene som ligger i standardbibliotekene.
Process API er ment å forbedre måten Java kan kommunisere med andre prosesser i operativsystemet. Dagens løsning tvinger ofte utviklerne til å skrive operativsystem-spesifikk kode for å utføre det de ønsker, og det skal altså denne nye API-en adressere.
Den nye API-en må naturligvis ta forskjellene mellom operativsystemer med i betraktning, særlig under Windows. Den er først og fremst rettet mot å støtte bruk på små enheter med forskjellige prosessmodeller i operativsystemet, i tillegg til å understøtte miljøer der flere virtuelle Java-maskiner kjører i den samme operativsystem-instansen.
Andre nyheter
Dokumentene viser også flere andre, mindre forbedringer av Java. En JEP beskriver forbedringer i håndteringen av låste objektmonitorer («contended Java object monitors»). Dette skal både forbedre virkelige applikasjoner i praktisk bruk, i tillegg til å gjøre at Java yter bedre i benchmark/testverktøy som DaCapo og Volcano.
En annen JEP fokuserer på å dele opp hurtiglageret for kode i flere segmenter. Hvert av disse segmentene vil inneholde kompilert kode av en spesiell type, og dette vil forbedre ytelsen og tillate kodetillegg («extentions»).
Til sist registrerer vi at det finnes et prosjekt som skal forbedre Java-kompilatoren javac. Den skal bli standardkompilator når JDK bygger applikasjoner, og den skal derfor bli så generell at den skal kunne brukes til andre programvareprosjekter enn JDK selv.
I JEP-en kan man lese at dagens implementasjon har vist seg å være brukbar, med god hastighet og tillater inkrementell kompilering og linking. Kvaliteten på koden og verktøyets stabilitet er imidlertid ikke like tilfredsstillende, og dette må forbedres før den kan slippes åpent ut.