Udgivelse af Java SE 18

Efter seks måneders udvikling har Oracle udgivet Java SE 18 (Java Platform, Standard Edition 18), hvor den åbne OpenJDK-projekt bruges som referenceimplementering. Bortset fra at nogle forældede funktioner er fjernet, er der bevaret bagudkompatibilitet med tidligere versioner af Java-platformen i Java SE 18 – de fleste tidligere skrevne Java-projekter fungerer uændret under den nye version. Installationsklare versioner af Java SE 18 (JDK, JRE og Server JRE) er forberedt til Linux (x86_64, AArch64), Windows (x86_64) og macOS (x86_64, AArch64). Den referenceimplementering af Java 18, der er udviklet inden for OpenJDK-projektet, er fuldt åbent under GPLv2-licensen med undtagelser for GNU ClassPath, der tillader dynamisk binding med kommercielle produkter.

Java SE 18 er klassificeret som et release med almindelig support, hvor opdateringer vil blive udgivet indtil næste release. For langvarig støtte (LTS) skal Java SE 17 anvendes, opdateringer for hvilken vil blive udgivet indtil 2029. Som en påmindelse, siden Java 10, er projektet overgået til en ny udviklingsproces, der involverer kortere cyklusser for nye udgivelser. Ny funktionalitet udvikles nu i en konstant opdateret master-gren, hvor alle færdige ændringer inkluderes, og derfra oprettes der stabiliseringsgrene hver sjette måned for nye releases.

Nye funktioner i Java 18 inkluderer:

  • Standard tegnkodning er UTF-8. Java API'er, der behandler tekstdata i forhold til tegnkodninger, vil nu som standard anvende UTF-8 på alle platforme, uanset systemindstillinger og den indstillede lokalitet. For at vende tilbage til den gamle adfærd, hvor kodningen vælges baseret på systemlokaliteten, kan parameteren "-Dfile.encoding=COMPAT" anvendes.
  • Pakkecom.sun.net.httpserver, der inkluderer værktøjet jwebserver og et biblioteks-API med implementeringen af en simpel http-server til levering af statisk indhold (CGI- og servlet-lignende behandlere 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 oprettelse af prototyper, fejlfinding og test af projekter.
  • I JavaDoc er der implementeret understøttelse af tagget «@snippet» til at integrere arbejds eksempler og kodefragmenter i dokumentationen på API'er, som kan anvendes til værktøjer til validering, syntaksfremhævning og integration med IDE'er.
  • Implementeringen af API'et java.lang.reflect (Core Reflection) er blevet omarbejdet for at få information om metoder, felter og konstruktører i klasser samt adgang til klassernes interne struktur. Selve API'et java.lang.reflect forbliver uændret, men implementeres nu ved brug af metodebeskrivelser (method handles) fra modulet java.lang.invoke, i stedet for at bruge bytecode-generatorer. Ændringen har gjort det muligt at forene implementeringerne af java.lang.reflect og java.lang.invoke og forenkle vedligeholdelsen af dem.
  • En tredje forudgående implementering af API'et Vector er blevet foreslået, som tilbyder funktioner til vektorbetragtninger, der udføres ved brug af vektorinstruktioner fra processorerne x86_64 og AArch64, og som tillader anvendelse af operationer på flere værdier samtidig (SIMD). I modsætning til den automatiske vektorisering af skalære operationer, der tilbydes i JIT-kompilatoren HotSpot, giver den nye API mulighed for eksplicit styring af vektorisering til parallel databehandling.
  • Der er tilføjet et SPI-interface (service-provider interface) til at opløse værtsnavne og IP-adresser, hvilket muliggør brug af alternative resolvere i java.net.InetAddress, der ikke er bundet til de behandlere, der tilbydes af operativsystemet.
  • Den anden foreløbige implementering af API'en Foreign Function & Memory er blevet foreslået, hvilket gør det muligt for applikationer at interagere med kode og data uden for Java runtime. Det nye API muliggør effektivt kald til funktioner, der ikke kører i JVM, samt adgang til hukommelse, der ikke styres af JVM. For eksempel kan man kalde funktioner fra eksterne delte biblioteker og få adgang til procesdata uden at bruge JNI.
  • Den anden eksperimentelle implementering af mønstermatch i 'switch'-udtryk er blevet tilføjet, hvilket tillader brugen af fleksible mønstre i 'case'-etiketter, der dækker en række værdier, for hvilke man tidligere måtte bruge klodset 'if...else'-kedler. 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(); };
  • Finaliseringsmekanismen er blevet erklæret forældet og vil blive deaktiveret i en af de kommende versioner, sammen med de relaterede metoder som Object.finalize(), Enum.finalize(), Runtime.runFinalization() og System.runFinalization().
  • Der er udviklet support til strdeduplication i garbage collectors ZGC (Z Garbage Collector), SerialGC og ParallelGC.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster