Oracle kondigt de beschikbaarheid aan van Java 21, de nieuwste versie van 's werelds nummer één programmeertaal en ontwikkelplatform. Java 21 (Oracle JDK 21) levert duizenden verbeteringen op het gebied van prestaties, stabiliteit en beveiliging, waaronder platformverbeteringen die ontwikkelaars zullen helpen hun productiviteit te verhogen en innovatie en groei binnen hun organisaties te stimuleren. Oracle toont de nieuwste mogelijkheden in Java 21 op Oracle CloudWorld, dat deze week plaatsvindt (18-21 september) in Las Vegas, NV.

De nieuwste Java Development Kit (JDK) biedt updates en verbeteringen met 15 JDK Enhancement Proposals (JEP's). JDK 21 levert taalverbeteringen van OpenJDK-project Amber (String Templates, Record Patterns, Pattern Matching voor Switch, Unnamed Patterns en Variabelen, en Unnamed Classes en Instance Main Methods); verbeteringen van Project Panama (Foreign Function & Memory API en Vector API); functies gerelateerd aan Project Loom (Virtual Threads, Scoped Values en Structured Concurrency); prestatie-updates (Generational ZGC); en onderhouds- en deprecatiefuncties (Deprecate the 32-bit x86 Port for Removal, en Prepare to Disallow the Dynamic Loading of Agents). Oracle biedt langdurige ondersteuning voor Java 21 gedurende ten minste acht jaar.

Deze verlengde ondersteuningsperiode geeft organisaties de flexibiliteit om applicaties langer in productie te houden met minimaal onderhoud, en om uiteindelijk op hun eigen voorwaarden te migreren. Op basis van feedback van klanten en gebruik in het Java-ecosysteem heeft Oracle ook aangekondigd dat de langetermijnondersteuning voor Java 11 is verlengd tot ten minste januari 2032, waardoor Oracle nog minstens acht jaar ondersteuning en updates biedt. Belangrijke updates in Java 21 zijn: Project Loom-functies- JEP 444: Virtuele threads: Stroomlijnt het proces van het schrijven, onderhouden en observeren van gelijktijdige toepassingen met hoge doorvoer aanzienlijk door lichtgewicht virtuele threads in het Java-platform te introduceren. Door ontwikkelaars in staat te stellen om gelijktijdige toepassingen eenvoudig te troubleshooten, debuggen en profileren en ze te schalen met bestaande JDK-tools en -technieken, helpen virtuele threads de ontwikkeling van toepassingen te versnellen.

JEP 446: Scoped Waarden (Voorbeeld): Maakt het delen van onveranderlijke gegevens binnen en tussen threads mogelijk. Dit helpt het gebruiksgemak, de begrijpelijkheid, robuustheid en prestaties van de projecten van ontwikkelaars te verbeteren. JEP 453: Gestructureerde Concurrency (Voorbeeld): Vereenvoudigt gelijktijdig programmeren door de introductie van een API voor gestructureerde gelijktijdigheid, die helpt bij het bevorderen van een stijl van gelijktijdig programmeren die veelvoorkomende risico's als gevolg van annuleren en afsluiten kan elimineren ?

zoals draadlekken en annuleringsvertragingen? en verbetert de observeerbaarheid van gelijktijdige code. Dit helpt ontwikkelaars om de foutafhandeling en annulering te stroomlijnen, de betrouwbaarheid te verbeteren en de observeerbaarheid te vergroten.

Prestatie-updates: JEP 439: Generationele ZGC: Verbetert de prestaties van toepassingen door de Z Garbage Collector (ZGC) uit te breiden om afzonderlijke generaties voor jonge en oude objecten te onderhouden. Generationele ZGC helpt de productiviteit van ontwikkelaars te verbeteren door de overhead van vereist heapgeheugen en CPU voor afvalverzameling voor toepassingen te verlagen, evenals de risico's van toewijzingsstops. Taalupdates en -verbeteringen: JEP 430: String-sjablonen (Voorbeeld): Vereenvoudigt de ontwikkeling van Java-programma's door het gemakkelijk te maken om strings uit te drukken die waarden bevatten die tijdens het uitvoeren zijn berekend, en verbetert de beveiliging van programma's die strings samenstellen uit door de gebruiker geleverde waarden en deze doorgeven aan andere systemen. Daarnaast is de leesbaarheid van expressies die tekst en expressies combineren verbeterd, en kunnen niet-stringwaarden die uit letterlijke tekst en ingesloten expressies zijn berekend, worden aangemaakt zonder door een tussenliggende stringrepresentatie te hoeven gaan.

Dit helpt de productiviteit van ontwikkelaars te verhogen door de Java-taal leesbaarder, schrijfbaarder en onderhoudbaarder te maken. JEP 440: Opnamepatronen (Derde voorbeeld): Verbetert de Java-taal door patroonherkenning uit te breiden om instanties van recordklassen te destructureren, en door de toevoeging van geneste patronen mogelijk te maken. Dit stelt ontwikkelaars in staat om pattern matching uit te breiden naar meer geavanceerde en samenstelbare gegevensquery's, waardoor de productiviteit toeneemt.

JEP 441: Patroonmatching voor Switch: Breidt de expressiviteit en toepasbaarheid van switchuitdrukkingen en -statements uit door toe te staan dat patronen in case-labels verschijnen. Bovendien wordt de veiligheid van switch-statements vergroot door te eisen dat pattern-switch-statements alle mogelijke invoerwaarden dekken, en alle bestaande switch-uitdrukkingen en -statements kunnen zonder wijzigingen gecompileerd en met identieke semantiek uitgevoerd blijven worden. Dit helpt ontwikkelaars om hun projecten te stroomlijnen en de betrouwbaarheid ervan te verhogen door de Java-taal semantischer te maken, zodat complexe gegevensgeoriënteerde query's beknopt en veilig kunnen worden uitgedrukt.

JEP 443: Patronen en variabelen zonder naam (Preview): Verbetert de Java-taal door naamloze patronen mogelijk te maken die overeenkomen met een recordcomponent zonder de naam of het type van de component te vermelden, evenals naamloze variabelen die geïnitialiseerd maar niet gebruikt kunnen worden. Dit helpt het ontwikkelingsproces te vereenvoudigen door de leesbaarheid van recordpatronen te vergroten en de onderhoudbaarheid van alle code te verbeteren. JEP 445: Naamloze klassen en Instance-hoofdmethoden (voorbeeld): Helpt de toegankelijkheid van de Java-taal te vereenvoudigen en te verbeteren, zodat docenten programmeerconcepten op een geleidelijke manier kunnen introduceren.

Door de introductie van een apart beginnersdialect van Java en een aparte toolchain voor beginners te vermijden, kunnen programma's van leerlingen worden gecompileerd en uitgevoerd met dezelfde tools die elk Java-programma compileert en uitvoert? Dit helpt leerlingen om basisprogramma's op een beknopte manier te schrijven en hun code netjes te laten groeien naarmate hun vaardigheden toenemen. Dit helpt de productiviteit van leerling-ontwikkelaars te verbeteren door hen in staat te stellen hun eerste programma's te schrijven zonder taalfuncties te hoeven begrijpen die ontworpen zijn voor grote programma's. Project Panama voorbeeldfuncties: JEP 442: Buitenlandse functie & geheugen-API (Derde voorbeeld): Introduceert een API waarmee Java-programma's kunnen samenwerken met code en gegevens buiten de Java-runtime.

Door het efficiënt aanroepen van vreemde functies (d.w.z. code buiten de Java Virtual Machine [JVM]) en door veilige toegang tot vreemd geheugen (d.w.z. geheugen dat niet door de JVM wordt beheerd), stelt de nieuwe API Java-programma's in staat om native bibliotheken aan te roepen en native gegevens te verwerken zonder dat de Java Native Interface nodig is. Dit verhoogt het gebruiksgemak, de flexibiliteit, de prestaties en de veiligheid voor ontwikkelaars. JEP 448: Vector-API (zesde incubator): Introduceert een API om vectorberekeningen uit te drukken die tijdens runtime betrouwbaar compileren naar vectorinstructies op ondersteunde CPU-architecturen.

Dit helpt ontwikkelaars om de prestaties van hun projecten te verbeteren door hen toegang te geven tot een API die in staat is om een breed scala aan vectorberekeningen duidelijk en beknopt uit te drukken.