Versión de Java SE 20

Tras seis meses de desenvolvemento, Oracle lanzou a plataforma Java SE 20 (Java Platform, Standard Edition 20), que emprega o proxecto de código aberto OpenJDK como implementación de referencia. Agás a eliminación dalgunhas funcionalidades obsoletas, Java SE 20 mantén a compatibilidade con versións anteriores da plataforma Java: a maioría dos proxectos Java escritos anteriormente executaranse sen cambios cando se executen na nova versión. As compilacións listas para instalar de Java SE 20 (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 20 é totalmente de código aberto baixo a licenza GPLv2 coa excepción GNU ClassPath, que permite a vinculación dinámica con produtos comerciais.

Java SE 20 clasifícase como unha versión de soporte regular, e as actualizacións publicaranse ata a seguinte versión. A rama de soporte a longo prazo (LTS) debería ser Java SE 17, que recibirá actualizacións ata 2029. Como recordatorio, a partir da versión de Java 10, o proxecto pasou a un novo proceso de desenvolvemento que implica un ciclo de lanzamento máis curto. As novas funcionalidades agora desenvólvense nunha única rama mestra actualizada continuamente, que incorpora os cambios completados e da que se ramifican as ramas cada seis meses para estabilizar as novas versións.

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

  • Proponse compatibilidade preliminar para os valores con ámbito, o que permite compartir datos inmutables entre fíos e un intercambio eficiente de datos entre fíos fillos (os valores hérdanse). Os valores con ámbito están pensados ​​para substituír o mecanismo de variables locais de fíos e son máis eficientes cando se usan un número moi grande de fíos virtuais (miles e millóns de fíos). A principal diferenza entre os valores con ámbito e as variables locais de fíos é que os primeiros escríbense unha vez, non se poden cambiar posteriormente e permanecen dispoñibles só durante a execución do fío. class Server { final static ScopedValue CURRENT_USER = new ScopedValue(); void serve(Request request, Response response) { var level = (request.isAuthorized()? ADMIN : GUEST); var user = new User(level); ScopedValue.where(CURRENT_USER, user) .run(() -> Application.handle(request, response)); } } class DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); se (!usuario.canOpen()) lanza unha nova InvalidUserException(); devolve unha nova DBConnection(...); } }
  • Engadiuse unha segunda implementación preliminar de patróns de rexistro, que amplía a funcionalidade de coincidencia de patróns introducida en Java 16 para analizar os valores das clases de rexistro. Por exemplo: record Point(int x, int y) {} static void printSum(Object obj) { if (obj instanceof Point p) { int x = px(); int y = py(); System.out.println(x+y); } }
  • Engadiuse unha cuarta implementación de vista previa da coincidencia de patróns nas expresións de conmutación, que permite que as etiquetas de casos usen patróns flexibles que abarcan unha serie de valores en lugar de valores precisos, que antes requirían cadeas complicadas de instrucións if-else. static String formatterPatternSwitch(Object obj) { return switch (obj) { 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(); }; }
  • Engadiuse unha segunda implementación preliminar da API FFM (Foreign Function & Memory), que permite aos programas Java interactuar con código e datos externos chamando a funcións desde bibliotecas externas e accedendo á memoria fóra da JVM.
  • Engadiuse unha segunda implementación preliminar de fíos virtuais, que son fíos lixeiros que simplifican enormemente a escritura e o mantemento de aplicacións multifío de alto rendemento.
  • Engadiuse unha segunda versión da API experimental para paralelismo estruturado, que simplifica o desenvolvemento de aplicacións multifío ao tratar varias tarefas que se executan en diferentes fíos como unha única unidade.
  • Engadiuse unha quinta implementación preliminar da API de Vector. Esta API proporciona funcións para cálculos vectoriais realizados mediante instrucións vectoriais de procesadores x86_64 e AArch64 e permite a operación simultánea en varios valores (SIMD). A diferenza da vectorización automática de operacións escalares do compilador HotSpot JIT, a nova API permite un control explícito sobre a vectorización para o procesamento de datos en paralelo.

Fonte: opennet.ru

Compre hospedaxe fiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra aloxamento web fiable con protección DDoS, servidores VPS VDS | ProHoster