Java SE 27 och OpenJDK 27 släpptes

Efter sex månaders utveckling har Oracle släppt Java SE 27 (Java Platform, Standard Edition 27), som använder OpenJDK-projektet med öppen källkod som referensimplementering. Med undantag för borttagningen av vissa föråldrade funktioner bibehåller Java SE 27 bakåtkompatibilitet med tidigare versioner av Java-plattformen – de flesta tidigare skrivna Java-projekt kommer att köras oförändrade när de körs under den nya versionen. Installationsfärdiga versioner av Java SE 27 (JDK, JRE och Server JRE) är förberedda för Linux (x86_64, AArch64), Windows (x86_64) och macOS (x86_64, AArch64). Java SE 27-referensimplementeringen, som utvecklades av OpenJDK-projektet, är helt öppen källkod under GPLv2-licensen med GNU ClassPath Exception, vilket möjliggör dynamisk länkning med kommersiella produkter.

Java SE 27 kategoriseras som en vanlig supportversion, med uppdateringar som släpps fram till nästa version. LTS-grenen (Long-term support) bör vara Java SE 25, Java SE 21 eller Java SE 17, med uppdateringar som släpps fram till 2033, 2031 respektive 2029 (allmänt tillgänglig fram till september 2030, 2028 och 2026). Utökat stöd för Java SE 8 LTS-grenen kommer att fortsätta fram till 2030, och för Java SE 11 fram till 2032.

Ändringarna i Java SE 27 (1, 2, 3, 4) inkluderar:

  • Som standard använder alla miljöer sophämtaren G1 (Garbage-First), som tidigare användes för serversystem. G1 är optimerad för användning på multiprocessorsystem med stor minneskapacitet och för att balansera förutsägbar latens med hög dataflöde. Under drift delar G1 upp minnet i många små regioner och prioriterar de regioner med fler oanvända objekt och mindre aktivt åtkomna data.
  • HotSpot JVM använder kompakta objekthuvuden som standard. På 64-bitarssystem har huvudstorleken minskats från 96 till 64 bitar, vilket minskar minnesförbrukningen och ökar sannolikheten för att data når processorns cache. I SPECjbb2015-riktmärken minskade minnesförbrukningen med 22 %, CPU-belastningen minskade med 8 % och antalet skräpinsamlingsoperationer minskade med 15 %. Testkörningstiderna för JSON-parsern minskade med 10 %.
  • TLS 1.3-implementeringen lägger till stöd för hybridnyckelavtalsscheman som kombinerar den kvantresistenta ML-KEM (CRYSTALS-Kyber)-algoritmen med klassiska ECDHE-elliptiska kurvalgoritmer: X25519MLKEM768 (ECDHE med X25519-kurvan + ML-KEM-768), SecP256r1MLKEM76 (ECDHE med secp256r1-kurvan + ML-KEM-768) och SecP384r1MLKEM1024 (ECDHE med secp384r1-kurvan + ML-KEM-1024). I javax.net API.ssl Dessa scheman är aktiverade som standard och kräver inga applikationsändringar för att användas.
  • JDK Flight Recorder (JFR), ett verktyg som används för prestandaövervakning, profilering och diagnostik, har nu stöd för sanering av kommandoradsargument, initialvärden för miljövariabler och systemegenskaper i sparad diagnostisk information. Denna ändring förhindrar läckage av känslig data som bearbetas av den profilerade processen, såsom auktoriseringstokens och API-åtkomstnycklar som skickas via miljövariabler.
  • Den tredje förhandsvisningen av Lazy Constants API har implementerats för att arbeta med objekt som innehåller oföränderlig data och behandlas som konstanter i JVM:n. Prestandaoptimeringar liknande de för fält med nyckelordet "final" tillämpas på sådana objekt. Till skillnad från "final" separerar det nya API:et skapandet av konstanta värden från deras initialisering, garanterar att ett värde endast kan initialiseras en gång, minskar programstarttiden och möjliggör användning av konstantvikningsoptimeringar, som tidigare endast använts i JDK-intern kod, i användarkod. class Application { // Tidigare: // static final UserService USERS = new UserService(); // Nu: static final StableValue ANVÄNDARE = ​​StabiltVärde.av(); public static Användartjänst användare() { return ANVÄNDARE.ellerAnnarsSet(Användartjänst::ny); } }
  • Mönstermatchningsmotorn introducerar ett femte utkast till möjligheten att använda primitiva typer (int, byte, char och andra icke-objektbaserade typer) i alla typer av mönster, i instanceof-operatorn och i switchblock. switch (x.getStatus()) { case 0 -> "okay"; case 1 -> "warning"; case 2 -> "error"; case int i -> "unknown status: " + i; } if (i instanceof byte b) { … b … }
  • Det sjunde utkastet av Structured Concurrency API, som förenklar utvecklingen av flertrådade applikationer genom att behandla flera uppgifter som körs på olika trådar som en enda enhet, har släppts för testning.
  • Den tolfte testimplementeringen av Vector API har implementerats. Detta API tillhandahåller funktioner för vektorberäkningar utförda med x86_64- och AArch64-processorvektorinstruktioner och möjliggör samtidiga operationer på flera värden (SIMD). Till skillnad från HotSpot JIT-kompilatorns autovektorisering av skalära operationer, tillåter det nya API:et explicit kontroll över vektorisering för parallell databehandling.
  • Ett tredje utkast av API:et finns nu tillgängligt för kodning och avkodning av objekt som innehåller kryptografiska nycklar, certifikat och certifikatåterkallningslistor med hjälp av PEM-formatet (Pivacy-Enhanced Mail).

Dessutom är vi glada att kunna meddela lanseringen av en uppdatering till JavaFX 27-plattformen för att skapa grafiska användargränssnittsapplikationer. Lanseringen av den universella virtuella maskinen GraalVM 27, som stöder att köra applikationer i JavaScript (Node.js), Python, Ruby, R, alla JVM-språk (Java, Scala, Clojure, Kotlin) och språk för vilka LLVM-bitkod kan genereras (C, C++, Rust), förväntas också inom de närmaste timmarna.

Källa: opennet.ru

Köp pålitlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster