Versión de Java SE 18

Despois de seis meses de desenvolvemento, Oracle lanzou a plataforma Java SE 18 (Java Platform, Standard Edition 18), que utiliza o proxecto de código aberto OpenJDK como implementación de referencia. Coa excepción da eliminación dalgunhas funcións obsoletas, Java SE 18 mantén a compatibilidade con versións anteriores da plataforma Java; a maioría dos proxectos Java escritos anteriormente aínda funcionarán sen modificación cando se executen coa nova versión. As compilacións instalables de Java SE 18 (JDK, JRE e Server JRE) están preparadas para Linux (x86_64, AArch64), Windows (x86_64) e macOS (x86_64, AArch64). Desenvolvida polo proxecto OpenJDK, a implementación de referencia de Java 18 é totalmente de código aberto baixo a licenza GPLv2 con excepcións GNU ClassPath para permitir ligazóns dinámicas a produtos comerciais.

Java SE 18 clasifícase como versión de soporte regular, con actualizacións que se publicarán antes da próxima versión. A rama de Soporte a longo prazo (LTS) debería ser Java SE 17, que recibirá actualizacións ata 2029. Recordemos que a partir do lanzamento de Java 10, o proxecto pasou a un novo proceso de desenvolvemento, o que implica un ciclo máis curto para a formación de novos lanzamentos. Agora estase desenvolvendo novas funcionalidades nunha rama mestra en constante actualización, que inclúe cambios xa completados e da que se ramifican cada seis meses para estabilizar as novas versións.

As novas funcións de Java 18 inclúen:

  • A codificación predeterminada é UTF-8. As API de Java que procesan datos de texto baseados na codificación de caracteres agora usarán UTF-8 de forma predeterminada en todas as plataformas, independentemente da configuración do sistema e da configuración local. Para volver ao comportamento antigo, onde se escolle a codificación en función da configuración rexional do sistema, pode usar a opción "-Dfile.encoding=COMPAT".
  • O paquete inclúe o paquete com.sun.net.httpserver, que inclúe a utilidade jwebserver e a API da biblioteca coa implementación dun servidor http simple para servir contido estático (non se admiten CGI nin controladores tipo servlet). O servidor HTTP integrado non está optimizado para cargas de traballo e non admite o control de acceso e a autenticación, xa que está destinado principalmente ao seu uso no proceso de desenvolvemento de proxectos de prototipado, depuración e proba.
  • JavaDoc ofrece soporte para a etiqueta "@snippet" para incorporar exemplos de traballo e fragmentos de código na documentación da API, onde podes usar ferramentas de validación, resaltado de sintaxe e integración de IDE.
  • Rediseñouse a implementación da API java.lang.reflect (Core Reflection), deseñada para obter información sobre métodos, campos e construtores de clases, así como o acceso á estrutura interna das clases. A propia API de java.lang.reflect permanece inalterada, pero agora está implementada usando os controladores de método proporcionados polo módulo java.lang.invoke, en lugar de usar xeradores de bytecode. O cambio permitiunos unificar as implementacións de java.lang.reflect e java.lang.invoke, e simplificar o seu mantemento.
  • Propúxose unha terceira vista previa da API Vector, que proporciona funcións para cálculos vectoriais que se executan mediante instrucións vectoriais nos procesadores x86_64 e AArch64 e permiten aplicar operacións simultáneamente a varios valores (SIMD). A diferenza das capacidades proporcionadas no compilador HotSpot JIT para a vectorización automática de operacións escalares, a nova API permite controlar explícitamente a vectorización para o procesamento de datos paralelo.
  • Engadiuse a interface SPI (interfaz do provedor de servizos) para resolver os nomes de host e enderezos IP, o que lle permite utilizar resolutores alternativos en java.net.InetAddress que non están vinculados aos controladores ofrecidos polo sistema operativo.
  • Ofrécese unha segunda vista previa da API de memoria e funcións estranxeiras, que permite que as aplicacións interactúen con código e datos fóra do tempo de execución de Java. A nova API permítelle chamar de forma eficiente funcións que non son JVM e acceder a memoria non xestionada por JVM. Por exemplo, pode chamar funcións desde bibliotecas compartidas externas e acceder a datos do proceso sen usar JNI.
  • Engadiuse unha segunda implementación experimental de coincidencia de patróns en expresións "switch", que permite o uso de patróns flexibles en etiquetas "case" en lugar de valores exactos, abarcando unha serie de valores á vez, para os que antes era necesario utilizar engorrosas cadeas de expresións "se... senón". Obxecto 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("Cadea %s", s); predeterminado -> o.toString(); };
  • O mecanismo de finalización e os seus métodos asociados, como Object.finalize(), Enum.finalize(), Runtime.runFinalization() e System.runFinalization() quedaron en desuso e desactivaranse nunha versión futura.
  • Os colectores de lixo ZGC (Z Garbage Collector), SerialGC e ParallelGC admiten a deduplicación de filas.

Fonte: opennet.ru

Engadir un comentario