Oracle heeft vandaag de beschikbaarheid aangekondigd van Java 17, de nieuwste versie van ‘s werelds nummer één programmeertaal en ontwikkelplatform. Java 17 bevat duizenden prestatie-, stabiliteits- en beveiligingsupdates, evenals 14 JEP’s (JDK Enhancement Proposals) die de Java-taal en het Java-platform verder verbeteren en developers helpen om productiever te zijn.
Java 17 is de nieuwste LTS-release (Long Term Support) en is het resultaat van intensieve samenwerking tussen Oracle-engineers en leden van de wereldwijde Java developer community via de OpenJDK Community en het Java Community Process (JCP). Sinds de vorige JDK 11 LTS-uitgave drie jaar geleden zijn meer dan 70 GEP’s geïmplementeerd.
Eenvoudigere licenties
Oracle JDK 17 en toekomstige JDK-releases maken het eenvoudiger om licenties en rechten voor Java te verkrijgen. Ze worden geleverd onder een vrij te gebruiken licentie tot een volledig jaar na de lancering van de volgende LTS-release. Oracle zal ook Oracle OpenJDK-releases blijven leveren onder de open-source General Public License (GPL). Dit doet Oracle al sinds 2017.
Verbeterde langetermijn support
Oracle werkt samen met de Java developer community en JCP aan het verbeteren van de LTS-planning om organisaties meer flexibiliteit te geven over wanneer en of ze willen migreren naar een nieuwere Java LTS-versie. Oracle zegt dat de volgende LTS-release Java 21 wordt en beschikbaar zal komen in september 2023, waardoor de huidige LTS-release interval van drie jaar wordt teruggebracht naar twee jaar.
Ondersteund door het Oracle LTS- en Java SE-abonnement kunnen klanten migreren naar Java 17 in het tempo dat het beste bij hun behoeften past. Oracle zal Java 17-klanten voorzien van beveiligings-, performance- en bugfix-updates tot ten minste september 2029.
“De afgelopen drie jaar hebben we vaak gehoord dat developers prijs stellen op de laatste features. Daarnaast waarderen ze ook een release cycle van zes maanden,” aldus Georges Saab, vice president of development, Java Platform Group bij Oracle. “Een van de grootste uitdagingen voor Java-developers is dat hun organisatie hen toestaat alleen de laatste LTS release te gebruiken. Door LTS releases elke twee jaar uit te brengen, hebben developers die bij meer conservatieve organisaties werken, meer keuze en toegang tot features waarmee ze graag werken.”
“Oracle voert wijzigingen door die de Java community helpen door de long-term support releases twee keer per jaar uit te brengen. Verder introduceert Oracle een nieuwe, aantrekkelijke licentie waarmee gratis gebruik van Oracle JDK langer mogelijk is,” vertelt Dr. Arnal Dayaratna, research vice president, Software Development bij IDC. “Deze veranderingen bieden bedrijven meer flexibiliteit bij het managen van applicatie development, zowel in de cloud, on-premise als in hybride omgevingen.”
Cloud-adoptie van Java versnellen
Java is een van de meest succesvolle ontwikkelplatforms ooit en is gebouwd op voortdurende innovatie om tegemoet te komen aan de steeds veranderende behoeftes van developers. Om de adoptie van Java in de cloud te versnellen, introduceerde Oracle onlangs de Oracle Java Management Service, een nieuwe Oracle Cloud Infrastructure (OCI)-native service om organisaties te helpen Java runtimes en applicaties on-premises of in de cloud te beheren.
Java Management Service geeft klanten inzicht in hun Java-implementaties in de organisatie. Dit betreft alle Java-versies die in hun omgeving zijn geïnstalleerd, inclusief versies van Java die in ontwikkeling zijn en in productie draaien. Ook worden ongeplande Java-applicaties zichtbaar en wordt gecontroleerd of alle geïnstalleerde Java-versies zijn bijgewerkt met de nieuwste security patches.
JDK 17 bevat nieuwe taalverbeteringen, updates van libraries, ondersteuning voor nieuwe Apple-computers, verwijdering en depreciatie van legacy functies en werkzaamheden om ervoor te zorgen dat Java-code die vandaag is geschreven, ongewijzigd blijft werken in toekomstige JDK-versies. Het biedt ook een language feature preview en incubating API’s om feedback van de Java-gemeenschap te verzamelen. De updates omvatten:
Java Language Enhancement
- JEP 409: Sealed Classes – Sealed classes en interfaces begrenzen welke andere classes of interfaces ze mogen uitbreiden of implementeren. Deze verbetering is de zoveelste verbetering van Project Amber, dat de productiviteit van developers wil verbeteren door de Java-taal te evolueren.
Updates en verbeteringen aan Libraries
- JEP 306: Restore Always-Strict Floating-Point Semantics – De Java programmeertaal en de Java virtuele machine hadden oorspronkelijk alleen strikte floating-point semantiek. Vanaf Java 1.2 werden kleine afwijkingen in die semantiek toegestaan, om tegemoet te komen aan beperkingen van toenmalige hardware-architecturen. Omdat die afwijkingen niet langer nuttig of nodig zijn, werden ze verwijderd door JEP 306.
- JEP 356: Verbeterde Pseudoetoevalsgeneratoren – Biedt nieuwe interfacetypes en implementaties voor Pseudotoevalsgeneratoren (PRNGs). Deze wijziging verbetert de interoperabiliteit van verschillende PRNGs en maakt het gemakkelijk om een algoritme te verkrijgen op basis van vereisten in plaats van een specifieke implementatie te coderen.
- JEP 382: Nieuwe macOS Rendering Pipeline – Implementeert een Java 2D pijplijn voor macOS die gebruik maakt van de Apple Metal API. De nieuwe pijplijn vermindert JDK’s afhankelijkheid van de verouderde Apple OpenGL API.
Nieuw Platform Support
- JEP 391: macOS AArch64 Port – Porteert de JDK naar het macOS/AArch64 platform. Deze port maakt het mogelijk Java-applicaties te draaien op de nieuwe Arm 64-gebaseerde Apple Silicon computers.
Verwijderd of aangemerkt voor verwijdering zjin:
- JEP 398: Applet API – Alle webbrowser-leveranciers hebben ondersteuning voor Java-browserplug-ins verwijderd of plannen aangekondigd om dit te doen. De Applet API werd in september 2017 in Java 9 afgeschreven, maar nog niet verwijderd.
- JEP 407: RMI Activation – Verwijdert het Remote Method Invocation (RMI) Activation mechanisme, terwijl de rest van RMI blijft bestaan.
- JEP 410: Experimental AOT and JIT Compiler – De experimentele op Java gebaseerde ahead-of-time (AOT) en just-in-time (JIT) compiler waren experimentele functies die niet veel gebruikt werden. Omdat ze optioneel waren, werden ze al verwijderd uit JDK 16. Deze JEP verwijdert deze componenten uit de JDK broncode.
- JEP 411: Security Manager is voor verwijdering aangemerkt – De Security Manager komt uit Java 1.0. Het is al lange tijd niet meer de primaire manier om client-side Java code te beveiligen, en het is zelden gebruikt om server-side code te beveiligen. Het verwijderen in een toekomstige release zal een aanzienlijke onderhoudslast wegnemen en het Java platform in staat stellen zich verder te ontwikkelen.
Java future-proof maken
- JEP 403: Strongly Encapsulate JDK Internals – Het zal niet langer mogelijk zijn om de sterke insluiting van interne elementen te versoepelen via een enkele commando regeloptie, zoals mogelijk was van JDK 9 tot JDK 16. Het is nog steeds mogelijk om toegang te krijgen tot bestaande interne API’s, maar het zal nu nodig zijn om, als command-line parameters of JAR-file manifest attributen, elk pakket op te geven waarvoor de inkapseling versoepeld moet worden. Deze wijziging leidt tot veiligere toepassingen en minder afhankelijkheid van niet-standaard, interne JDK-implementatiedetails.
Previews en Incubators voor latere JDK Releases
- JEP 406: Pattern Matching for switch (Preview) – Maakt het mogelijk items te toetsen aan de hand van diverse patronen, elk met een specifieke actie, zodat complexe data-gerichte query’s beknopt en veilig kunnen worden geformuleerd.
- JEP 412: Foreign Function and Memory API (Incubator) – Verbetert de in JDK 14 en JDK 15 geïntroduceerde incubatie-API’s die Java-programma’s in staat stellen te werken met code en data buiten de Java runtime. Door efficiënt foreign functies op te roepen (d.w.z. code buiten de JVM), en door veilig toegang te krijgen tot foreign geheugen, stellen deze API’s Java-programma’s in staat native libraries op te roepen en native data te verwerken zonder de kwetsbaarheid en complexiteit van Java Native Interface (JNI). Deze API’s worden ontwikkeld in het kader van Project Panama, dat tot doel heeft de interactie tussen Java en niet-Java-code te verbeteren.
- JEP 414: Vector API (Second Incubator) – Maakt het mogelijk vectorberekeningen uit te voeren die tijdens runtime betrouwbaar compileren naar geoptimaliseerde vectorinstructies op CPU-architecturen die worden ondersteund, en daardoor beter presteren dan gelijkwaardige scalaire berekeningen.
Aanvullende bronnen
- Download Oracle JDK 17
- Lees het Java 17 technische blog
- Kijk naar Oracle Developer Live: Java Innovations
- Kom meer te weten over de OpenJDK 17 General Availability release
- Lees verder over Java Management Service
- Lees verder over Oracle Java SE Subscription