Na zes maanden ontwikkeling heeft Oracle het Java SE 19-platform (Java Platform, Standard Edition 19) uitgebracht, dat gebruikmaakt van het open-sourceproject OpenJDK als referentie-implementatie. Met uitzondering van het verwijderen van enkele verouderde functies, behoudt Java SE 19 achterwaartse compatibiliteit met eerdere versies van het Java-platform – de meeste eerder geschreven Java-projecten zullen ongewijzigd werken onder de nieuwe versie. Kant-en-klare installatiepakketten van Java SE 19 (JDK, JRE en Server JRE) zijn beschikbaar. Linux (x86_64, AArch64), Windows (x86_64) en macOS (x86_64, AArch64). De Java 19-referentie-implementatie is ontwikkeld door het OpenJDK-project en is volledig open source onder de GPLv2-licentie met de GNU ClassPath Exception, waardoor dynamische koppeling met commerciële producten mogelijk is.
Java SE 19 is gecategoriseerd als een reguliere ondersteuningsrelease, met updates die vóór de volgende release worden uitgebracht. De tak voor ondersteuning op lange termijn (LTS) zou Java SE 17 moeten zijn, die tot 2029 updates zal ontvangen. Bedenk dat het project vanaf de release van Java 10 is overgeschakeld naar een nieuw ontwikkelingsproces, wat een kortere cyclus impliceert voor de vorming van nieuwe releases. Er wordt nu nieuwe functionaliteit ontwikkeld in één constant bijgewerkte master-branch, die reeds voltooide wijzigingen bevat en van waaruit branches elke zes maanden worden vertakt om nieuwe releases te stabiliseren.
Nieuwe functies in Java 19 zijn onder andere:
- Er wordt voorlopige ondersteuning voor recordpatronen voorgesteld, waarmee de in Java 16 geïntroduceerde patroonherkenningsmogelijkheden worden uitgebreid met mogelijkheden voor het parseren van waarden van recordklassen. Bijvoorbeeld: record Point(int x, int y) {} void printSum(Object o) { if (o instanceof Point(int x, int y)) { System.out.println(x+y); } }
- In vergaderingen voor Linux Ondersteuning voor de RISC-V-architectuur is aanwezig.
- Er is voorlopige ondersteuning toegevoegd voor de FFM (Foreign Function & Memory) API, waarmee Java-programma's kunnen communiceren met externe code en gegevens door functies uit externe bibliotheken aan te roepen en toegang te krijgen tot geheugen buiten de JVM.
- Ondersteuning toegevoegd voor virtuele threads. Dit zijn lichtgewicht threads waarmee u veel eenvoudiger hoogwaardige multithreaded toepassingen kunt schrijven en onderhouden.
- Dit is de vierde versie van de Vector API, die functies biedt voor vectorberekeningen die worden uitgevoerd met behulp van de vectorinstructies van de x86_64- en AArch64-processoren en waarmee bewerkingen op meerdere waarden tegelijk kunnen worden toegepast (SIMD). In tegenstelling tot de automatische vectorisatie van scalaire bewerkingen door de HotSpot JIT-compiler, biedt de nieuwe API de mogelijkheid om vectorisatie voor parallelle gegevensverwerking expliciet te beheren.
- Een derde experimentele implementatie van patroonherkenning in switch-expressies is toegevoegd, waardoor case-labels flexibele patronen kunnen gebruiken die een reeks waarden tegelijk bestrijken in plaats van exacte waarden, waarvoor voorheen omslachtige ketens van if…else-expressies nodig waren. Object o = 123L; String geformatteerd = switch (o) { case Integer i -> String.format(«int %d», i); case Long l -> String.format(«long %d», l); case Double d -> String.format(«double %f», d); case String s -> String.format(«String %s», s); default -> o.toString(); };
- Er is een experimentele API voor gestructureerd parallelisme toegevoegd. Deze API vereenvoudigt de ontwikkeling van multithreaded applicaties door meerdere taken die op verschillende threads worden uitgevoerd als één eenheid te behandelen.
Bron: opennet.ru
