Java SE 18 udgivelse

Efter seks måneders udvikling har Oracle frigivet Java SE 18 (Java Platform, Standard Edition 18) platformen, som bruger OpenJDK open source-projektet som referenceimplementering. Med undtagelse af fjernelse af nogle forældede funktioner, bevarer Java SE 18 bagudkompatibilitet med tidligere udgivelser af Java-platformen - de fleste tidligere skrevne Java-projekter vil stadig fungere uden ændringer, når de køres under den nye version. Klar til at installere builds af Java SE 18 (JDK, JRE og Server JRE) er forberedt til Linux (x86_64, AArch64), Windows (x86_64) og macOS (x86_64, AArch64). Java 18-referenceimplementeringen er udviklet af OpenJDK-projektet og er fuldt åben under GPLv2-licensen med GNU ClassPath-undtagelser for at tillade dynamiske links til kommercielle produkter.

Java SE 18 er kategoriseret som en almindelig supportudgivelse, med opdateringer, der skal frigives inden næste udgivelse. Den langsigtede support (LTS) filial bør være Java SE 17, som vil modtage opdateringer indtil 2029. Husk, at fra og med udgivelsen af ​​Java 10 skiftede projektet til en ny udviklingsproces, hvilket indebærer en kortere cyklus for dannelsen af ​​nye udgivelser. Ny funktionalitet udvikles nu i én konstant opdateret mastergren, som inkorporerer allerede gennemførte ændringer, og hvorfra filialer forgrenes hvert halve år for at stabilisere nye udgivelser.

Nye funktioner i Java 18 inkluderer:

  • Som standard er kodningen UTF-8. Java API'er, der behandler tekstdata baseret på tegnkodning, vil nu bruge UTF-8 som standard på alle platforme, uanset systemindstillinger og lokalitetsindstillinger. For at vende tilbage til den gamle adfærd, hvor kodningen er valgt baseret på systemets lokalitet, kan du bruge "-Dfile.encoding=COMPAT" muligheden.
  • Pakken inkluderer com.sun.net.httpserver-pakken, som inkluderer jwebserver-værktøjet og biblioteks-API med implementeringen af ​​en simpel http-server til visning af statisk indhold (CGI og servlet-lignende handlere understøttes ikke). Den indbyggede HTTP-server er ikke optimeret til arbejdsbelastninger og understøtter ikke adgangskontrol og autentificering, da den primært er rettet mod brug i udviklingsprocessen til prototyping, debugging og testprojekter.
  • JavaDoc understøtter "@snippet"-tagget til at indlejre arbejdseksempler og kodestykker i API-dokumentation, hvor du kan bruge valideringsværktøjer, syntaksfremhævning og IDE-integration.
  • Implementeringen af ​​java.lang.reflect API (Core Reflection), designet til at indhente information om metoder, felter og klassekonstruktører, samt adgang til klassernes interne struktur, er blevet redesignet. Selve java.lang.reflect API'et forbliver uændret, men er nu implementeret ved hjælp af metodehåndtag leveret af java.lang.invoke-modulet, i stedet for at bruge bytekode-generatorer. Ændringen gjorde det muligt for os at forene implementeringerne af java.lang.reflect og java.lang.invoke og forenkle deres vedligeholdelse.
  • En tredje forhåndsvisning af Vector API er blevet foreslået, der giver funktioner til vektorberegninger, der udføres ved hjælp af vektorinstruktioner på x86_64- og AArch64-processorer og tillader operationer at blive anvendt samtidigt på flere værdier (SIMD). I modsætning til funktionerne i HotSpot JIT-kompileren til autovektorisering af skalaroperationer, gør den nye API det muligt eksplicit at styre vektorisering til parallel databehandling.
  • Tilføjet SPI-grænseflade (tjenesteudbydergrænseflade) til at løse værtsnavne og IP-adresser, så du kan bruge alternative resolvere i java.net.InetAddress, der ikke er bundet til handlere, der tilbydes af operativsystemet.
  • En anden forhåndsvisning af Foreign Function & Memory API er tilvejebragt, hvilket giver applikationer mulighed for at interagere med kode og data uden for Java-runtiden. Den nye API giver dig mulighed for effektivt at kalde ikke-JVM-funktioner og få adgang til ikke-JVM-administreret hukommelse. For eksempel kan du kalde funktioner fra eksterne delte biblioteker og få adgang til procesdata uden at bruge JNI.
  • En anden eksperimentel implementering af mønstermatchning i "switch"-udtryk er blevet tilføjet, hvilket muliggør brugen af ​​fleksible mønstre i "case"-etiketter i stedet for nøjagtige værdier, der dækker en række værdier på én gang, som det tidligere var nødvendigt at bruge til besværlige kæder af "hvis ... andet" udtryk. Objekt o = 123L; String formatted = switch (o) { case Heltal i -> String.format("int %d", i); case Lang l -> String.format("lang %d", l); case Dobbelt d -> String.format("dobbelt %f", d); case String s -> String.format("String %s", s); default -> o.toString(); };
  • Finaliseringsmekanismen og dens tilknyttede metoder såsom Object.finalize(), Enum.finalize(), Runtime.runFinalization() og System.runFinalization() er blevet forældet og vil blive deaktiveret i en fremtidig udgivelse.
  • ZGC (Z Garbage Collector), SerialGC og ParallelGC skraldeopsamlere understøtter rækkededuplicering.

Kilde: opennet.ru

Tilføj en kommentar