Den nya utgåvan innehåller 24 förbättringsförslag (Java Enhancement Proposals eller JEP) för Java Developer Kit (JDK) som hjälper utvecklare att maximera produktiviteten och förbättra Java-språket.
Förbättringar av plattformens prestanda, stabilitet och säkerhet. Programmeringsspråket Java utvecklas bland annat från Sverige.
Oracle har annoncerata tt Java 24 – den senaste versionen av världens främsta programmeringsspråk och utvecklingsplattform som bland annat utvecklas från Sverige – har släppts. Java 24 (Oracle JDK 24) innehåller tusentals förbättringar som hjälper utvecklare att maximera produktiviteten och främja innovation. Dessutom hjälper förbättringar av plattformens prestanda, stabilitet och säkerhet organisationer att snabba på sin affärstillväxt. Ta reda på mer om den senaste Java 24-versionen på konferensen JavaOne 2025 i Redwood Shores, Kalifornien den 18–20 mars 2025.
”Java fyller 30 år senare i år och fortsätter att utöka sina verktyg för att möta utvecklarnas nya behov, inklusive funktioner som stöder utvecklingen av AI-drivna applikationer”, säger Arnal Dayaratna, vice vd för forskning, programvaruutveckling på IDC. ”Den nya utgåvans många funktioner bidrar till att öka utvecklarnas produktivitet så att de kan leverera funktionsrika applikationer till sina organisationer och kunder på ett snabbare och mer effektivt sätt. Java 24-versionen visar att Java är ojämförligt när det gäller utvecklingen av verksamhetskritiska applikationer i stor skala i företagsklass.”
”Under de senaste 30 åren har Java gett utvecklare en omfattande plattform för att bygga och distribuera applikationer som hanterar en mängd olika användningsområden”, säger Georges Saab, vice vd för Oracle Java Platform och styrelseordförande för OpenJDK. ”Med över 20 nya funktioner som täcker varje element i Java, inklusive nya funktioner för AI och postkvantum-krypto, ger Java 24-versionen utvecklare de verktyg de behöver för att bygga innovativa applikationer som innehåller AI-funktioner. Som förvaltare av Java är vi glada att kunna samarbeta med den globala Java-communityn och fortsätta leverera en stadig ström av nya funktioner var sjätte månad”
Språkfunktioner
- JEP 488: Primitiva typer i mönster, instanceof och switch: Hjälper utvecklare att öka produktiviteten i Java-programmering genom att göra språket mer enhetligt och uttrycksfullt. Den här funktionen hjälper utvecklare att förbättra mönstermatchningen genom att ta bort restriktioner som rör primitiva typer som utvecklare stöter på när de använder mönstermatchning, -instanceof och -switch. Den tillåter också primitiva typmönster i alla mönsterkontexter och utökar -instanceof och -switch till att fungera med alla primitiva typer. Utvecklare av applikationer som integrerar AI-inferens kan dra särskild nytta av stöd för primitiva typer.
- JEP 492: Flexibla konstruktorkroppar (tredje förhandsgranskningen): Hjälper utvecklare att förbättra kodens tillförlitlighet genom att införa två unika prolog- och epilogsfaser i en konstruktorkropp. Detta gör det möjligt för utvecklare att använda en mer naturlig placering av logik som de för närvarande måste inkludera i statiska tilläggsmetoder, mellanliggande tilläggskonstruktorer eller konstruktorargument. Det bevarar också det befintliga garantiskyddet att kod i en underklasskonstruktor inte kan störa superklassinstansiering, vilket resulterar i att en klass blir mer tillförlitlig när metoder åsidosätts.
- JEP 494: Deklarationer för modulimport (andra förhandsgranskningen): Hjälper utvecklare att snabbt och enkelt importera alla paket som exporteras av en modul, utan att den importerande koden måste finnas i själva modulen. Detta förenklar återanvändning av modulära bibliotek för alla utvecklare och hjälper nybörjare att enklare använda bibliotek från tredje part och grundläggande Java-klasser utan att behöva lära sig var de finns i en pakethierarki. Den här funktionen gynnar också utvecklare som vill integrera affärslogik snabbt med inbyggd AI-inferens, bibliotek eller tjänsteanrop.
- JEP 495: Enkla källfiler och huvudmetoder för instanser (fjärde förhandsgranskningen): Hjälper studenter att skriva sina första program utan att behöva förstå språkfunktioner som är avsedda för stora program genom att erbjuda en smidig åtkomstpunkt till Java-programmering. Lärare och instruktörer kan nu introducera koncept gradvis, och eleverna kan skriva enklare program som består av en enda klass och så småningom utöka sina program med mer avancerade funktioner vartefter deras färdigheter växer. Dessutom kan erfarna Java-utvecklare skriva små program kortfattat och effektivt utan att behöva använda verktyg som är utformade för större projekt.
Bibliotek
- JEP 485: Flödessamlare: Hjälper utvecklare att bli mer effektiva när de läser, skriver och underhåller Java-kod genom att förbättra flödes-API:t så att det har stöd för anpassade mellanliggande åtgärder, vilket gör att flödespipelines kan transformera data på sätt som inte lätt kan uppnås med de befintliga inbyggda mellanliggande operationerna.
- JEP 484: Klassfils-API: Hjälper utvecklare att förbättra produktiviteten genom att tillhandahålla ett standard-API för parsning, generering och transformering av Java-klassfiler och spåra det klassfilformat som definierats av specifikationen för Java Virtual Machine.
- JEP 487: Värden med begränsad räckvidd (fjärde förhandsgranskningen): Bidrar till att öka användarvänligheten, förståelsen, prestanda och robustheten i utvecklarnas projekt genom att möjliggöra delning av oföränderliga data inom och mellan trådar.
- JEP 489: Vektor-API (nionde inkubatorn): Hjälper utvecklare att introducera ett API för att uttrycka vektorberäkningar som tillförlitligt kompileras vid körning till vektorinstruktioner på CPU-arkitekturer som stöds. Det gör att utvecklare kan uppnå högre prestanda än motsvarande skalära beräkningar som ofta används i AI-inferens- och beräkningsscenarier.
- JEP 499: Paradigm för att hantera trådar (fjärde förhandsgranskningen): Hjälper utvecklare att förbättra underhållet, tillförlitligheten och observerbarheten hos flertrådskod genom att förenkla samtidig programmering via ett nytt API för strukturerad trådhantering. Genom att behandla grupper av relaterade uppgifter som körs i olika trådar som en enda arbetsenhet kan strukturerad trådhantering bidra till att minska vanliga risker som uppstår vid avbokning och avstängning, till exempel trådläckor och avbokningsfördröjningar.
Säkerhetsbibliotek
- JEP 478: API för härledningsfunktion för nyckel (förhandsgranskning): Hjälper utvecklare att förbereda sig för nya kvantberäkningsmiljöer genom att erbjuda kryptografisk säkerhet för data som överförs. Detta förbättrar informationssekretess och kommunikationsintegritet.
- JEP 496: Kvantresistent modul-gitter-baserad mekanism för nyckelinkapsling: Bidrar till att öka säkerheten för Java-applikationer genom att skydda nyckelutbyte mot framtida kvantdatorattacker(ML-KEM). Den här funktionen är ett viktigt steg mot postkvantum-beredskap och det slutliga stödet för postkvantum-krypto (PQC) för Java-plattformen, eftersom mekanismer för nyckelinkapsling används för att skydda symmetriska nycklar i osäkra kommunikationskanaler med hjälp av kryptering med öppen nyckel.
- JEP 497: Kvantresistent modul-gitter-baserad algoritm för digital signatur: Bidrar till att öka säkerheten för Java-applikationer genom att tillhandahålla en implementering av den kvantresistenta modul-gitter-baserade algoritmen för digital signatur (ML-DSA). Precis som med JEP 496 är den här funktionen ett viktigt steg mot postkvantum-beredskap och det slutliga stödet för PQC för Java-plattformen, eftersom digitala signaturer används för att upptäcka obehöriga ändringar av data och för att autentisera undertecknarnas identitet. ML-DSA är utformad för att skydda mot framtida kvantdatorsattacker och den har standardiserats av United States National Institute of Standards and Technology (NIST) i FIPS 204.
Verktyg
- JEP 493: Länka Run-Time-bilder utan JMOD:er: Hjälper utvecklare att aktivera jlink-verktyget för att skapa anpassade Run-Time-bilder utan att använda JMOD-filerna för JDK, vilket kan minska storleken på JDK med cirka 25 procent. Det gör att utvecklare kan länka en Run-Time-bild från moduler oavsett om dessa moduler är fristående JMOD-filer, modulära JAR-filer eller en del av en Run-Time-bild som länkats tidigare. Den här funktionen måste aktiveras när JDK byggs. Den är inte aktiverad som standard och vissa JDK-leverantörer kan välja att inte aktivera den.
Uppdateringar av prestanda och körtid
- JEP 450: Komprimerade objektsidhuvuden (experimentellt): Hjälper utvecklare att öka produktiviteten genom att minska storleken på objektsidhuvuden i HotSpot JVM mellan 96 och 128 bitar och ned till 64 bitar på 64-bitars arkitekturer. Detta minskar heap-utrymmet, förbättrar distributionstätheten och ökar datanärheten.
- JEP 475: Tillägg för sena barriärer för G1: Hjälper utvecklare att öka effektiviteten genom att flytta expansionen av G1-skräpinsamlarens barriärer från tidigt i C2 JIT:s kompileringspipeline till senare, vilket kan minska prestandaförlusterna om det inträffar efter plattformsoberoende optimeringar och registerallokering. Genom att förenkla implementeringen av G1-skräpinsamlarens barriärer bidrar den här funktionen till att öka effektiviteten, förståelsen, återhämtningen och kvaliteten för den C2-genererade koden.
- JEP 483: Laddning och länkning av klasser i förväg: Hjälper utvecklare att förbättra starttiden genom att göra klasser av en applikation omedelbart tillgängliga i ett laddat och länkat tillstånd när HotSpot Java Virtual Machine startar. Den här funktionen kräver inte användning av jlink- eller jpackage-verktygen, och den kräver ingen ändring av hur applikationer startas från kommandoraden eller någon ändring av koden för applikationer, bibliotek eller ramverk. Det gör att den bidrar till att lägga en grund för fortsatta förbättringar av start- och uppvärmningstiden.
- JEP 490: ZGC: Ta bort icke-generationsläget: Hjälper utvecklare att minska underhållskostnaderna för stöd för två olika lägen genom att ta bort icke-generationsläget för Z Garbage Collector (ZGC).
- JEP 491: Synkronisera virtuella trådar utan Pinning: Hjälper utvecklare att öka produktiviteten genom att utöka skalbarheten hos Java-kod och bibliotek som använder synkroniserade metoder och satser. Genom att aktivera virtuella trådar för att släppa sina underliggande plattformstrådar ger den här funktionen utvecklare åtkomst till fler virtuella trådar för att hantera applikationernas arbetsbelastningar.
Källkod
- JEP 404: Generationsvis Shenandoah (experimentellt): Hjälper utvecklare att öka produktiviteten genom att förbättra Shenandoah-skräpinsamlaren med experimentella, generationsvisa insamlingsfunktioner som förbättrar hållbar genomströmning, återhämtningsförmåga från belastningstopp och minnesanvändning.
- JEP 479: Borttagning av Windows 32-bitars x86-porten: Hjälper utvecklare att öka effektiviteten genom att ta bort källkoden och bygga stöd för Windows 32-bitars x86-porten, vilket förenklar bygg- och testinfrastrukturen för JDK.
- JEP 501: Gör 32-bitars x86-porten inaktuell för borttagning: Hjälper utvecklare att öka produktiviteten genom att göra 32-bitars x86-porten inaktuell med syftet att ta bort den i en framtida utgåva. Det här hjälper utvecklare att få tillgång till nya funktioner som kräver plattformsspecifikt stöd utan att behöva implementera reservrutiner för 32-bitars x86.
Genom att införa moderna, säkra funktioner samtidigt som osäkra funktioner gradvis görs inaktuella och tas bort, understryker Oracle sitt åtagande att upprätthålla Java-integriteten och anpassa sig till bästa praxis för programvaruutveckling. Oracle har utsett tre funktioner som ska tas bort i en framtida Java-utgåva: JEP 472: Förbered begränsning av användningen av JNI; JEP 486: Avaktivera säkerhetshanteraren permanent; JEP 498: Varna om metoder för minnesåtkomst används i sun.misc.Unsafe.
Java 24-versionen är ett resultat av ett kontinuerligt samarbete mellan Oracle och andra medlemmar i vår globala Java-utvecklargrupp via OpenJDK och Java Community Process (JCP). Mer information om funktionerna i Java 24 finns i det tekniska blogginlägget om Java 24.
Stöd för den globala Java-communityn med innovation i molnet
Java ger ökad innovation, prestanda, effektivitet och kostnadsbesparingar när det distribueras i Oracles molninfrastruktur (OCI), vilket är ett av de första hyperskalningsmolnen som har stöd för Java 24. Genom att leverera Oracle Java SE, Oracle GraalVM och Java SE Subscription Enterprise Performance Pack utan extra kostnad för OCI, hjälper Java 24 utvecklare med att skapa och distribuera applikationer som körs snabbare, bättre och med optimerad kostnadseffektivitet.
Oracle Java Universal SE Subscription förser kunderna med förstklassig support. Det omfattar Java SE Subscription Enterprise Performance Pack, trestegsstöd för hela Java-portföljen, rättighet till Oracle GraalVM, åtkomst till de avancerade funktionerna i Java Management Service och flexibiliteten att uppgradera i takt med kundernas verksamhet. Prenumerationen hjälper IT-organisationerna att hantera komplexa frågor, minska säkerhetsriskerna och hålla nere kostnaderna.
Citat från communityn
”Jag ser fram emot den ytterligare begränsningen av vektor-API för Java i Java 24 för att ytterligare förbättra både prediktiva och generativa AI-applikationer”, säger Frank Greco, styrelseordförande på NYJavaSIG. ”Genom att aktivera effektiva AI-algoritmer direkt i Java kan du säkerställa att AI-applikationer blir mycket effektiva och skalbara på olika moderna maskinvaruplattformar.”
”Java 24 introducerar flödessamlare, en kraftfull förbättring som ger utvecklare detaljerad åtkomstkontroll över hur element grupperas och bearbetas inom flöden”, säger Richard Fichtner, verkställande direktör på XDEV Software GmbH. ”Detta gör komplexa datatransformationer mer uttrycksfulla och effektiva. Jag älskar den här funktionen eftersom den eliminerar tillfälliga lösningar som anpassade insamlare eller flatMap-gymnastik, vilket möjliggör mer läsbara och hanterbara flödespipelines.”
”Java är som en sås som tillagats av en skicklig kock med noga utvalda ingredienser och som har fått sjuda lagom länge för att få fram de bästa smakerna”, säger dr Venkat Subramaniam, grundare av Agile Developer, Inc. ”Mina nuvarande favoritsmaker är API för flödessamlare, värden med begränsad räckvidd och paradigm för att hantera trådar.”
”Den tredje förhandsgranskningen av flexibla konstruktorer i Java 24 är en noterbar funktion eftersom den bidrar till att ingen privat hjälpmetod behöver skapas, så jag kan anropa den här, på en enda linje”, säger Jeanne Boyarsky, utvecklare på CodeRanch. ”Flödessamlarfunktionen är också spännande, och jag ser fram emot att bibliotek kommer med massor av nya mellanliggande åtgärder att dra nytta av.”
”På JetBrains är vi glada över att kunna erbjuda stöd för Java 24 i IntelliJ IDEA från dag ett”, säger Marit van Dijk, Java-utvecklarförespråkare på JetBrains. ”Vårt åtagande att hålla jämna steg med de senaste förbättringarna i Java hjälper utvecklare att smidigt ta till sig de värdefulla nya funktionerna, samtidigt som möjligheten att ladda ned Java 24 direkt från IDE gör konfigurationen enklare.”
Mer information om Java och dess globala ekosystem finns på:
- Dev.java: Den officiella portalen för att lära dig Java
- Inside.java: Nyheter och åsikter från medlemmarna i Java-teamet på Oracle
- Java YouTube: Den officiella Java YouTube-kanalen för Java-utbildningsvideor