{"id":107370,"date":"2023-03-22T00:48:09","date_gmt":"2023-03-21T22:48:09","guid":{"rendered":"https:\/\/prohoster.info\/?p=107370"},"modified":"2023-03-22T11:10:35","modified_gmt":"2023-03-22T09:10:35","slug":"vypusk-java-se-20","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/news\/vypusk-java-se-20","title":{"rendered":"Lanzamiento de Java SE 20","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Despu\u00e9s de seis meses de desarrollo, Oracle ha lanzado la plataforma Java SE 20 (Java Platform, Standard Edition 20), cuya implementaci\u00f3n de referencia utiliza el proyecto de c\u00f3digo abierto OpenJDK. A excepci\u00f3n de la eliminaci\u00f3n de algunas caracter\u00edsticas obsoletas, Java SE 20 mantiene la compatibilidad hacia atr\u00e1s con versiones anteriores de la plataforma Java; la mayor\u00eda de los proyectos Java escritos anteriormente funcionar\u00e1n sin cambios cuando se ejecuten en la nueva versi\u00f3n. Las compilaciones listas para instalar de Java SE 20 (JDK, JRE y Server JRE) est\u00e1n disponibles para Linux (x86_64, AArch64), Windows (x86_64) y macOS (x86_64, AArch64). La implementaci\u00f3n de referencia de Java 20, desarrollada en el marco del proyecto OpenJDK, es completamente abierta bajo la licencia GPLv2 con excepciones de GNU ClassPath, que permiten el enlace din\u00e1mico con productos comerciales.     <\/p>\n<p>Java SE 20 se clasifica como una versi\u00f3n con un ciclo de soporte normal, cuyas actualizaciones se emitir\u00e1n hasta el pr\u00f3ximo lanzamiento. Para una rama de soporte a largo plazo (LTS), se debe utilizar Java SE 17, cuyas actualizaciones se emitir\u00e1n hasta 2029. Recordemos que, a partir de la versi\u00f3n Java 10, el proyecto pas\u00f3 a un nuevo proceso de desarrollo que implica un ciclo de formaci\u00f3n de nuevos lanzamientos m\u00e1s corto. La nueva funcionalidad ahora se desarrolla en una rama maestra continuamente actualizada, la cual incluye cambios ya listos y de la que se bifurcan ramas para la estabilizaci\u00f3n de nuevos lanzamientos cada seis meses.     <\/p>\n<p>Entre las novedades de Java 20 se destacan:  <\/p>\n<ul>\n<li class=\"l\"> Se ha propuesto soporte preliminar para valores limitados (Scoped Values), que permiten compartir datos inmutables entre hilos y facilitar el intercambio de datos entre hilos secundarios (los valores se heredan). Los Scoped Values se est\u00e1n desarrollando para reemplazar el mecanismo de variables locales a hilos (thread-local variables) y son m\u00e1s eficientes cuando se utiliza un gran n\u00famero de hilos virtuales (miles y millones de hilos). La principal diferencia entre los Scoped Values y las variables locales a hilos es que los primeros se escriben una vez, no pueden ser modificados posteriormente y solo est\u00e1n disponibles durante la ejecuci\u00f3n del hilo. 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(() -&gt; Application.handle(request, response)); } } class DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); if (!user.canOpen()) throw new InvalidUserException(); return new DBConnection(...); } }\n<li class=\"l\"> Se ha agregado una segunda implementaci\u00f3n preliminar de patrones de registro (record pattern), que ampl\u00eda la capacidad de coincidencia de patrones introducida en Java 16 para analizar valores de clases tipo record. Por ejemplo: record Point(int x, int y) {} static void printSum(Object obj) { if (obj instanceof Point p) { int x = p.x(); int y = p.y(); System.out.println(x + y); } }\n<li class=\"l\"> Se ha a\u00f1adido la cuarta implementaci\u00f3n preliminar de coincidencia por patr\u00f3n en las expresiones \u00abswitch\u00bb, que permite en las etiquetas \u00abcase\u00bb utilizar no valores exactos, sino patrones flexibles que abarcan inmediatamente una serie de valores, para los cuales anteriormente era necesario usar cadenas engorrosas de expresiones \u00abif\u2026else\u00bb.       static String formatterPatternSwitch(Object obj) {         return switch (obj) {             case Integer i -&gt; String.format(\u00abint %d\u00bb, i);             case Long l    -&gt; String.format(\u00ablong %d\u00bb, l);             case Double d  -&gt; String.format(\u00abdouble %f\u00bb, d);             case String s  -&gt; String.format(\u00abString %s\u00bb, s);             default        -&gt; o.toString();         };     }\n<li class=\"l\"> Se ha a\u00f1adido la segunda implementaci\u00f3n preliminar de la API FFM (Foreign Function &amp; Memory), que permite organizar la interacci\u00f3n de programas Java con c\u00f3digo y datos externos mediante la llamada a funciones de bibliotecas externas y el acceso a memoria fuera de la JVM.\n<li class=\"l\"> Se ha a\u00f1adido una segunda implementaci\u00f3n preliminar de hilos virtuales, que son hilos ligeros que simplifican significativamente la escritura y el mantenimiento de aplicaciones de m\u00faltiples hilos de alto rendimiento.\n<li class=\"l\"> Se ha a\u00f1adido una segunda versi\u00f3n de la API experimental para el paralelismo estructurado, que simplifica el desarrollo de aplicaciones multihilo al tratar m\u00faltiples tareas que se ejecutan en diferentes hilos como un \u00fanico bloque.\n<li class=\"l\"> Se ha a\u00f1adido la quinta implementaci\u00f3n preliminar de la API Vector, que proporciona funciones para c\u00e1lculos vectoriales que se realizan utilizando instrucciones vectoriales de los procesadores x86_64 y AArch64, permitiendo aplicar operaciones a varios valores simult\u00e1neamente (SIMD). A diferencia de las capacidades de autovectorizaci\u00f3n de operaciones escalares proporcionadas por el compilador JIT HotSpot, la nueva API permite un control expl\u00edcito sobre la vectorizaci\u00f3n para el procesamiento paralelo de datos.   <\/ul>\n<p>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=58837\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u043e\u0441\u043b\u0435 \u0448\u0435\u0441\u0442\u0438 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Oracle \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 Java SE 20 (Java Platform, Standard Edition 20), \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 OpenJDK. \u0417\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 Java SE 20 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441 \u043f\u0440\u043e\u0448\u043b\u044b\u043c\u0438 \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u043c\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b Java &#8212; \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0440\u0430\u043d\u0435\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 Java-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043f\u043e\u0434 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-107370","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u043e\u0441\u043b\u0435 \u0448\u0435\u0441\u0442\u0438 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Oracle \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 Java SE 20 (Java Platform, Standard Edition 20), \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 OpenJDK.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/news\/vypusk-java-se-20\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0412\u044b\u043f\u0443\u0441\u043a Java SE 20 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u043e\u0441\u043b\u0435 \u0448\u0435\u0441\u0442\u0438 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Oracle \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 Java SE 20 (Java Platform, Standard Edition 20), \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 OpenJDK.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/news\/vypusk-java-se-20\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2023-03-21T22:48:09+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2023-03-22T09:10:35+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Lanzamiento de Java SE 20 | ProHoster","description":"Despu\u00e9s de seis meses de desarrollo, Oracle ha lanzado la plataforma Java SE 20 (Java Platform, Standard Edition 20), utilizando como referencia la implementaci\u00f3n del proyecto abierto OpenJDK.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/news\/vypusk-java-se-20","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0412\u044b\u043f\u0443\u0441\u043a Java SE 20 | ProHoster","og:description":"\u041f\u043e\u0441\u043b\u0435 \u0448\u0435\u0441\u0442\u0438 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Oracle \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 Java SE 20 (Java Platform, Standard Edition 20), \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 OpenJDK.","og:url":"https:\/\/prohoster.info\/es\/blog\/news\/vypusk-java-se-20","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2023-03-21T22:48:09+00:00","article:modified_time":"2023-03-22T09:10:35+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":[],"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/107370","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=107370"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/107370\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=107370"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=107370"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=107370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}