De komende langetermijnversie van standaard Java, Java Development Kit (JDK) 21, staat gepland voor september en omvat sequenced collections, virtuele threads, string templates, en een foreign function en memory API (in preview). Deze functies moeten de ervaring van ontwikkelaars verbeteren op gebieden die variëren van het schrijven tot het onderhouden en controleren van concurrerende toepassingen met hoge doorvoer.
Hoewel nog niet officieel vermeld op de release-pagina van JDK 21, wordt aangenomen dat de foreign function and memory API preview onlangs is toegevoegd. Met deze API kunnen Java-programma's soepel samenwerken met code en gegevens buiten de Java-runtime. Hij maakt efficiënte communicatie met buitenlandse functies en veilige toegang tot buitenlands geheugen mogelijk, zodat Java-programma's kunnen communiceren met native bibliotheken en native gegevens kunnen verwerken zonder de kwetsbaarheid en het risico van de Java Native Interface (JNI).
De buitenlandse functie- en geheugen-API werd al eerder gepreviewd in JDK 20 en JDK 19, die respectievelijk in maart en september vorig jaar werden uitgebracht. De nieuwste preview bevat verbeteringen zoals verbeterde lay-outpaden, gecentraliseerd beheer van de levensduur van native segmenten in de Arena-interface, een fallback native linker-implementatie en verwijdering van de VaList. Doelstellingen voor deze API omvatten gebruiksgemak, prestaties, algemeenheid en veiligheid. Het is echter niet de bedoeling JNI te vervangen of op enigerlei wijze te veranderen.
JDK 21 brengt ook virtuele threads, lichtgewicht threads die veelbelovend zijn om de uitdagingen van het schrijven, onderhouden en observeren van high-throughput concurrent applicaties drastisch te verminderen. De doelstellingen achter deze functie zijn onder meer het effectief schalen van servertoepassingen met optimaal gebruik van de hardware, het bevorderen van de adoptie van virtuele threads met minimale wijzigingen aan de bestaande lang.Thread API code, en het vereenvoudigen van debugging en profiling van virtuele threads met de huidige JDK tools. JDK 21 zal zorgen voor volledige ondersteuning van thread-local variabelen met virtuele threads, wat de compatibiliteit met bestaande bibliotheken bevordert en de migratie van taakgebaseerde code naar het gebruik van virtuele threads vergemakkelijkt.
Sequenced collections zijn een andere feature set die JDK 21 zal vergezellen. Deze interfaces maken de representatie van verzamelingen met een duidelijke ontmoetingsvolgorde mogelijk, waarbij elke verzameling goed gedefinieerde eerste en tweede elementen heeft, enzovoort. Er komen uniforme API's om de toegang tot de eerste en laatste elementen en het omkeren van de verwerkingsvolgorde van de elementen te vergemakkelijken. Door sequencing interfaces voor collections, sets en maps te definiëren, beoogt dit voorstel leemtes in Java's collections framework op te vullen en tegemoet te komen aan reeds lang bestaande gebruikerswensen.
String-sjablonen zullen als voorbeeldfunctie in JDK 21 opduiken en de bestaande string-literalen en tekstblokken van Java verbeteren door letterlijke tekst samen te voegen met ingesloten expressies en processoren om gespecialiseerde resultaten te genereren. De primaire bedoeling van deze functie is het programmeren in Java te vereenvoudigen door het gemakkelijk te maken strings uit te drukken die runtime-gecompenseerde waarden bevatten. String-sjablonen zijn ontworpen om de leesbaarheid van expressies te verbeteren, de veiligheid van programma's te verhogen, flexibiliteit te behouden en het gemakkelijker te maken om te werken met API's die strings accepteren die in andere talen dan Java zijn geschreven.
Volgens het voorgestelde releaseplan voor JDK 21 zal de lijst met functies worden bevroren na de rampdown-fasen op 8 juni en 20 juli, waarin het oplossen van bugs wordt voortgezet. De eerste en laatste release candidates volgen op 10 en 24 augustus, waarbij nog steeds bugfixes mogelijk zijn. De algemene beschikbaarheid is gepland voor 19 september.
JDK 21 wordt een LTS-release (long-term support), die vijf jaar Premier-ondersteuning en uitgebreide ondersteuning biedt tot september 2031. JDK 17, de huidige LTS-versie, werd uitgebracht in september 2021. Niet-LTS-releases, waaronder JDK 20 en JDK 19, krijgen slechts zes maanden Premier-ondersteuning en geen uitgebreide ondersteuning.
Standaard Java-implementaties van Oracle worden om de zes maanden gepubliceerd, en potentiële functies voor JDK 21 omvatten alle incubatie- en previewfuncties in JDK 20. Deze kunnen omvatten scoped values, record patterns, en pattern matching voor switch statements, maar ook universele generics, de generational Z garbage collector, en de asynchrone stack trace VM API. Andere geavanceerde platforms zoals no-code en low-code platforms, zoals AppMaster, kunnen ook profiteren van deze vooruitgang in Java-technologie.