Efter seks måneders udvikling har Oracle udgivet Java SE 19 (Java Platform, Standard Edition 19), hvor den referenceimplementering, der anvendes, er det åbne projekt OpenJDK. Bortset fra fjernelsen af nogle forældede funktioner, opretholder Java SE 19 bagudkompatibilitet med tidligere versioner af Java-platformen — de fleste eksisterende Java-projekter vil fungere uden ændringer, når de køres i den nye version. Installationsklare versioner af Java SE 19 (JDK, JRE og Server JRE) er forberedt til Linux (x86_64, AArch64), Windows (x86_64) og macOS (x86_64, AArch64). Den referenceimplementering af Java 19, der er udviklet som en del af OpenJDK-projektet, er fuldt åben under GPLv2-licensen med undtagelser fra GNU ClassPath, der tillader dynamisk binding til kommercielle produkter.
Java SE 19 hører til kategorien versioner med almindelig support, og opdateringer vil blive udgivet indtil den næste udgivelse. Som en version med langsigtet support (LTS) bør Java SE 17 anvendes, hvor opdateringer vil blive udgivet indtil 2029. Det skal bemærkes, at med udgivelsen af Java 10 er projektet overgået til en ny udviklingsproces, der omfatter en kortere cyklus for nye udgivelser. Den nye funktionalitet udvikles nu i en konstant opdateret master-gren, som inkorporerer færdige ændringer, og som splittes op i stabiliseringsgrene hver sjette måned.
Blandt nyhederne i Java 19 kan nævnes:
- Foreløbig støtte til record patterns, som udvider muligheden for mønstermatching introduceret i Java 16 ved hjælp af værktøjer til at analysere værdier af record-typer. For eksempel: record Point(int x, int y) {} void printSum(Object o) { if (o instanceof Point(int x, int y)) { System.out.println(x+y); } }
- I versionerne til Linux er der tilføjet support til RISC-V-arkitekturen.
- Foreløbig støtte til FFM API (Foreign Function & Memory), der muliggør interaktion mellem Java-programmer og ekstern kode og data ved at kalde funktioner fra eksterne biblioteker og få adgang til hukommelse uden for JVM, er blevet tilføjet.
- Support for virtuelle tråde er blevet tilføjet, som er letvægts tråde, der væsentligt forenkler skrivning og vedligeholdelse af højtydende multitrådede applikationer.
- Den fjerde pre-release af Vector API er blevet foreslået, som tilbyder funktioner til vektorberegninger, der udføres ved hjælp af vektor instruktioner i x86_64 og AArch64 processorer og muliggør samtidig anvendelse af operationer på flere værdier (SIMD). I modsætning til de autovektoriseringsmuligheder, der tilbydes i HotSpot JIT-kompilatoren for skalaroperationer, giver den nye API mulighed for eksplicit at styre vektoriseringen for parallel databehandling.
- Den tredje eksperimentelle implementering af mønstermatchning i 'switch'-udtryk er blevet tilføjet, hvilket gør det muligt at bruge fleksible skabeloner i 'case'-labels i stedet for præcise værdier, der tidligere krævede klodsede 'if…else'-kæder. Object o = 123L; String formatted = 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(); };
- En eksperimentel API for struktureret parallelisme er blevet tilføjet, hvilket forenkler udviklingen af multitrådede applikationer ved at behandle flere opgaver, der udføres i forskellige tråde, som en enkelt blok.
Kilde: opennet.ru
