Versió de Java SE 18

Després de sis mesos de desenvolupament, Oracle ha llançat la plataforma Java SE 18 (Java Platform, Standard Edition 18), que utilitza el projecte de codi obert OpenJDK com a implementació de referència. Amb l'excepció de l'eliminació d'algunes característiques obsoletes, Java SE 18 manté la compatibilitat amb versions anteriors de la plataforma Java; la majoria dels projectes Java escrits anteriorment encara funcionaran sense modificacions quan s'executen amb la nova versió. Les compilacions instal·lables de Java SE 18 (JDK, JRE i Server JRE) estan preparades per a Linux (x86_64, AArch64), Windows (x86_64) i macOS (x86_64, AArch64). Desenvolupat pel projecte OpenJDK, la implementació de referència de Java 18 és de codi obert totalment sota la llicència GPLv2 amb excepcions GNU ClassPath per permetre l'enllaç dinàmic a productes comercials.

Java SE 18 es classifica com a versió de suport habitual, amb actualitzacions que es publicaran abans de la propera versió. La branca de suport a llarg termini (LTS) hauria de ser Java SE 17, que rebrà actualitzacions fins al 2029. Recordem que a partir del llançament de Java 10, el projecte va passar a un nou procés de desenvolupament, que implica un cicle més curt per a la formació de nous llançaments. Ara s'està desenvolupant una nova funcionalitat en una branca mestra constantment actualitzada, que incorpora canvis ja finalitzats i de la qual es ramifiquen cada sis mesos per estabilitzar les noves versions.

Les noves característiques de Java 18 inclouen:

  • La codificació predeterminada és UTF-8. Les API de Java que processen dades de text basades en la codificació de caràcters ara utilitzaran UTF-8 de manera predeterminada a totes les plataformes, independentment de la configuració del sistema i de la configuració regional. Per tornar al comportament antic, on la codificació s'escull en funció de la configuració regional del sistema, podeu utilitzar l'opció "-Dfile.encoding=COMPAT".
  • El paquet inclou el paquet com.sun.net.httpserver, que inclou la utilitat jwebserver i l'API de la biblioteca amb la implementació d'un servidor http senzill per oferir contingut estàtic (no s'admeten els controladors CGI i servlets). El servidor HTTP integrat no està optimitzat per a càrregues de treball i no admet el control d'accés i l'autenticació, ja que està dirigit principalment a l'ús en el procés de desenvolupament de projectes de prototipatge, depuració i prova.
  • JavaDoc proporciona suport per a l'etiqueta "@snippet" per incrustar exemples de treball i fragments de codi a la documentació de l'API, on podeu utilitzar eines de validació, ressaltat de sintaxi i integració IDE.
  • S'ha redissenyat la implementació de l'API java.lang.reflect (Core Reflection), dissenyada per obtenir informació sobre mètodes, camps i constructors de classes, així com l'accés a l'estructura interna de les classes. La pròpia API java.lang.reflect es manté sense canvis, però ara s'implementa utilitzant els identificadors de mètodes proporcionats pel mòdul java.lang.invoke, en comptes d'utilitzar generadors de bytecode. El canvi ens va permetre unificar les implementacions de java.lang.reflect i java.lang.invoke, i simplificar-ne el manteniment.
  • S'ha proposat una tercera vista prèvia de l'API Vector, proporcionant funcions per a càlculs vectorials que s'executen mitjançant instruccions vectorials en processadors x86_64 i AArch64 i que permeten aplicar operacions simultàniament a múltiples valors (SIMD). A diferència de les capacitats que ofereix el compilador HotSpot JIT per a la vectorització automàtica d'operacions escalars, la nova API permet controlar explícitament la vectorització per al processament de dades paral·lel.
  • S'ha afegit una interfície SPI (interfície de proveïdor de serveis) per resoldre noms d'amfitrió i adreces IP, la qual cosa us permet utilitzar solucions alternatives a java.net.InetAddress que no estan vinculades als controladors que ofereix el sistema operatiu.
  • Es proporciona una segona vista prèvia de l'API de memòria i funció estrangera, que permet a les aplicacions interactuar amb codi i dades fora del temps d'execució de Java. La nova API us permet trucar de manera eficient a funcions que no són JVM i accedir a la memòria no gestionada per JVM. Per exemple, podeu trucar a funcions des de biblioteques externes compartides i accedir a les dades del procés sense utilitzar JNI.
  • S'ha afegit una segona implementació experimental de la concordança de patrons en expressions "switch", que permet l'ús de patrons flexibles en etiquetes de "cas" en lloc de valors exactes, cobrint una sèrie de valors alhora, per als quals abans era necessari utilitzar feixugues cadenes d'expressions “si... sinó”. Objecte o = 123L; String formatted = switch (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); cas Doble d -> String.format("doble %f", d); case String s -> String.format("String %s", s); per defecte -> o.toString(); };
  • El mecanisme de finalització i els seus mètodes associats, com ara Object.finalize(), Enum.finalize(), Runtime.runFinalization() i System.runFinalization() han quedat obsolets i es desactivaran en una versió futura.
  • Els col·lectors d'escombraries ZGC (Z Garbage Collector), SerialGC i ParallelGC admeten la deduplicació de files.

Font: opennet.ru

Afegeix comentari