{"id":6090,"date":"2021-09-28T14:31:20","date_gmt":"2021-09-28T14:31:20","guid":{"rendered":"https:\/\/thorsten.qodeinteractive.com\/?p=6090"},"modified":"2022-04-13T01:51:21","modified_gmt":"2022-04-13T01:51:21","slug":"the-great-innovators","status":"publish","type":"post","link":"https:\/\/proskillsasia.com\/es\/the-great-innovators\/","title":{"rendered":"Los JEP entregados en Java 17 van desde nuevas funciones de lenguaje hasta mejoras para bibliotecas principales, vistas previas e incubadoras."},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"6090\" class=\"elementor elementor-6090\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4334ad5 elementor-section-boxed elementor-section-height-default elementor-section-height-default qodef-elementor-content-no\" data-id=\"4334ad5\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7a10102\" data-id=\"7a10102\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f1c6ad9 elementor-widget elementor-widget-text-editor\" data-id=\"f1c6ad9\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.15.0 - 20-08-2023 *\/\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\t<p>Hay algo en Java 17 para todos. \u00bfQuieres nuevas funciones de idioma? Consulte las clases selladas y la vista previa de coincidencia de patrones para\u00a0<code>cambiar<\/code>. \u00bfBusca una mayor seguridad? JDK 17 ofrece filtros de deserializaci\u00f3n espec\u00edficos del contexto. \u00bfTe importan las nuevas plataformas? Ahora hay una versi\u00f3n del JDK para Mac de 64 bits con la arquitectura ARM AArch64. \u00bfQu\u00e9 tal a\u00f1os de estabilidad? Java SE 17 es una versi\u00f3n de soporte a largo plazo (LTS), al igual que Java 11 y Java 8.<\/p><p>Oficialmente, el cumplea\u00f1os de Java 17 (es decir, cuando est\u00e1 disponible en general) es el 14 de septiembre de 2021, pero sus 14 JEP han sido visibles, por supuesto, durante meses. Los desarrolladores han estado jugando con el c\u00f3digo fuente y ejecutando los binarios, y muchos han contribuido con comentarios, informes de errores y sugerencias.<\/p><p>Para obtener detalles t\u00e9cnicos sobre Java 17 y cada uno de sus JEP, consulte los siguientes recursos:<\/p><ul class=\"obullets\"><li><a href=\"https:\/\/blogs.oracle.com\/java\/post\/announcing-java17\" target=\"_blank\" rel=\"noopener\">La publicaci\u00f3n oficial del blog de Java: La llegada de Java 17<\/a><\/li><li><a href=\"https:\/\/www.oracle.com\/news\/announcement\/oracle-releases-java-17-2021-09-14\/\" target=\"_blank\" rel=\"noopener\">El comunicado de prensa oficial de Oracle<\/a><\/li><li><a href=\"https:\/\/openjdk.java.net\/projects\/jdk\/17\/\" target=\"_blank\" rel=\"noopener\">La p\u00e1gina de recursos de JDK 17, que enlaza con los JEP<\/a><\/li><li><a href=\"https:\/\/jdk.java.net\/17\/release-notes\" target=\"_blank\" rel=\"noopener\">Las notas de la versi\u00f3n de JDK 17<\/a><\/li><li><a href=\"https:\/\/openjdk.java.net\/projects\/jdk\/17\/spec\/\" target=\"_blank\" rel=\"noopener\">Plataforma Java SE 17 (JSR 392)<\/a><\/li><li><a href=\"https:\/\/cr.openjdk.java.net\/~iris\/se\/17\/latestSpec\/java-se-17-jls-fr-diffs.pdf\" target=\"_blank\" rel=\"noopener\"><em>La especificaci\u00f3n del lenguaje Java<\/em>, Java SE 17 edici\u00f3n<\/a><\/li><li><a href=\"https:\/\/cr.openjdk.java.net\/~iris\/se\/17\/latestSpec\/java-se-17-jvms-fr-diffs.pdf\" target=\"_blank\" rel=\"noopener\"><em>La especificaci\u00f3n de la m\u00e1quina virtual de Java<\/em>, Java SE 17 edici\u00f3n<\/a><\/li><li><a href=\"https:\/\/cr.openjdk.java.net\/~iris\/se\/17\/latestSpec\/\/api\/index.html\" target=\"_blank\" rel=\"noopener\">Especificaci\u00f3n de la API de Java 17<\/a><\/li><li><a href=\"https:\/\/cr.openjdk.java.net\/~iris\/se\/17\/latestSpec\/apidiffs\/overview-summary.html\" target=\"_blank\" rel=\"noopener\">Diferencias de API entre Java SE 16 y Java SE 17<\/a><\/li><\/ul><p>Java 17 tambi\u00e9n es una versi\u00f3n LTS, lo que significa que puede implementarlo sabiendo que se mantendr\u00e1 a trav\u00e9s de parches, correcciones y mejoras de rendimiento durante muchos a\u00f1os. Puedes ver m\u00e1s sobre eso en el art\u00edculo de Donald Smith \u201c<a href=\"https:\/\/blogs.oracle.com\/javamagazine\/post\/java-long-term-support-lts\" target=\"_blank\" rel=\"noopener\">El arte del soporte a largo plazo y lo que significa LTS para el ecosistema de Java<\/a>.\u201d<\/p><p>A continuaci\u00f3n, exploro cuatro de los JEP que probablemente sean m\u00e1s relevantes para los programadores y arquitectos de desarrollo de aplicaciones que est\u00e1n considerando una migraci\u00f3n desde Java 16 o Java 11, y tambi\u00e9n analizar\u00e9 otras caracter\u00edsticas evolutivas.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c1cc7b2 elementor-widget elementor-widget-text-editor\" data-id=\"c1cc7b2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1203a88 elementor-section-boxed elementor-section-height-default elementor-section-height-default qodef-elementor-content-no\" data-id=\"1203a88\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c933f6c\" data-id=\"c933f6c\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1a517a5 elementor-widget elementor-widget-text-editor\" data-id=\"1a517a5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h2>Funci\u00f3n de idioma: Clases selladas (JEP 409)<\/h2><p>Las clases selladas pueden ser la caracter\u00edstica finalizada m\u00e1s esperada en JDK 17, y fueron vistas previas en JDK 16. En resumen, las clases selladas restringen qu\u00e9 otras clases (o interfaces) pueden extenderlas. Como\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/409\" target=\"_blank\" rel=\"noopener\">JP 409<\/a>\u00a0describe, una clase o interfaz sellada puede ser extendida o implementada solo por aquellas clases e interfaces autorizadas para hacerlo. Una clase se sella aplicando el\u00a0<code>sellado<\/code>\u00a0modificador de su declaraci\u00f3n. Entonces, despu\u00e9s de cualquier\u00a0<code>extiende<\/code>\u00a0y\u00a0<code>implementos<\/code>\u00a0cl\u00e1usulas, la\u00a0<code>permisos<\/code>\u00a0La cl\u00e1usula especifica las clases que pueden extender la clase sellada. Si a esas clases no se les permite expresamente hacer cambios, no pueden hacer cambios.<\/p><p>\u00bfPor qu\u00e9 deber\u00eda importarte? Seg\u00fan Aurelio Garc\u00eda-Ribeyro, director de administraci\u00f3n de productos de Java SE, &quot;las clases selladas me permiten crear un conjunto de opciones que s\u00e9 que es finito, y eso simplifica el c\u00f3digo porque puedo tratar las clases como si fueran enumeraciones&quot;.<\/p><p>Tener clases selladas, dice, elimina la preocupaci\u00f3n de que alg\u00fan otro c\u00f3digo pueda anular su c\u00f3digo o modificar su comportamiento de maneras que no puede anticipar. \u201cCrea una garant\u00eda de que nadie puede mejorar una biblioteca de una manera que rompa mi c\u00f3digo en el futuro\u201d.<\/p><h2>Actualizaci\u00f3n de la biblioteca principal: filtros de deserializaci\u00f3n espec\u00edficos del contexto (JEP 415)<\/h2><p>Los filtros de deserializaci\u00f3n espec\u00edficos del contexto se basan en una caracter\u00edstica introducida en Java 9 (ver\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/290\" target=\"_blank\" rel=\"noopener\">JEP 290: Filtrar datos de serializaci\u00f3n entrantes<\/a>). Ese antiguo JEP ofrec\u00eda filtros de deserializaci\u00f3n por flujo intercambiables y un filtro est\u00e1tico para toda la JVM. Desafortunadamente, los filtros por transmisi\u00f3n no escalaron bien y es dif\u00edcil actualizar los filtros despu\u00e9s de enviar el c\u00f3digo. Los filtros de JEP 290 tampoco pueden imponer el filtrado en las operaciones de deserializaci\u00f3n realizadas por bibliotecas de terceros en una aplicaci\u00f3n. El filtro de toda la JVM estaba limitado porque se especificaba solo una vez, al inicio, y en ocasiones era demasiado inclusivo o demasiado restrictivo.<\/p><p>La nueva funcionalidad\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/415\" target=\"_blank\" rel=\"noopener\">en JEP 415<\/a>\u00a0se presenta como una f\u00e1brica de filtros para toda la JVM. Los filtros son din\u00e1micos y espec\u00edficos del contexto. Para compatibilidad con versiones anteriores, si no se establece una f\u00e1brica de filtros, la f\u00e1brica integrada devuelve un filtro est\u00e1tico para toda la JVM, si se configur\u00f3 uno.<\/p><p>El problema, dice Garc\u00eda-Ribeyro, es que cada vez que un desarrollador creaba una canalizaci\u00f3n, ten\u00eda que definir cu\u00e1l era el filtro, incluida una lista de permitidos y una lista de denegados. Sin embargo, seg\u00fan Garc\u00eda-Ribeyro, \u201csi estoy usando una biblioteca de terceros, ellos est\u00e1n usando sus propios flujos. Pod\u00eda definir un filtro para toda la JVM, pero ten\u00eda que saber, con anticipaci\u00f3n, todo lo que la biblioteca quer\u00eda hacer. Esto requiri\u00f3 mucho trabajo\u201d.<\/p><p>Por el contrario, JEP 415 proporciona una f\u00e1brica de filtros. \u201cCon una f\u00e1brica de filtros, los filtros de deserializaci\u00f3n ahora son inmensamente m\u00e1s f\u00e1ciles de usar\u201d, dice, \u201chasta el punto de que esta es la \u00fanica caracter\u00edstica que ya estamos reelaborando y modernizando, hasta JDK 11 y JDK 8\u201d.<\/p><p>No hay un marco de tiempo establecido para que JEP 415 vuelva a la versi\u00f3n anterior de Java, pero Garc\u00eda-Ribeyro insiste: &quot;Estamos trabajando intensamente en ello&quot;.<\/p><h2>Actualizaci\u00f3n de la biblioteca principal: nueva canalizaci\u00f3n de renderizado de macOS (JEP 382)<\/h2><p>\u00bfUsas una Mac? S\u00ed, no s\u00e9 qu\u00e9 har\u00eda sin mi MacBook Pro con i7 de cuatro n\u00facleos. La nueva canalizaci\u00f3n de renderizado de macOS descrita por\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/382\" target=\"_blank\" rel=\"noopener\">JPY 382<\/a>\u00a0es bastante simple: aleja los gr\u00e1ficos 2D de la JVM del uso de la API Apple OpenGL en desuso a la nueva\u00a0<a href=\"https:\/\/developer.apple.com\/metal\/\" target=\"_blank\" rel=\"noopener\">API de metal de Apple<\/a>. Por supuesto, si est\u00e1 utilizando Java para cargas de trabajo de back-end, es probable que esto no le importe.<\/p><p><a href=\"https:\/\/developer.apple.com\/documentation\/macos-release-notes\/macos-mojave-10_14-release-notes?preferredLanguage=occ#3035786\" target=\"_blank\" rel=\"noopener\">Apple comenz\u00f3 a eliminar OpenGL en macOS Mojave 10.14<\/a>, advirtiendo: \u201cLas API en los marcos OpenGL y OpenCL est\u00e1n obsoletas y permanecen presentes por motivos de compatibilidad. Haz la transici\u00f3n a Metal si tu aplicaci\u00f3n usa OpenGL u OpenCL\u201d.<\/p><p>Este cambio se aplica a las Mac basadas en Intel y ARM. Este es un cambio oculto. Como dice la documentaci\u00f3n de JEP 382, \u201cLos cambios se limitan al c\u00f3digo espec\u00edfico de macOS e incluso all\u00ed solo se actualiza una cantidad m\u00ednima de c\u00f3digo compartido entre Metal y OpenGL. No introdujimos nuevas API de Java, ni cambiamos ninguna API existente\u201d.<\/p><p>La documentaci\u00f3n JEP 382 se\u00f1ala adem\u00e1s: \u201cApple afirma que el marco Metal, su reemplazo para OpenGL, tiene un rendimiento superior. Para la API Java 2D, este suele ser el caso con algunas excepciones\u201d.<\/p><p>Por ahora, la JVM de Java 17 usar\u00e1 de manera predeterminada OpenGL; usar\u00e1 Metal solo si OpenGL no est\u00e1 presente o si el usuario activa un interruptor de l\u00ednea de comandos. Garc\u00eda-Ribeyro pide, sin embargo, que los usuarios de Mac prueben el nuevo c\u00f3digo. \u201cQueremos que active esta nueva canalizaci\u00f3n de renderizado. Deber\u00eda ser m\u00e1s r\u00e1pido que, o al menos igual, el rendimiento de gr\u00e1ficos existente en Mac\u201d.<\/p><h2>Vista previa: Coincidencia de patrones para interruptor (JEP 406)<\/h2><p>Probablemente he o\u00eddo m\u00e1s sobre\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/406\" target=\"_blank\" rel=\"noopener\">coincidencia de patrones para\u00a0<code>cambiar<\/code>\u00a0(JE 406)<\/a>\u00a0que cualquier otra funci\u00f3n de JDK 17, y Garc\u00eda-Ribeyro tambi\u00e9n est\u00e1 entusiasmado con ella. \u201cEsta caracter\u00edstica hace que Java sea mejor para todos\u201d, dice, \u201cy en un par de lanzamientos, se convertir\u00e1 en parte del est\u00e1ndar Java\u201d.<\/p><p>Este PEC se basa en el trabajo de\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/394\" target=\"_blank\" rel=\"noopener\">coincidencia de patrones para\u00a0<code>en vez de<\/code>\u00a0(JEP 394)<\/a>, que se finaliz\u00f3 para JDK 16. La nueva caracter\u00edstica ofrece dos grandes beneficios.<\/p><ul class=\"obullets\"><li>Hace\u00a0<code>cambiar<\/code>\u00a0declaraciones mucho m\u00e1s programables y flexibles al permitir que aparezcan patrones en\u00a0<code>caso<\/code>\u00a0etiquetas. Para citar la documentaci\u00f3n de la JEP, \u201cSolo se puede\u00a0<code>cambiar<\/code>\u00a0en valores de unos pocos tipos: tipos num\u00e9ricos, tipos de enumeraci\u00f3n y\u00a0<code>Cuerda<\/code>\u00a0- y solo puede probar la igualdad exacta contra constantes. Podr\u00edamos querer usar patrones para probar la misma variable contra un n\u00famero de posibilidades, tomando una acci\u00f3n espec\u00edfica en cada una, pero dado que el\u00a0<code>cambiar<\/code>\u00a0no admite eso, terminamos con una cadena de\u00a0<code>si... m\u00e1s<\/code>\u00a0pruebas.\u201d<\/li><li>Proporciona un mecanismo m\u00e1s elegante (y f\u00e1cil de usar para desarrolladores) para manejar condiciones nulas. De nuevo, para citar: \u201cTradicionalmente,\u00a0<code>cambiar<\/code>\u00a0declaraciones y expresiones lanzan\u00a0<code>Excepci\u00f3n de puntero nulo<\/code>\u00a0si la expresi\u00f3n del selector se eval\u00faa como nula, entonces la prueba de nula debe realizarse fuera del interruptor... Esto era razonable cuando\u00a0<code>cambiar<\/code>\u00a0admite s\u00f3lo unos pocos tipos de referencia. Sin embargo, si\u00a0<code>cambiar<\/code>\u00a0permite una expresi\u00f3n de selector de cualquier tipo, y las etiquetas de casos pueden tener patrones de tipo, entonces la prueba nula independiente se siente como una distinci\u00f3n arbitraria, e invita a una repetici\u00f3n innecesaria y a la oportunidad de error\u201d.<\/li><\/ul><p>Espero que la mayor\u00eda de los desarrolladores descubran que cuando intentan la coincidencia de patrones para\u00a0<code>cambiar<\/code>, dir\u00e1n: &quot;\u00bfD\u00f3nde has estado toda mi vida?&quot;<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-241583c elementor-section-boxed elementor-section-height-default elementor-section-height-default qodef-elementor-content-no\" data-id=\"241583c\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-127bea7\" data-id=\"127bea7\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d22572f elementor-widget__width-initial elementor-widget elementor-widget-thorsten_core_single_image\" data-id=\"d22572f\" data-element_type=\"widget\" data-widget_type=\"thorsten_core_single_image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"qodef-shortcode qodef-m  qodef-single-image qodef-layout--default  qodef-si-main-appear-animation--no qodef-si-additional-appear-animation--no qodef-appear-animation--left\">\n\t<div class=\"qodef-m-image\">\n\t\t\t<img width=\"800\" height=\"883\" src=\"https:\/\/proskillsasia.com\/wp-content\/uploads\/2021\/05\/blog-single-img-1.jpg\" class=\"attachment-full size-full\" alt=\"d\" decoding=\"async\" srcset=\"https:\/\/proskillsasia.com\/wp-content\/uploads\/2021\/05\/blog-single-img-1.jpg 800w, https:\/\/proskillsasia.com\/wp-content\/uploads\/2021\/05\/blog-single-img-1-600x662.jpg 600w, https:\/\/proskillsasia.com\/wp-content\/uploads\/2021\/05\/blog-single-img-1-272x300.jpg 272w, https:\/\/proskillsasia.com\/wp-content\/uploads\/2021\/05\/blog-single-img-1-768x848.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t<\/div>\n\t<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-b88d971\" data-id=\"b88d971\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-391f62a elementor-widget__width-initial elementor-widget elementor-widget-thorsten_core_single_image\" data-id=\"391f62a\" data-element_type=\"widget\" data-widget_type=\"thorsten_core_single_image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<div class=\"qodef-shortcode qodef-m  qodef-single-image qodef-layout--default  qodef-si-main-appear-animation--no qodef-si-additional-appear-animation--no qodef-appear-animation--left\">\n\t<div class=\"qodef-m-image\">\n\t\t\t<img width=\"800\" height=\"883\" src=\"https:\/\/proskillsasia.com\/wp-content\/uploads\/2021\/05\/blog-single-img-2.jpg\" class=\"attachment-full size-full\" alt=\"d\" decoding=\"async\" srcset=\"https:\/\/proskillsasia.com\/wp-content\/uploads\/2021\/05\/blog-single-img-2.jpg 800w, https:\/\/proskillsasia.com\/wp-content\/uploads\/2021\/05\/blog-single-img-2-600x662.jpg 600w, https:\/\/proskillsasia.com\/wp-content\/uploads\/2021\/05\/blog-single-img-2-272x300.jpg 272w, https:\/\/proskillsasia.com\/wp-content\/uploads\/2021\/05\/blog-single-img-2-768x848.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t<\/div>\n\t<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6b5ba9f elementor-section-boxed elementor-section-height-default elementor-section-height-default qodef-elementor-content-no\" data-id=\"6b5ba9f\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f69b92a\" data-id=\"f69b92a\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f9e5338 elementor-widget elementor-widget-text-editor\" data-id=\"f9e5338\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h2>Otras cosas nuevas en Java 17<\/h2><p>Hay una verdadera cornucopia de nuevas funcionalidades en Java 17. Aqu\u00ed hay algunos elementos que vale la pena investigar.<\/p><ul class=\"obullets\"><li>La funci\u00f3n externa y la API de memoria, que ayudan a invocar c\u00f3digo y acceder a recursos &quot;extranjeros&quot; fuera de la JVM, ahora se est\u00e1n incubando. (Ver\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/412\" target=\"_blank\" rel=\"noopener\">JP 412<\/a>.)<\/li><li>Java ahora tiene mejores generadores de n\u00fameros pseudoaleatorios. (Ver\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/356\" target=\"_blank\" rel=\"noopener\">JPY 356<\/a>.)<\/li><li>Java tiene nuevas utilidades para trabajar con valores hexadecimales. (Ver\u00a0<a href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8251989\" target=\"_blank\" rel=\"noopener\">JDK-8251989<\/a>.)<\/li><li>El valor predeterminado para los protocolos de enlace de seguridad en JDK 17 es TLS 1.3; las versiones anteriores de Java usaban TLS 1.2. (Ver\u00a0<a href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8217633\" target=\"_blank\" rel=\"noopener\">JDK-8217633<\/a>.)<\/li><li>Hay un puerto Java para macOS en la arquitectura AArm64. (Ver\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/391\" target=\"_blank\" rel=\"noopener\">JP 391<\/a>.)<\/li><\/ul><p>Tambi\u00e9n hay depreciaciones y eliminaciones, incluidas las siguientes:<\/p><ul class=\"obullets\"><li>El acceso externo a los componentes internos de Java se elimin\u00f3 mediante encapsulaci\u00f3n, con algunas excepciones, como\u00a0<code>sol.misc.inseguro<\/code>. (Ver\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/403\" target=\"_blank\" rel=\"noopener\">JP 403<\/a>.)<\/li><li>Los compiladores AOT y JIT se han eliminado de HotSpot JVM. (Ver\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/410\" target=\"_blank\" rel=\"noopener\">JP 410<\/a>.)<\/li><li>La Applet API est\u00e1 obsoleta para su eliminaci\u00f3n. (Ver\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/398\" target=\"_blank\" rel=\"noopener\">398 JPY<\/a>.)<\/li><li>El Administrador de seguridad est\u00e1 en desuso para su eliminaci\u00f3n. (Ver\u00a0<a href=\"https:\/\/openjdk.java.net\/jeps\/411\" target=\"_blank\" rel=\"noopener\">JP 411<\/a>.)<\/li><li>Los d\u00e9biles algoritmos de seguridad 3DES y RC4 en Kerberos est\u00e1n obsoletos. (Ver\u00a0<a href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8139348\" target=\"_blank\" rel=\"noopener\">JDK-8139348<\/a>.)<\/li><li>El mecanismo de f\u00e1brica de implementaci\u00f3n de socket est\u00e1 en desuso. (Ver\u00a0<a href=\"https:\/\/bugs.openjdk.java.net\/browse\/JDK-8235139\" target=\"_blank\" rel=\"noopener\">JDK-8235139<\/a>.)<\/li><\/ul><p>Finalmente, hay una nueva forma de descargar la revisi\u00f3n actual de Java 17 a trav\u00e9s de un enlace est\u00e1tico. En el pasado, cada versi\u00f3n incremental de lanzamiento de punto de un JDK ten\u00eda su propia URL, lo que dificultaba incluir mediante programaci\u00f3n el \u00faltimo lanzamiento de punto en un script de compilaci\u00f3n.<\/p><p>\u201cAhora le proporcionaremos una URL permanente, para que pueda escribir un script que diga: &#039;Obtenga la \u00faltima versi\u00f3n de JDK 17&#039;\u201d, explica Garc\u00eda-Ribeyro. \u201cIncluso tendremos un archivo Docker de muestra que garantizar\u00e1 que cada vez que construyas, obtenga la \u00faltima versi\u00f3n de JDK 17 para ti\u201d.<\/p><h2>Conclusi\u00f3n<\/h2><p>No se puede juzgar un libro por su portada, y no se puede juzgar una versi\u00f3n de Java contando sus JEP. Los cambios en Java 17 son significativos en comparaci\u00f3n con Java 16 y, como versi\u00f3n LTS, la plataforma Java 17 muestra una evoluci\u00f3n significativa con respecto a Java 11 o Java 8. Con funciones de lenguaje adicionales, mejoras en el tiempo de ejecuci\u00f3n, vistas previas e incubadoras, y literalmente miles de arreglos m\u00e1s peque\u00f1os. , Java 17 est\u00e1 listo para ser el nuevo est\u00e1ndar de la plataforma Java.<\/p><h2>Excavar m\u00e1s hondo<\/h2><ul class=\"obullets\"><li><a class=\"o-hf\" href=\"https:\/\/blogs.oracle.com\/javamagazine\/post\/java-long-term-support-lts\" target=\"_blank\" rel=\"noopener\">El arte del soporte a largo plazo y lo que significa LTS para el ecosistema de Java<\/a><\/li><li><a href=\"https:\/\/blogs.oracle.com\/javamagazine\/hidden-gems-jdk16-jdk17-jep\" target=\"_blank\" rel=\"noopener\">Las gemas ocultas en Java 16 y Java 17<\/a><\/li><li><a href=\"https:\/\/blogs.oracle.com\/javamagazine\/java-architects-loom-panama-valhalla\" target=\"_blank\" rel=\"noopener\">\u00bfQu\u00e9 est\u00e1n construyendo y por qu\u00e9? 6 preguntas para los arquitectos Java<\/a><\/li><li><a href=\"https:\/\/blogs.oracle.com\/javamagazine\/inside-the-language-sealed-types\" target=\"_blank\" rel=\"noopener\">Dentro del lenguaje: Tipos sellados<\/a><\/li><li><a href=\"https:\/\/blogs.oracle.com\/javamagazine\/java-hotspot-jvm-switches-jdk11-jdk17\" target=\"_blank\" rel=\"noopener\">Las mejores opciones y conmutadores HotSpot JVM para Java 11 a Java 17<\/a><\/li><li><a href=\"https:\/\/blogs.oracle.com\/javamagazine\/java-runtime-encapsulation-internals\" target=\"_blank\" rel=\"noopener\">Un vistazo a Java 17: Encapsulando los componentes internos del tiempo de ejecuci\u00f3n de Java<\/a><\/li><\/ul><p>\u00a0<\/p><p>Fuente: https:\/\/blogs.oracle.com\/post\/java-jdk-17-generally-disponible-v2<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Lorem ipsum dolor sit amet, sea ei diam ocurreret. Atqui clita eu eos, in interesset mediocritatem sit. Saperet commune invenire at per, ne consul eirmod scaevola ius, case scripta id vis. Ad cum magna deleniti. Nihil antiopam et mei, an sea facer mnesarchum, sea ne soluta appetere tacimates. Ad soluta ignota corrumpit eos. Has patrioque delicatissimi ut, per veritus alienum te, nec choro soluta fabulas in. Quod sensibus est id<\/p>","protected":false},"author":1,"featured_media":17013,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18],"tags":[22],"_links":{"self":[{"href":"https:\/\/proskillsasia.com\/es\/wp-json\/wp\/v2\/posts\/6090"}],"collection":[{"href":"https:\/\/proskillsasia.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/proskillsasia.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/proskillsasia.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/proskillsasia.com\/es\/wp-json\/wp\/v2\/comments?post=6090"}],"version-history":[{"count":5,"href":"https:\/\/proskillsasia.com\/es\/wp-json\/wp\/v2\/posts\/6090\/revisions"}],"predecessor-version":[{"id":17014,"href":"https:\/\/proskillsasia.com\/es\/wp-json\/wp\/v2\/posts\/6090\/revisions\/17014"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/proskillsasia.com\/es\/wp-json\/wp\/v2\/media\/17013"}],"wp:attachment":[{"href":"https:\/\/proskillsasia.com\/es\/wp-json\/wp\/v2\/media?parent=6090"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/proskillsasia.com\/es\/wp-json\/wp\/v2\/categories?post=6090"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/proskillsasia.com\/es\/wp-json\/wp\/v2\/tags?post=6090"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}