Efter sex mÄnaders utveckling har Oracle slÀppt plattformen Java SE 19 (Java Platform, Standard Edition 19), dÀr den referensimplementering som anvÀnds Àr det öppna projektet OpenJDK. Förutom att nÄgra förÄldrade funktioner har tagits bort, har Java SE 19 bevarat bakÄtkompatibiliteten med tidigare versioner av plattformen Java - de flesta tidigare skrivna Java-projekt kommer att fungera utan Àndringar nÀr de körs pÄ den nya versionen. Klar för installation Àr Java SE 19 (JDK, JRE och Server JRE) förberedd för Linux (x86_64, AArch64), Windows (x86_64) och macOS (x86_64, AArch64). Den referensimplementering av Java 19, som utvecklats inom ramen för projektet OpenJDK, Àr helt öppen under GPLv2-licensen med undantag för GNU ClassPath, vilket tillÄter dynamisk lÀnkning till kommersiella produkter.
Java SE 19 klassas som en version med vanlig supportcykel, dÀr uppdateringar kommer att slÀppas fram till nÀsta version. För lÄngsiktig support (LTS) bör Java SE 17 anvÀndas, vars uppdateringar kommer att slÀppas fram till 2029. LÄt oss pÄminna om att med Java 10 övergick projektet till en ny utvecklingsprocess som innebÀr en kortare cykel för nya versioner. Den nya funktionaliteten utvecklas nu i en stÀndigt uppdaterad master-gren, dÀr fÀrdiga Àndringar inkluderas, och var sjÀtte mÄnad skapas grenar för stabilisering av nya versioner.
NÄgra nyheter i Java 19 inkluderar:
- Förhandsstöd för mönstermatchning av poster (record pattern) har föreslagits, vilket utökar den mönstermatchningsfunktionalitet som introducerades i Java 16 för att extrahera vÀrden frÄn klasser av typen record. Till exempel: record Point(int x, int y) {} void printSum(Object o) { if (o instanceof Point(int x, int y)) { System.out.println(x+y); } }
- I versionerna för Linux har stöd för RISC-V-arkitekturen införlivats.
- Förhandsstöd för API FFM (Foreign Function & Memory) har lagts till, vilket möjliggör interaktion mellan Java-program och extern kod och data genom att anropa funktioner frÄn externa bibliotek och fÄ tillgÄng till minne utanför JVM.
- Stöd för virtuella trÄdar har lagts till, vilket Àr lÀtta trÄdar som avsevÀrt förenklar skrivandet och underhÄllet av högpresterande flertrÄdade applikationer.
- Den fjÀrde preliminÀra implementeringen av Vektor API har föreslagits, vilket tillhandahÄller funktioner för vektorberÀkningar som utförs med vektoriska instruktioner frÄn processorerna x86_64 och AArch64 och möjliggör samtidig tillÀmpning av operationer pÄ flera vÀrden (SIMD). Till skillnad frÄn de av HotSpot JIT-kompilatorn erbjudna möjligheterna för automatisk vektorisering av skalÀra operationer, ger det nya API:t möjlighet att explicit styra vektoriseringen för parallell databehandling.
- En tredje experimentell implementation av mönstermatchning i "switch"-uttryck har lagts till, vilket tillÄter anvÀndning av flexibla mönster i "case"-etiketter som omfattar en serie vÀrden, för vilka man tidigare var tvungen att anvÀnda otympliga kedjor av "if...else"-uttalanden. 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(); };
- Ett experimentellt API för strukturerad parallellism har lagts till, vilket förenklar utvecklingen av flertrÄdiga applikationer genom att behandla flera uppgifter som körs i olika trÄdar som en enda enhet.
KĂ€lla: opennet.ru
