Java SE 18-release

Na zes maanden ontwikkeling heeft Oracle het Java SE 18-platform (Java Platform, Standard Edition 18) uitgebracht, dat gebruikmaakt van het open-sourceproject OpenJDK als referentie-implementatie. Met uitzondering van het verwijderen van enkele verouderde functies, behoudt Java SE 18 achterwaartse compatibiliteit met eerdere versies van het Java-platform – de meeste eerder geschreven Java-projecten zullen ongewijzigd werken onder de nieuwe versie. Kant-en-klare installatiepakketten van Java SE 18 (JDK, JRE en Server JRE) zijn beschikbaar. Linux (x86_64, AArch64), Windows (x86_64) en macOS (x86_64, AArch64). De Java 18-referentie-implementatie is ontwikkeld door het OpenJDK-project en is volledig open source onder de GPLv2-licentie met de GNU ClassPath Exception, waardoor dynamische koppeling met commerciële producten mogelijk is.

Java SE 18 is gecategoriseerd als een reguliere ondersteuningsrelease, met updates die vóór de volgende release worden uitgebracht. De tak voor ondersteuning op lange termijn (LTS) zou Java SE 17 moeten zijn, die tot 2029 updates zal ontvangen. Bedenk dat het project vanaf de release van Java 10 is overgeschakeld naar een nieuw ontwikkelingsproces, wat een kortere cyclus impliceert voor de vorming van nieuwe releases. Er wordt nu nieuwe functionaliteit ontwikkeld in één constant bijgewerkte master-branch, die reeds voltooide wijzigingen bevat en van waaruit branches elke zes maanden worden vertakt om nieuwe releases te stabiliseren.

Nieuwe functies in Java 18 zijn onder andere:

  • De standaardcodering is UTF-8. Java API's die tekstgegevens verwerken op basis van tekencodering, gebruiken nu standaard UTF-8 op alle platforms, ongeacht de systeeminstellingen en landinstellingen. Om terug te keren naar het oude gedrag, waarbij de codering wordt gekozen op basis van de landinstelling van het systeem, kunt u de optie "-Dfile.encoding=COMPAT" gebruiken.
  • Het pakket bevat het pakket com.sun.net.httpserver, dat het hulpprogramma jwebserver en de bibliotheek-API bevat met de implementatie van een eenvoudige http-server voor het aanbieden van statische inhoud (CGI en servlet-achtige handlers worden niet ondersteund). De ingebouwde HTTP-server is niet geoptimaliseerd voor werklasten en ondersteunt geen toegangscontrole en authenticatie, omdat deze primair bedoeld is voor gebruik in het ontwikkelingsproces voor prototyping, debuggen en testen van projecten.
  • JavaDoc biedt ondersteuning voor de tag "@snippet" om werkvoorbeelden en codefragmenten in API-documentatie in te sluiten, waar u validatietools, syntaxisaccentuering en IDE-integratie kunt gebruiken.
  • De implementatie van de java.lang.reflect API (Core Reflection), ontworpen om informatie te verkrijgen over methoden, velden en klasseconstructors, evenals toegang tot de interne structuur van klassen, is opnieuw ontworpen. De java.lang.reflect API zelf blijft ongewijzigd, maar wordt nu geïmplementeerd met behulp van methodehandvatten van de java.lang.invoke-module, in plaats van bytecodegeneratoren te gebruiken. Dankzij de wijziging konden we de implementaties van java.lang.reflect en java.lang.invoke verenigen en het onderhoud ervan vereenvoudigen.
  • Er is een derde preview van de Vector API voorgesteld, die functies biedt voor vectorberekeningen die worden uitgevoerd met behulp van vectorinstructies op x86_64- en AArch64-processors en waarmee bewerkingen tegelijkertijd op meerdere waarden kunnen worden toegepast (SIMD). In tegenstelling tot de mogelijkheden van de HotSpot JIT-compiler voor automatische vectorisatie van scalaire bewerkingen, maakt de nieuwe API het mogelijk om vectorisatie expliciet te controleren voor parallelle gegevensverwerking.
  • SPI (service-provider interface) toegevoegd voor het oplossen van hostnamen en IP-adressen, waardoor java.net.InetAddress alternatieve resolvers kan gebruiken die niet gebonden zijn aan de handlers die door het besturingssysteem worden aangeboden.
  • Er is een tweede preview van de Foreign Function & Memory API beschikbaar, waardoor applicaties buiten de Java-runtime met code en gegevens kunnen communiceren. Met de nieuwe API kunt u efficiënt niet-JVM-functies aanroepen en toegang krijgen tot niet-JVM-beheerd geheugen. U kunt bijvoorbeeld functies uit externe gedeelde bibliotheken oproepen en toegang krijgen tot procesgegevens zonder JNI te gebruiken.
  • Er is een tweede experimentele implementatie van patroonmatching in ‘switch’-uitdrukkingen toegevoegd, waardoor het gebruik van flexibele patronen in ‘case’-labels mogelijk is in plaats van exacte waarden, die een reeks waarden tegelijk bestrijken, waarvoor het voorheen nodig was om te gebruiken omslachtige ketens van “if...else”-uitdrukkingen. Object o = 123L; String geformatteerd = switch (o) { case Integer i -> String.format("int %d", i); case Lange l -> String.format("lange %d", l); case Dubbele d -> String.format("dubbele %f", d); case String s -> String.format("String %s", s); standaard -> o.toString(); };
  • Het finalisatiemechanisme en de bijbehorende methoden zoals Object.finalize(), Enum.finalize(), Runtime.runFinalization() en System.runFinalization() zijn verouderd en zullen in een toekomstige release worden uitgeschakeld.
  • De ZGC (Z Garbage Collector), SerialGC en ParallelGC garbage collectors ondersteunen rijdeduplicatie.

Bron: opennet.ru

Koop betrouwbare hosting voor sites met DDoS-bescherming, VPS VDS-servers 🔥 Koop betrouwbare websitehosting met DDoS-bescherming, VPS- en VDS-servers | ProHoster