Utgivning av Java SE 27 och OpenJDK 27

Efter sex mĂ„naders utveckling har Oracle publicerat plattformen Java SE 27 (Java Platform, Standard Edition 27), vars referensimplementation bygger pĂ„ det öppna projektet OpenJDK. Med undantag för borttagning av vissa förĂ„ldrade funktioner bevarar Java SE 27 bakĂ„tkompatibilitet med tidigare versioner av Java-plattformen — de flesta tidigare skrivna Java-projekt kommer att fungera utan förĂ€ndringar nĂ€r de körs med den nya versionen. InstallationsfĂ€rdiga versioner av Java SE 27 (JDK, JRE och Server JRE) har förberetts för Linux (x86_64, AArch64), Windows (x86_64) och macOS (x86_64, AArch64). Den referensimplementation som utvecklats inom ramen för OpenJDK-projektet Ă€r helt öppen under GPLv2-licens med undantag för GNU ClassPath som tillĂ„ter dynamisk lĂ€nkning med kommersiella produkter.

Java SE 27 klassas som en version med vanlig support, dĂ€r uppdateringar kommer att slĂ€ppas fram till nĂ€sta release. För lĂ„ngsiktigt stödda versioner (LTS) bör Java SE 25, Java SE 21 eller Java SE 17 anvĂ€ndas, vars uppdateringar kommer att ges ut fram till Ă„ren 2033, 2031 och 2029 respektive (offentliga — fram till september 2030, 2028 och 2026). Den utökade supporten för LTS-versionen Java SE 8 kommer att fortsĂ€tta till 2030, medan Java SE 11 supportar till 2032.

Bland Àndringarna i Java SE 27 (1, 2, 3, 4):

  • Som standard anvĂ€nds skrĂ€psamlare G1 (Garbage-First) för alla miljöer, som tidigare anvĂ€ndes för servrar. G1 Ă€r optimerad för anvĂ€ndning pĂ„ flerprocessystem med stora mĂ€ngder minne och balanserar mellan förutsĂ€gbarhet i fördröjningar och hög bandbredd. Under drift delar G1 upp minnet i mĂ„nga smĂ„ regioner och rensar först de regioner dĂ€r det finns fler oanvĂ€nda objekt och fĂ€rre aktivt anvĂ€nda data.
  • I HotSpot JVM anvĂ€nds kompakta objektöverskrifter som standard. Storleken pĂ„ överskrifterna har minskats frĂ„n 96 till 64 bitar pĂ„ 64-bitars system, vilket har minskat minnesanvĂ€ndningen och ökat sannolikheten för att data hamnar i processorens cache. I SPECjbb2015-tester minskade minnesanvĂ€ndningen med 22 %, CPU-belastningen med 8 %, och antalet skrĂ€psamlingsoperationer minskade med 15 %. NĂ€r JSON-parsingtestet genomfördes minskade genomloppstiden för testerna med 10 %.
  • I implementeringen av TLS 1.3 har stöd för hybrida nyckelutbytesalgoritmer lagts till, som kombinerar algoritmen ML-KEM (CRYSTALS-Kyber), som Ă€r kvantresistent, med klassiska algoritmer baserade pĂ„ elliptiska kurvor ECDHE: X25519MLKEM768 (ECDHE med kurvan X25519 + ML-KEM-768), SecP256r1MLKEM76 (ECDHE med kurvan secp256r1 + ML-KEM-768) och SecP384r1MLKEM1024 (ECDHE med kurvan secp384r1 + ML-KEM-1024). I API:et javax.net.ssl Dessa scheman Ă€r aktiverade som standard och krĂ€ver inga Ă€ndringar i applikationerna för att anvĂ€ndas.
  • I JDK Flight Recorder (JFR), som anvĂ€nds för övervakning, profilering och prestandadiagnostik, har stöd för rengöring av den sparade diagnostikinformationen för kommandoradsargument, initiala vĂ€rden för miljövariabler och systemegenskaper lagts till. Denna förĂ€ndring förhindrar lĂ€ckage av konfidentiell information som hanteras av den profilerade processen, sĂ„som autentiseringstoken och API-Ă„tkomstnycklar som överförs via miljövariabler.
  • Den tredje preliminĂ€ra versionen av API för Lazy Constants har implementerats för att arbeta med objekt som innehĂ„ller oförĂ€nderliga data och behandlas i JVM som konstanter. Till sĂ„dana objekt tillĂ€mpas prestandaoptimeringar som liknar fĂ€lt med nyckelordet "final". Till skillnad frĂ„n "final" separerar det nya API:et skapandet av konstantvĂ€rden och deras initialisering, garanterar att vĂ€rdet endast kan initialiseras en gĂ„ng, minskar programstartstiden och möjliggör optimeringar av konstantveckning i anvĂ€ndarkod, som tidigare endast anvĂ€ndes i den interna koden i JDK. class Application { // Tidigare: // static final UserService USERS = new UserService(); // Nu kan man: static final StableValue USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
  • I mönstermatchningsmekanismen har en femte preliminĂ€r variant av möjligheten att anvĂ€nda primitiva typer (int, byte, char och andra grundlĂ€ggande typer som inte Ă€r objekt) i alla typer av mallar, i "instanceof"-operatorn och i "switch"-block föreslagits. switch (x.getStatus()) { case 0 -> "okej"; case 1 -> "varning"; case 2 -> "fel"; case int i -> "okĂ€nt tillstĂ„nd: " + i; } if (i instanceof byte b) { 
 b 
 }
  • Den sjunde preliminĂ€ra versionen av API:t för strukturerad parallellism (Structured Concurrency) har föreslagits för testning, vilket förenklar utvecklingen av flertrĂ„dade applikationer genom att hantera flera uppgifter som körs i olika trĂ„dar som ett enda block.
  • Den tolfte testimplementeringen av API:t Vector har genomförts, vilket erbjuder funktioner för vektorberĂ€kningar som utförs med hjĂ€lp av vektorinstruktioner frĂ„n x86_64 och AArch64, och gör det möjligt att applicera operationer pĂ„ flera vĂ€rden samtidigt (SIMD). Till skillnad frĂ„n de av HotSpot JIT-kompilatorn erbjudna möjligheterna för automatisk vektorisering av skalaroperationer, ger det nya API:t möjlighet att explicit hantera vektorisering för parallell databehandling.
  • Den tredje preliminĂ€ra versionen av API:t för kodning och avkodning av objekt med kryptografiska nycklar, certifikat och Ă„terkallade certifikatlistor, med hjĂ€lp av PEM-formatet (Pivacy-Enhanced Mail), Ă€r tillgĂ€nglig.

Dessutom kan man notera publiceringen av plattformsuppdateringen för att skapa applikationer med grafiskt grÀnssnitt, JavaFX 27. Inom nÄgra timmar förvÀntas ocksÄ lanseringen av den universella virtuella maskinen GraalVM 27, som stöder körning av applikationer i JavaScript (Node.js), Python, Ruby, R, samt alla sprÄk för JVM (Java, Scala, Clojure, Kotlin) och sprÄk för vilka det kan genereras LLVM-bitkod (C, C++, Rust).

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster