Java gaat naar de volgende versnelling

Java 9 is in september vorig jaar uitgekomen en is inmiddels weer afgeschreven. Formeel gezien dan. Code die is geschreven in de negende versie van de programmeertaal annex platformonafhankelijk platform zal ongetwijfeld nog jaren blijven draaien. Net zoals code in oudere Java-versies. Toch is Java 9 EOL (end-of-life) en opgevolgd door Java 10, dat zelf later dit jaar wordt opgevolgd door Java 11.

De versnelling is ingezet, nadat Java de afgelopen jaren aan stagnatie leek te lijden. De komst van Java 9 is een langverwachte release, die meermaals is uitgesteld. Java-eigenaar Oracle heeft in 2011 al geplande features belicht voor de negende release, die toen op stapel stond om in 2016 uit te komen. Begin 2016 is dat uitgesteld naar maart 2017, waarna het is opgeschort naar juli en vervolgens september vorig jaar.

Een flink uitgelopen ontwikkeltraject, dat uiteindelijk een significante release oplevert die echter van korte (levens)duur is. In grote lijnen valt er een parallel te zien met bekende, dan wel beruchte, Microsoft-ontwikkeldebakels. Zie maar Windows Vista, dat onder de projectnaam Longhorn vele jaren in ontwikkeling is geweest.

Eigenlijk was dat fors uitgelopen en gaandeweg enigszins gesaneerde ontwikkeltraject een herhalingsoefening voor Microsoft. Begin jaren negentig werkte de Windows-maker aan het veel ambitieuzere Project Cairo. Dit moest een next-gen Windows opleveren, met onder meer distributed computing en een database-gebaseerd bestandssysteem. Cairo is uiteindelijk nooit gerealiseerd, maar delen ervan zijn later in Windows geïmplementeerd.

Vista heeft uiteindelijk de markt wel bereikt, maar is nooit groot aangeslagen. Belangrijker echter is dat die impopulaire Windows-versie flinke veranderingen heeft gebracht en daarmee een nieuw Windows-fundament heeft gelegd. Het daarna vlot ontwikkelde – en wel breed omarmde – Windows 7 bouwt voort op de vernieuwingen in Vista. Daarna is Microsoft een releaseversnelling begonnen die met Windows 10 een halfjaarlijks releasetempo heeft bereikt.

Niet meer jaren wachten

Oracle is nu met Java hetzelfde aan het doen. Nieuwe functies en gevraagde features kunnen vaker en vooral vlotter naar de markt komen. Java 9 is in september vorig jaar geboren en volgens plan in maart dit jaar weer gepensioneerd. Toen is het namelijk afgelost door Java 10, dat ook zes maanden ‘te leven’ heeft. Jawel, Java 11 is al in zicht.

En dat terwijl Java 9 zo’n tweeënhalf jaar na Java 8 is verschenen, dat zelf net geen drie jaar na Java 7 is uitgekomen. “Java 8 heeft inderdaad heel lang geduurd, en veel [functionaliteit – red.] daarvan is doorgeschoven”, weet Java-developer en NLJUG-bestuursvoorzitter Bert Jan Schrijver.

Een significant voorbeeld van een doorgeschoven feature, is de modulaire opbouw van Java 9. Dit was onder de codenaam Jigsaw ooit gepland voor Java 7 en toen voor 8. Het doorschuiven van Jigsaw is dus neergekomen op zo’n zes jaar wachten.

Verfijning en vernieuwing

De nu lopende releaseversnelling maakt hier een eind aan. Schrijver legt uit dat het nieuwe ‘release cadence’ een stabielere release-trein oplevert. Een feature die nog niet helemaal af is, of die mogelijk complicaties met zich meebrengt, kan namelijk simpelweg worden opgeschort. Naar de volgende release, die slechts zes maanden later volgt.

Uitstel is dus geen grote vertraging en dit kan verfijning ten goede komen. Ontwikkelaars van het Java-platform kunnen zich nu meer op hun codekwaliteit richten. “Het moet gewoon goed zijn”, geeft Schrijver aan als developersmantra.

Andersom geldt ook een voordeel: zodra een feature rijp is, kan het vlot worden uitgebracht. “Als het klaar is, gaat het mee.” Wachten op het volgende releasemoment in een lange ontwikkelcyclus brengt het risico van featureveroudering met zich mee, of achter de markt (en concurrentie) aan lopen.

‘Wat is het doel van je applicatie?’

Het hogere tempo waarin Java-releases uitkomen, heeft wel gevolgen voor developers. “Ontwikkelaars moeten vaker aan de bak”, stipt Schrijver aan. Dit betekent echter niet een geforceerde mars in een hamsterlooprad; meegaan met elke nieuwe release is zeker niet verplicht. Wel is er sprake van een sneller tempo, maar dit is volgens Schrijver een kwestie van gewenning.

Het belangrijkste is volgens hem dat developers bepalen waarvoor ze Java-code gaan maken. Op basis daarvan valt dan een versie te kiezen die de gewenste mogelijkheden bieden. “Wat is het doel van je applicatie?”, houdt hij medeontwikkelaars voor. “Hoe maak je goed werkende software?”, moet de drijfveer voor developers zijn. Zelf had hij bij de release van Java 10 nog niets gedaan met die versie, maar wel met voorganger 9.

Moeten developers zich nu richten op Java 10, of gelijk door naar 11? En moeten zij hun Java 8-code upgraden, en naar welke versie? De antwoorden hierop, vertelt Schrijver, zijn geheel afhankelijk van de individuele situatie van iedere developer. “Wat zijn de prioriteiten in je project?” En daaruit voortvloeiend: wat levert de keuze voor een bepaalde versie dan op voor dat project?

De migratie van Java 8 naar 9 kan wel wat werk zijn, vanwege de modulariteit, oordeelt Schrijver. “Maar dat is puur het migratiewerk. Dan volgt nog het testen, onder andere voor de garbage collection.” Toch valt ook die inspanning wel mee. Over het algemeen dan; er zijn altijd uitzonderingsscenario’s. “Als je diep gaat, in bijvoorbeeld bytecode of eigen JVM’s, dan kun je flink wat werk hebben.” Dit zijn echter nichegevallen.

Sneller én stabiel

Java 11 komt in september dit jaar uit en belooft meer dan alleen wat kleine verbeteringen te brengen. Onder de geplande nieuwe features (zogeheten JDK Enhancement Proposals, JEP’s) bevinden zich veelbelovende dingen, zoals een simpelere syntax die het schrijven van Java-code vereenvoudigt. Daarnaast staat een nieuwe garbage-collector met lage overhead gepland, die dus vriendelijker is voor geheugengebruik.

Belangrijker nog dan bovengenoemde (en andere) JEP’s is het feit dat Java 11 de volgende long-term support (LTS) release is van het platform. Het is dan de LTS-opvolger van Java 8. De hiermee geboden stabiliteit krijgt voortaan om de zes versies een nieuwe release. Deze LTS-planning komt neer op elke drie jaar een nieuwe release, wat grofweg gelijk is aan het tempo van vóór Java 9.

Oracle weet zo de nu ingezette versnelde ontwikkeling te combineren met stabiliteit voor zijn softwareplatform. Op deze manier moet dus een balans worden gevonden tussen de innovatiemogelijkheden die de releaseversnelling belooft en de stabiliteitsbehoefte die Java-gebruikers tegelijkertijd hebben. Ook het 22-jarig oude Java leeft nu in de nieuwe, snellere wereld.

VAN JAVA NAAR JAKARTA

‘What’s in a name?’, schreef de Britse bard William Shakespeare ooit al. Wie had kunnen vermoeden dat zijn wijze woorden ook van toepassing zijn op ICT? Softwarereus Oracle heeft vorig jaar het toezicht over Java EE (Enterprise Edition) overgedragen aan de Eclipse Foundation, met leden als IBM en Red Hat. Deze overdracht moet innovatie met en collaboration rondom dat zakelijke softwareplatform bevorderen. De opensourcestichting gaat voortaan over het onderhoud en de verdere ontwikkeling van Java EE. Correctie: van Jakarta EE, want de Java-naam is eigendom van Oracle.

En terwijl de commerciële leverancier wel opensourceminded is, blijkt het niet bereid om zijn handelsmerk open te stellen – al was het maar middels een gebruikslicentie. Ondanks protesten hierover vanuit de Java-gemeenschap, is de Eclipse Foundation dus gedwongen om een nieuwe naam te vinden. Die zoektocht is in de geest van open source uitgevoerd middels crowdsourcing. Na een oproep tot naamsuggesties, volgde een publieke stemming. Winnaar Jakarta EE dient voortaan als vaandel voor het Oracle-onafhankelijke open enterprise-softwareplatform op basis van Java.

Eind april heeft Eclipse plannen ontvouwd om Jakarta EE cloud-native en meer developersgedreven te maken. Laatstgenoemde komt neer op een focus op de programmacode, in plaats van op vooraf bepaalde specificaties. Volgens de stichting hebben de voorheen gehanteerde specificatieaanpak en de grip van Oracle bijgedragen aan het inzakken van het innovatietempo rondom Java EE.