[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"package:cask:oracle-jdk:es":3,"releases:stats:cask:oracle-jdk:es":466,"related:cask:oracle-jdk:es":467,"markdown:3:2397:ahl3rn":519},{"accentColor":4,"artifacts":5,"autoUpdates":24,"categories":25,"caveats":32,"conflictsWith":33,"dependsOn":36,"deprecated":24,"description":44,"descriptionEn":45,"developer":46,"disabled":24,"displayName":47,"downloadSha256":48,"downloadSize":49,"downloadUrl":50,"editorChoice":24,"formulaeUrl":51,"homepage":52,"iconUrl":53,"installCommand":54,"installs":55,"installs30d":56,"isFont":24,"isLibrary":24,"kegOnly":24,"kind":59,"latestRelease":60,"machineTranslated":28,"name":82,"names":83,"platforms":85,"primaryCategory":444,"rank30d":445,"releaseCount":446,"releaseStats":447,"screenshots":453,"sourceLocale":75,"sourceUrl":454,"summary":455,"summaryTranslation":456,"supports":458,"tags":460,"tap":465,"token":84,"version":81,"versionChangedAt":64},"#C94634",{"apps":6,"binaries":7,"entries":8,"pkgs":23},[],[],[9,16],{"declaration":10,"phase":14,"sources":15,"type":14},{"uninstall":11},[12],{"pkgutil":13},"com.oracle.jdk-27","uninstall",[],{"declaration":17,"phase":20,"sources":21,"type":22},{"pkg":18},[19],"JDK 27.pkg","install",[19],"pkg",[19],false,[26],{"icon":27,"machineTranslated":28,"name":29,"slug":30,"sourceLocale":31},"lucide:braces",true,"Lenguajes de programación y entornos de ejecución","languages","zh-CN","Installing oracle-jdk means you have AGREED to the license at:\n  https:\u002F\u002Fwww.oracle.com\u002Fdownloads\u002Flicenses\u002Fno-fee-license.html\n",{"casks":34,"formulae":35},[],[],{"arch":37,"casks":40,"formulae":41,"requirements":42},[38,39],"arm64","x86_64",[],[],{"macos":43},{},"Oracle JDK es la implementación de Oracle del kit de desarrollo de Java Standard Edition. Proporciona el entorno de ejecución de Java y las herramientas de desarrollo para crear, ejecutar, depurar y supervisar aplicaciones Java; es un entorno de ejecución para desarrolladores, no un editor de escritorio independiente para Mac.\n\n## Instalación en macOS\nOracle documenta las instalaciones tanto para Intel x64 como para Apple Silicon AArch64. El cask oracle-jdk de Homebrew instala un DMG de Oracle con número de versión que contiene un paquete JDK. El archivo predeterminado registrado es el instalador de JDK 27 para Apple Silicon. El JDK se instala en \u002FLibrary\u002FJava\u002FJavaVirtualMachines. Usa `java -version` para comprobar el entorno de ejecución predeterminado y `\u002Fusr\u002Flibexec\u002Fjava_home` para seleccionar un JDK instalado para el desarrollo desde la línea de comandos.\n\n## Selección de versión y actualizaciones\nEl cask sin número de versión sigue la versión funcional actual; no está fijado a un JDK con soporte a largo plazo. La página de descargas de Oracle identifica JDK 27 como la última versión funcional y JDK 25 como su línea LTS más reciente. Los instaladores solo permiten una actualización de la misma familia de versiones funcionales a la vez: instalar una actualización más reciente sustituye a la anterior. Oracle recomienda detener los procesos de Java antes de sustituir una instalación del JDK.\n\n## Licencias\nHomebrew enlaza a los términos y condiciones sin coste de Oracle. Oracle indica que los binarios de JDK 27 pueden utilizarse en producción y redistribuirse sin coste bajo estos términos hasta marzo de 2027, cuando JDK 28 sustituya a esta versión. Las condiciones de licencia y soporte varían según la línea de versiones; no asumas que las versiones anteriores de Oracle JDK tienen las mismas condiciones de uso en producción.\n\n## Recursos visuales\nEste paquete instala un JDK, no una aplicación con una ventana de editor independiente. La guía oficial de instalación en macOS documenta los pasos del instalador y los comandos de terminal; no se ha identificado ninguna captura de pantalla auténtica de una aplicación JDK ni un icono de aplicación rasterizado distintivo.\n\nFuentes:\n- https:\u002F\u002Fwww.oracle.com\u002Fjava\u002Ftechnologies\u002Fdownloads\u002F\n- https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F27\u002Finstall\u002Finstallation-jdk-macos.html\n- https:\u002F\u002Fformulae.brew.sh\u002Fapi\u002Fcask\u002Foracle-jdk.json\n","JDK from Oracle","Oracle","Oracle JDK","26b9066743fa14737ceea7edca42f7fde40651c64b8e1085865795bc588ca7e0",212297917,"https:\u002F\u002Fdownload.oracle.com\u002Fjava\u002F27\u002Farchive\u002Fjdk-27_macos-aarch64_bin.dmg","https:\u002F\u002Fformulae.brew.sh\u002Fcask\u002Foracle-jdk","https:\u002F\u002Fwww.oracle.com\u002Fjava\u002Ftechnologies\u002Fdownloads\u002F","https:\u002F\u002Fcdn.opennavo.com\u002Ficons\u002Fuploads\u002Fa6b222ecd372\u002F20e77624c7c1-256.png","brew install --cask oracle-jdk",{"d30":56,"d365":57,"d90":58},146,6233,703,"cask",{"bodyMarkdown":61,"brewCommittedAt":62,"hasNotes":28,"id":63,"isLatest":28,"isPrerelease":24,"machineTranslated":24,"publishedAt":64,"sections":65,"source":74,"sourceLocale":75,"summary":76,"title":77,"translation":78,"version":81},"Notas de la versión del Java Development Kit 27\nNotas de la versión del JDK 27\nFecha de publicación: 15 de septiembre de 2026\nEstas notas de la versión incluyen las siguientes secciones:\nJava™ SE Development Kit 27\nPrincipales nuevas funcionalidades\nNuevas características\nCaracterísticas y opciones eliminadas\nProblemas importantes resueltos\nOtras notas\nDiferencias entre Oracle JDK y OpenJDK\nJava™ SE Development Kit 27\nEstas notas describen cambios importantes, mejoras, API y características eliminadas, API y características obsoletas y\notra información sobre JDK 27. En algunos casos, las descripciones incluyen enlaces a información detallada adicional\nsobre un problema o un cambio. Esta página no duplica las descripciones incluidas en la\nespecificación de la plataforma Java SE 27 ( JSR 402)\n,\nque proporciona información de contexto para todos los cambios de especificación y también puede identificar API y características eliminadas u obsoletas que no se describen aquí. La especificación Java SE 27 ( JSR 402) incluye enlaces a:\nAnexo 1:\nLa\nespecificación completa de la API de Java SE 27\n.\nAnexo 2:\nUna\nespecificación de API anotada\nque muestra las diferencias exactas entre Java SE 26 y Java SE 27. La información de contexto sobre estos cambios se puede\nencontrar en la lista de solicitudes de cambio de especificación aprobadas para esta versión.\nAnexo 3:\nEdiciones de Java SE 27 de\nLa especificación del lenguaje Java\ny\nLa especificación de la máquina virtual Java\n.\nLas ediciones de Java SE 27 incluyen todas las correcciones y aclaraciones realizadas desde las ediciones de Java SE 26, así\ncomo adiciones para nuevas características.\nDebe tener en cuenta el contenido de la especificación Java SE 27 ( JSR 402), además de los elementos descritos en esta página.\nLas descripciones de esta página de notas de la versión también identifican posibles problemas de compatibilidad que podría encontrar\nal migrar a JDK 27. La página\nTipos de compatibilidad\nen la wiki de OpenJDK identifica los siguientes tres tipos de posibles problemas de compatibilidad para programas Java que\npueden mencionarse en estas notas de la versión:\nCódigo fuente:\nLa compatibilidad del código fuente conserva la capacidad de compilar código fuente existente sin errores.\nBinaria:\nLa compatibilidad binaria se define en La especificación del lenguaje Java como la conservación de la capacidad de enlazar\narchivos de clase existentes sin errores.\nComportamiento:\nLa compatibilidad de comportamiento incluye la semántica del código que se ejecuta en tiempo de ejecución.\nConsulte\nCSRs aprobadas para JDK 27\npara ver la lista de CSR cerradas en JDK\n27 y la página\nRevisión de compatibilidad y especificación (CSR)\nen\nla wiki de OpenJDK para obtener información general sobre compatibilidad.\nLa cadena de versión completa de esta versión es la compilación 27+35 (donde «+» significa «compilación»). El número de versión es 27.\nDatos de IANA 2026b\nJDK 27 incluye la versión 2026b de los datos de zona horaria de IANA. Para obtener más información, consulte\nVersiones de los datos de zona horaria en los entornos de ejecución de Java\n.\nARRIBA\nPrincipales nuevas funcionalidades\n1. Lenguaje\n➜\nTipos primitivos en patrones, instanceof y switch (quinta versión preliminar)\nMejora la coincidencia de patrones al permitir tipos primitivos en todos los contextos de patrones,\ny amplía\ninstanceof\ny\nswitch\npara que funcionen con todos los tipos primitivos. Esta es una\ncaracterística del lenguaje en versión preliminar\n.\nConsulte JEP 532\n2. Bibliotecas\n➜\nConstantes diferidas (tercera versión preliminar)\nIntroduce una API para\nconstantes diferidas\n, que son objetos que contienen datos no modificables. La JVM trata las constantes diferidas como constantes verdaderas, lo que permite las mismas optimizaciones de rendimiento que se habilitan al declarar un campo\nfinal\n. Sin embargo, en comparación con los campos\nfinal\n, las constantes diferidas ofrecen más flexibilidad respecto al momento de su inicialización. Esta es una\nAPI en versión preliminar\n.\nConsulte JEP 531\n➜\nConcurrencia estructurada (séptima versión preliminar)\nSimplifica la programación concurrente al introducir una API para\nconcurrencia estructurada\n. La concurrencia estructurada trata grupos de tareas relacionadas que se ejecutan en distintos subprocesos como unidades de trabajo únicas, lo que simplifica la gestión de errores y la cancelación, mejora la fiabilidad y aumenta la observabilidad. Esta es una\nAPI en versión preliminar\n.\nConsulte JEP 533\n➜\nAPI Vector (duodécimo incubador)\nIntroduce una API para expresar cálculos vectoriales que se compilan de forma fiable, durante la ejecución,\nen instrucciones vectoriales óptimas en las CPU compatibles, logrando así\nun rendimiento superior al de los cálculos escalares equivalentes. Esta es una\nAPI\nincubadora\n.\nConsulte JEP 537\n2.1 Bibliotecas de seguridad\n➜\nIntercambio híbrido de claves poscuántico para TLS 1.3\nMejora la seguridad de las aplicaciones Java que requieren comunicación de red segura mediante la implementación de\nalgoritmos de intercambio híbrido de claves\npara TLS 1.3. Estos algoritmos protegen contra futuros ataques de computación cuántica al combinar un algoritmo resistente a la computación cuántica con uno tradicional. Las aplicaciones que usan las API de\njavax.net.ssl\nse beneficiarán de forma predeterminada de estos algoritmos mejorados, sin cambios en el código existente.\nConsulte JEP 527\n➜\nCodificaciones PEM de objetos criptográficos (tercera versión preliminar)\nIntroduce una API para codificar objetos que representan claves criptográficas, certificados y listas de revocación de certificados en el formato de transporte de uso generalizado\nPrivacy-Enhanced Mail\n(PEM), y para decodificarlos desde ese formato y volver a convertirlos en objetos. Esta es una\nAPI en versión preliminar\n.\nConsulte JEP 538\n3. Rendimiento\n➜\nEstablecer G1 como recolector de basura predeterminado en todos los entornos\nEstablece el recolector de basura Garbage-First (G1) como recolector predeterminado en todos los entornos, en lugar de solo en entornos de servidor.\nConsulte JEP 523\n➜\nEncabezados compactos de objetos de forma predeterminada\nEstablece los encabezados compactos de objetos como diseño predeterminado de encabezado de objetos en la JVM HotSpot. Los encabezados compactos de objetos reducen los encabezados de 96 bits a 64 bits en arquitecturas de 64 bits, lo que reduce el tamaño del heap, mejora la densidad de implementación y aumenta la localidad de los datos.\nConsulte JEP 534\n4. Supervisión\n➜\nRedacción de datos de JFR en el proceso\nMejora\nJDK Flight Recorder\n(JFR) para redactar los argumentos de la línea de comandos y los valores iniciales de las variables de entorno y las propiedades del sistema en las grabaciones. Redacta estos datos antes de que salgan del proceso, para evitar filtraciones de información confidencial.\nConsulte JEP 536\nARRIBA\nNuevas características\nEsta sección describe algunas de las mejoras de Java SE 27 y JDK 27. En algunos casos, las descripciones incluyen\nenlaces a información detallada adicional sobre un problema o un cambio. Las API descritas aquí se proporcionan con\nOracle JDK. Incluye una implementación completa de la plataforma Java SE 27 y API Java adicionales para\nrespaldar el desarrollo, la depuración y la supervisión de aplicaciones Java. Otra fuente de información sobre mejoras importantes\ny nuevas características de Java SE 27 y JDK 27 es la\nespecificación de la plataforma Java SE 27 ( JSR 402),\nque documenta los cambios de especificación realizados entre Java SE 26 y Java SE 27. Este documento incluye\ndescripciones de las nuevas características y mejoras que también constituyen cambios en la especificación. Las descripciones\ntambién identifican posibles problemas de compatibilidad que podría encontrar al migrar a JDK 27.\ncore-libs\u002Fjava.lang.foreign\n➜\nPermitir la inicialización del estado de ejecución antes de las llamadas descendentes a funciones externas\n(\nJDK-8378559\n)\nLa API Foreign Function and Memory ahora admite la inicialización del estado de ejecución local del subproceso antes de las llamadas descendentes. Esto complementa el mecanismo preexistente de captura del estado de llamada, que ya se puede usar para leer el estado de ejecución local del subproceso después de las llamadas descendentes. La estructura y el contenido del estado de ejecución dependen de la plataforma y se describen en\nLinker.Option.captureStateLayout()\n.\nCuando se habilita la captura del estado de llamada mediante\nLinker.Option.captureCallState(String... capturedState)\n, un segmento de memoria sirve de búfer para los datos locales del subproceso. Antes de la llamada descendente, el contenido del búfer se utiliza para inicializar los datos locales del subproceso. Inmediatamente después de la llamada descendente, los datos locales del subproceso se copian en el búfer.\nConsulte\nLinker.Option.captureCallState(String... capturedState)\nen la documentación de la API JavaDoc para obtener más información y un ejemplo de uso.\ncore-svc\u002Ftools\n➜\nSe añade un script de autocompletado de Bash para la herramienta jcmd\n(\nJDK-8357439\n)\nSe ha añadido un script de autocompletado de Bash para la herramienta de diagnóstico\njcmd\n.\nEn Linux, para habilitar el autocompletado, ejecute\nsource \u003CJDK_HOME>\u002Fconf\u002Fbash-completion\u002Fjcmd\nen el indicador de Bash. Para que esté disponible en todo el sistema, coloque el script en el directorio\n\u002Fusr\u002Fshare\u002Fbash-completion\u002Fcompletions\u002F\n.\nhotspot\u002Fjfr\n➜\nSe añade ayuda para -XX:FlightRecorderOptions\n(\nJDK-8367584\n)\nLa opción de la JVM\n-XX:FlightRecorderOptions\nse ha ampliado con una opción\nhelp\nque muestra las subopciones disponibles. Uso:\njava -XX:FlightRecorderOptions:help\nhotspot\u002Fjfr\n➜\nSe añaden las opciones -XX:FlightRecorderOptions:redact-key y redact-argument\n(\nJDK-8367584\n)\nA partir de JDK 27, JFR redacta de forma predeterminada los argumentos confidenciales de la línea de comandos y los valores iniciales de las variables de entorno y las propiedades del sistema. Puede seleccionar explícitamente la información que JFR debe redactar añadiendo filtros específicos de la aplicación con\n-XX:FlightRecorderOptions:redact-key=+\u003Cfilter>\ny\n-XX:FlightRecorderOptions:redact-argument=+\u003Cfilter>\n.\nUse\n-XX:FlightRecorderOptions:redact-key=none,redact-argument=none\npara deshabilitar los filtros de redacción predeterminados.\nConsulte\nJEP 536: Redacción de datos de JFR en el proceso\npara obtener más información.\nhotspot\u002Fruntime\n➜\n-XX:AOTMode=required como alias de -XX:AOTMode=on\n(\nJDK-8374348\n)\nSe ha añadido la opción de la JVM\n-XX:AOTMode=required\ncomo alias de\n-XX:AOTMode=on\npara aclarar el propósito y los efectos de esta opción.\nDebe usarse\n-XX:AOTMode=required\nen lugar de\n-XX:AOTMode=on\n, que con el tiempo quedará obsoleta y se eliminará.\nhotspot\u002Fsvc\n➜\nEl nuevo comando jcmd VM.security_properties muestra las propiedades de seguridad activas durante la ejecución\n(\nJDK-8364182\n)\nSe ha añadido un nuevo comando de diagnóstico,\nVM.security_properties\n, a la herramienta\njcmd\n. Este comando muestra el conjunto actual de propiedades de seguridad de Java de un proceso JVM en ejecución, de forma similar al comando existente\nVM.system_properties\npara las propiedades del sistema. Esta mejora proporciona una forma sencilla y programable de diagnosticar y solucionar problemas de configuración relacionados con la seguridad en entornos de producción y desarrollo.\nhotspot\u002Fsvc\n➜\nVM.info y los registros hs_err_pid ahora indican los descriptores de archivos abiertos actuales\n(\nJDK-8359706\n)\nLa salida del comando de diagnóstico\njcmd\nVM.info\ny los registros de errores fatales de HotSpot (\nhs_err_pid\n) ahora incluyen el número actual de descriptores de archivos abiertos para el proceso Java en ejecución. En las plataformas compatibles, la nueva salida muestra el recuento activo de descriptores de archivos en la sección\nSYSTEM\n(por ejemplo,\nOpen File Descriptors: 52\n). Esta mejora ayuda a diagnosticar y solucionar problemas de agotamiento de recursos y de\nToo many open files\nen plataformas UNIX.\nTenga en cuenta que el límite máximo de descriptores de archivos del proceso ya aparece en la misma salida con el valor\nNOFILE\n(por ejemplo,\nNOFILE 10240\u002Finfinity\n).\nsecurity-libs\u002Fjava.security\n➜\nSe añade la propiedad de seguridad jdk.security.password.allowSystemIn para impedir que la plataforma Java lea de la entrada estándar\n(\nJDK-8368692\n)\nSe ha añadido una nueva propiedad de seguridad,\njdk.security.password.allowSystemIn\n, para controlar si la plataforma Java puede leer contraseñas de la entrada estándar cuando no hay una consola disponible. Esto suele ocurrir cuando la entrada estándar se redirige desde un archivo o se conecta a una canalización entre procesos. Si la propiedad se establece en\nfalse\n, intentar leer contraseñas de la entrada estándar sin una consola provoca una excepción. El valor predeterminado es\ntrue\n. Este valor predeterminado podría cambiar en una versión futura.\nLa propiedad se aplica a herramientas que solicitan contraseñas, como\nkeytool\ny\njarsigner\n, así como a los objetos\nPasswordCallback\nprocesados por\nTextCallbackHandler\n.\nsecurity-libs\u002Fjava.security\n➜\nNuevos métodos de KeyStore y KeyStoreSpi para obtener la fecha de creación como Instant\n(\nJDK-8374808\n)\nSe han añadido nuevos métodos a las clases\nKeyStore\ny\nKeyStoreSpi\nque devuelven las fechas de creación de las entradas de alias como valores\njava.time.Instant\n:\nKeyStore.getCreationInstant\ny\nKeyStoreSpi.engineGetCreationInstant\n.\nsecurity-libs\u002Fjava.security\n➜\nSe añade compatibilidad con las codificaciones más recientes de claves privadas ML-KEM y ML-DSA\n(\nJDK-8347938\n)\nAhora, el JDK codifica las claves privadas ML-KEM y ML-DSA en formato PKCS #8 mediante los formatos CHOICE codificados en DER de ASN.1 definidos en\nSección 6, «Formato de clave privada» de RFC 9935 y sección 6, «Formato de clave privada» de RFC 9881. Dos nuevas propiedades de seguridad, jdk.mlkem.pkcs8.encoding y jdk.mldsa.pkcs8.encoding, controlan la codificación utilizada al generar claves nuevas con KeyPairGenerator o al traducir claves con KeyFactory. Los valores válidos son seed, expandedKey y both (sin distinguir entre mayúsculas y minúsculas). Si también se especifica una propiedad del sistema con el mismo nombre, esta prevalece sobre el valor de la propiedad de seguridad. Los tres formatos son compatibles al decodificar claves privadas codificadas previamente con KeyFactory.\nCuando estos algoritmos se introdujeron en JDK 24, el formato de codificación equivalía al valor expandedKey. Esta versión cambia el valor predeterminado a seed. Como resultado, las claves privadas ML-KEM y ML-DSA generadas por esta versión del JDK no se aceptarán de forma predeterminada en versiones anteriores, aunque esta versión sí puede leer las claves generadas por versiones anteriores. Para permitir que versiones anteriores de JDK acepten las claves privadas ML-KEM y ML-DSA generadas por esta versión, establezca la propiedad jdk.mlkem.pkcs8.encoding o jdk.mldsa.pkcs8.encoding (la que corresponda a su caso de uso) en expandedKey y utilice KeyFactory.translateKey para convertir la clave al formato anterior.\nsecurity-libs\u002Fjavax.net.ssl\n➜\nSe añade compatibilidad con la compresión de certificados TLS ZLIB\n(\nJDK-8372526\n)\nEl JDK ahora admite la compresión de certificados TLS 1.3 con el algoritmo de compresión zlib, según se especifica en RFC 8879. Esta función puede reducir el tamaño de las cadenas de certificados intercambiadas durante los protocolos de enlace TLS. Los algoritmos de compresión brotli y zstd no son compatibles.\nLa compresión de certificados TLS está habilitada de forma predeterminada. Para deshabilitarla, añada la extensión compress_certificate a las propiedades del sistema jdk.tls.client.disableExtensions y jdk.tls.server.disableExtensions. Por ejemplo, las siguientes opciones de línea de comandos de Java deshabilitan la compresión de certificados TLS tanto para el cliente como para el servidor:\n-Djdk.tls.client.disableExtensions=compress_certificate -Djdk.tls.server.disableExtensions=compress_certificate\nTOP\nFunciones y opciones eliminadas\nEn esta sección se describen las API, funciones y opciones eliminadas en Java SE 27 y JDK 27. Las API aquí descritas son las que proporciona Oracle JDK. Incluye una implementación completa de la plataforma Java SE 27 y API de Java adicionales para respaldar el desarrollo, la depuración y la supervisión de aplicaciones Java. Otra fuente de información sobre mejoras importantes y nuevas funciones de Java SE 27 y JDK 27 es la especificación de la plataforma Java SE 27 ( JSR 402), que documenta los cambios en la especificación realizados entre Java SE 26 y Java SE 27. Este documento identifica las API y funciones eliminadas que no se describen aquí. Las descripciones siguientes también pueden señalar posibles problemas de compatibilidad que podría encontrar al migrar a JDK 27.\nConsulte CSRs aprobados para JDK 27 para ver la lista de CSR cerrados en JDK 27.\ncore-libs\u002Fjava.lang\n➜\nSe elimina el mecanismo de inicio VFORK de la implementación de Process (Linux)\n(\nJDK-8357089\n)\nEn Linux, se ha eliminado la opción de línea de comandos -Djdk.lang.Process.launchMechanism=VFORK porque el mecanismo de inicio VFORK es intrínsecamente peligroso. Los usuarios deben dejar de utilizarlo y, en su lugar, confiar en el mecanismo de inicio predeterminado POSIX_SPAWN o sustituirlo por -Djdk.lang.Process.launchMechanism=FORK.\ncore-libs\u002Fjava.util.concurrent\n➜\nSe elimina ThreadPoolExecutor.finalize()\n(\nJDK-8371748\n)\nSe ha eliminado el método finalize() de java.util.concurrent.ThreadPoolExecutor.\nThreadPoolExecutor.finalize() quedó obsoleto en JDK 9 como parte de la obsolescencia de la finalización con miras a su eliminación. Consulte JEP 421. En JDK 11 se volvió a especificar que el método «no hace nada» y en JDK 18 quedó obsoleto para su eliminación.\nLa eliminación de este método implica que el código existente que extienda ThreadPoolExecutor y sobrescriba finalize() para llamar a super.finalize() (o que llame a finalize() directamente) ahora llamará a Object.finalize(). Es posible que ese código ya no se compile porque Object.finalize() declara throws Throwable, mientras que el método ThreadPoolExecutor.finalize() eliminado no declaraba excepciones comprobadas. Se recomienda encarecidamente a los desarrolladores que dejen de usar la finalización. Sin embargo, si es necesario, el problema de compatibilidad del código fuente se puede solucionar mediante un bloque try-catch.\ncore-libs\u002Fjava.util:i18n\n➜\nEliminación de la propiedad del sistema java.locale.useOldISOCodes\n(\nJDK-8355522\n)\nSe ha eliminado la compatibilidad con la propiedad del sistema java.locale.useOldISOCodes de la clase java.util.Locale. Introducida originalmente en JDK 17, esta propiedad permitía a las aplicaciones volver a los códigos de idioma ISO 639 antiguos (iw para hebreo, ji para yidis e in para indonesio). Quedó obsoleta en JDK 25 y, desde JDK 27, especificarla no tiene efecto y genera una advertencia durante la ejecución. Se recomienda a los usuarios que aún dependan de los códigos antiguos que migren a los códigos estándar actuales: he para hebreo, yi para yidis e id para indonesio.\ncore-libs\u002Fjavax.naming\n➜\nEl proveedor de servicios LDAP del JDK ya no establece de forma predeterminada las propiedades JNDI estándar java.naming.factory.control, java.naming.factory.object y java.naming.factory.state\n(\nJDK-8296183\n)\nEl proveedor de servicios JNDI\u002FLDAP, que pertenece al módulo java.naming del JDK, ya no establecerá ningún valor predeterminado para las propiedades JNDI estándar java.naming.factory.control, java.naming.factory.object y java.naming.factory.state.\nAnteriormente, el proveedor de servicios LDAP establecía estas propiedades JNDI estándar, que especifican listas de fábricas JNDI, con los nombres de clase de clases que no pertenecían al JDK. Esas clases podían formar parte de la ruta de clases de la aplicación. Con este cambio, esas aplicaciones ya no verán esas fábricas en uso.\nSe espera que las aplicaciones que dependían de que el proveedor de servicios LDAP estableciera estas tres propiedades JNDI establezcan ellas mismas esos valores, como se describe en la sección Provider Resource Files Link icon de javax.naming.Context.\nglobalization\u002Ftranslation\n➜\nSe eliminan recursos de traducción obsoletos\n(\nJDK-8381436\n)\nSe han eliminado del repositorio de código fuente del JDK recursos localizados obsoletos.\nEl JDK incluye archivos de recursos localizados para varios componentes. Sin embargo, salvo los de inglés, japonés, alemán y chino simplificado, los demás archivos de recursos localizados no se mantienen. Con el tiempo, estos archivos dejan de estar sincronizados con sus equivalentes en inglés. Por ejemplo, en compilaciones que incluyen estos archivos de recursos sin mantenimiento, el resultado de la opción --help del lanzador java no incluiría información sobre --enable-preview en los idiomas sin mantenimiento.\nSe han eliminado estos archivos de recursos localizados. La excepción a este cambio es el módulo java.desktop, cuyos archivos de recursos localizados sin mantenimiento seguirán disponibles. Como resultado, los usuarios de compilaciones que antes mostraban mensajes en un idioma sin mantenimiento podrían verlos en inglés.\nhotspot\u002Fcompiler\n➜\nEliminación de la interfaz del compilador de la JVM (JVMCI)\n(\nJDK-8382582\n)\nLa interfaz experimental del compilador de la JVM (JVMCI) se ha eliminado en esta versión. Estos cambios incluyen la eliminación del código JVMCI de la JVM HotSpot; de los módulos jdk.internal.vm.ci, jdk.graal.compiler y jdk.graal.compiler.management; de las políticas de compilación JIT específicas de JVMCI; de las opciones de selección de funciones de configure; y de todas las opciones que contienen la cadena JVMCI, así como -XX:+UseGraalJIT.\ntools\u002Flauncher\n➜\nEliminación de las opciones -noclassgc, -noverify, -verifyremote y -Xverify:none\n(\nJDK-8373481\n)\nSe han eliminado las opciones del lanzador java -noclassgc, -noverify y -verifyremote, así como la opción de la VM HotSpot -Xverify:none, que estaba obsoleta.\nLas aplicaciones que utilizaban -noclassgc al iniciar java pueden considerar usar en su lugar la opción equivalente -Xnoclassgc. Del mismo modo, las aplicaciones que utilizaban -verifyremote pueden considerar usar -Xverify:remote.\nNo hay sustituto para las opciones -noverify o -Xverify:none, y las aplicaciones ya no deben utilizarlas.\nTOP\nProblemas importantes resueltos\ncore-libs\u002Fjava.util:i18n\n➜\nTimeZone.getDefault() devuelve un ID obsoleto en Windows (Asia\u002FCalcutta)\n(\nJDK-8377013\n)\nLa zona horaria predeterminada que devuelve TimeZone.getDefault() en Windows ahora refleja los ID más recientes de la base de datos TZ de IANA, de acuerdo con las definiciones actuales de IANA. Antes, en algunas regiones, como India, el método devolvía ID obsoletos (por ejemplo, «Asia\u002FCalcutta»), pero ahora devuelve correctamente los ID actuales (por ejemplo, «Asia\u002FKolkata»).\nhotspot\u002Fgc\n➜\nCambio de los valores predeterminados de MinHeapFreeRatio y MaxHeapFreeRatio para G1\n(\nJDK-8238686\n)\nEl recolector de basura G1 cambia los valores predeterminados de las opciones -XX:MinHeapFreeRatio y -XX:MaxHeapFreeRatio de 40 y 70 a 0 y 100, respectivamente. Como resultado, el redimensionamiento del heap de G1 debido a estas restricciones queda efectivamente deshabilitado de forma predeterminada.\nLos valores predeterminados anteriores podían provocar la ampliación o reducción del heap después de una GC completa, lo que podía ocasionar un redimensionamiento innecesario. En particular, en aplicaciones que invocan System.gc() con frecuencia, una GC completa podía cambiar el tamaño del heap debido a estas opciones, y el algoritmo habitual de dimensionamiento del heap podía deshacer inmediatamente esos cambios.\nLas aplicaciones que establezcan explícitamente -XX:MinHeapFreeRatio o -XX:MaxHeapFreeRatio conservarán el comportamiento de redimensionamiento del heap según los ajustes especificados.\nTOP\nOtras notas\nLas siguientes notas describen cambios e información adicionales sobre esta versión. En algunos casos, las descripciones siguientes incluyen enlaces a información detallada adicional sobre un problema o un cambio.\ncore-libs\u002Fjava.net\n➜\nCambio de comportamiento de HttpServer: de la coincidencia por prefijo de cadena a la coincidencia por prefijo de ruta\n(\nJDK-8272758\n)\nEl comportamiento de la implementación integrada en el JDK de com.sun.net.httpserver.HttpServer al comparar la ruta de una solicitud entrante con una ruta de HttpContext cambia de la coincidencia por prefijo de cadena a la coincidencia por prefijo de ruta. Esto significa que la ruta de la solicitud debe comenzar con la ruta del contexto y que todos los segmentos de ruta coincidentes deben ser idénticos. Por ejemplo, la ruta de contexto \u002Ffoo coincidiría con las rutas de solicitud \u002Ffoo, \u002Ffoo\u002F y \u002Ffoo\u002Fbar, pero no con \u002Ffoobar. El comportamiento anterior, la coincidencia por prefijo de cadena, se puede habilitar mediante la propiedad del sistema sun.net.httpserver.pathMatcher, que se introduce ahora. Esta propiedad y la posibilidad de restaurar el comportamiento anterior podrían eliminarse en una versión futura.\ncore-libs\u002Fjava.time\n➜\nLos formateadores ISO-8601 predefinidos admiten desplazamientos de zona cortos\n(\nJDK-8210336\n)\nLos formateadores predefinidos basados en ISO-8601 de la clase DateTimeFormatter que aceptan desplazamientos de zona (por ejemplo, ISO_DATE) ahora admiten el análisis sintáctico de desplazamientos de zona cortos. En versiones anteriores, analizar desplazamientos sin segundos ni nanosegundos (por ejemplo, +01) provocaba una DateTimeParseException con algunos formateadores ISO. Ahora todos los formateadores ISO predefinidos que aceptan desplazamientos de zona analizan correctamente estos desplazamientos.\ncore-libs\u002Fjava.util\n➜\nServiceLoader ahora lanza ServiceConfigurationError al encontrar un error de enlace\n(\nJDK-8196182\n)\nSe ha modificado ServiceLoader para que la iteración sobre los proveedores de servicios lance ahora de forma coherente ServiceConfigurationError cuando se encuentra NoClassDefFoundError u otros errores de enlace.\nTambién se lanza ServiceConfigurationError al consumir un flujo de proveedores de servicios si se encuentra un error de enlace.\ncore-libs\u002Fjava.util.jar\n➜\nGZIPInputStream restaura el comportamiento de lectura anticipada anterior a JDK 23\n(\nJDK-8385924\n)\nPara determinar si hay más miembros GZIP después del miembro actual, java.util.zip.GZIPInputStream comprueba si hay otro miembro tras leer el tráiler del miembro actual.\nEn las versiones anteriores a JDK 23, GZIPInputStream llamaba a InputStream.available() en el flujo subyacente antes de intentar leer el encabezado del siguiente miembro. JDK 23 cambió este comportamiento (consulte JDK-7036144) para omitir la llamada a available() e intentar leer directamente.\nComo este cambio introdujo problemas de compatibilidad para algunas aplicaciones, GZIPInputStream ha recuperado su comportamiento anterior a JDK 23. Vuelve a llamar a InputStream.available() antes de intentar leer el encabezado del siguiente miembro.\nSe ha añadido una nueva propiedad del sistema,\njdk.util.gzip.tryReadAheadAfterTrailer\n. Al establecer esta propiedad en\ntrue\nse restaura el comportamiento anterior a JDK 23:\nGZIPInputStream\nintenta leer el encabezado del siguiente miembro sin llamar antes a\nInputStream.available()\n. Esta propiedad está destinada a las aplicaciones que dependen de ese comportamiento.\ncore-libs\u002Fjava.util.jar\n➜\nZipOutputStream.putNextEntry ahora lanza ZipException cuando el nombre o el comentario de una entrada no se pueden codificar\n(\nJDK-8380452\n)\nZipOutputStream.putNextEntry\nahora lanza\nZipException\ncuando el nombre o la cadena de comentario de un\nZipEntry\ncontiene caracteres no asignables y no se puede codificar con el juego de caracteres de\nZipOutputStream\n.\nAntes de esta versión, un nombre no asignable hacía que\nZipOutputStream.putNextEntry\nlanzara una\nIllegalArgumentException\n. De forma similar, un comentario no asignable hacía que se lanzara una\nIllegalArgumentException\ndesde\nZipOutputStream.finish\no\nZipOutputStream.close\n.\nTodo código que capture\nIllegalArgumentException\npara este tipo de errores de formato debe actualizarse para capturar en su lugar la excepción especificada\nZipException\n.\ncore-libs\u002Fjava.util:collections\n➜\nSe lanza NullPointerException para subconjuntos vacíos de TreeMap y TreeSet obtenidos mediante Spliterator y Stream\n(\nJDK-8376698\n)\nLos subconjuntos vacíos de\nTreeMap\ny\nTreeSet\nahora lanzan\nNullPointerException\nal pasar una acción nula a\nStream.forEach\n,\nSpliterator.forEachRemaining\no\nSpliterator.tryAdvance\n. En versiones anteriores, las implementaciones de\nSpliterator\ny\nStream\npara subconjuntos de\nTreeMap\ny\nTreeSet\ndevuelven\nfalse\no finalizan normalmente si se les pasa una acción nula y el subconjunto está vacío, en lugar de lanzar\nNullPointerException\ncomo exige la especificación.\ncore-libs\u002Fjava.util:i18n\n➜\nCompatibilidad con CLDR versión 48.2\n(\nJDK-8371842\n)\nLos datos de configuración regional basados en CLDR del Consorcio Unicode se han actualizado a la versión 48.2. Además de las habituales incorporaciones de datos de configuración regional y cambios de traducción, hay cambios importantes con respecto al CLDR de origen que afectan a los formatos de fecha, hora y número:\nCLDR-19106\nFechas y horas ilegibles en zh_Hant y yue\nCLDR-13986\nfr_CH: En mi opinión, el formato debería ser CHF XXX'XXX.00\nCLDR-19280\nBC pasa al horario de verano permanente\nTenga en cuenta que los datos de configuración regional pueden cambiar en una futura versión de CLDR. Aunque no todos los cambios en estos datos afectan al JDK, los usuarios no deben dar por sentado que serán estables entre versiones. Para obtener más información, consulte las\nnotas de la versión de CLDR del Consorcio Unicode\ny busque\nhttps:\u002F\u002Funicode-org.atlassian.net\npara ver las diferencias en los datos de configuración regional.\ncore-libs\u002Fjavax.naming\n➜\nEl subproceso que entrega implementaciones de javax.naming.event.NamingEvent usará el cargador de clases del sistema como cargador de clases de contexto\n(\nJDK-8273874\n)\nEl\nThread\nque entrega eventos a las implementaciones de\njavax.naming.event.NamingListener\nregistradas con un\njavax.naming.ldap.LdapContext\ntendrá ahora su cargador de clases de contexto del subproceso (consulte\nThread.getContextClassLoader\n) establecido en el cargador de clases del sistema. Consulte\nCargadores de clases integrados en tiempo de ejecución\n.\ncore-svc\u002Fjava.lang.management\n➜\nEl volcado de subprocesos en formato JSON ahora genera como números los identificadores y recuentos de subprocesos, así como el identificador del proceso\n(\nJDK-8381002\n)\nEl volcado de subprocesos en formato JSON generado por\ncom.sun.management.HotSpotDiagnosticMXBean.dumpThreads\ny el comando\njcmd\nThread.dump_to_file\ngeneran ahora como números los valores JSON de los identificadores y recuentos de subprocesos, así como del identificador del proceso; por ejemplo,\n{ \"tid\": 3, ...  }\n. Antes, estos valores se generaban como cadenas. Puede que haya que actualizar los programas que analizan el volcado de subprocesos en formato JSON.\nComo parte de este cambio, el objeto\nthreadDump\ntiene ahora un miembro llamado\nformatVersion\npara el formato del volcado de subprocesos (con el valor 2), que se actualizará a medida que evolucione dicho formato.\ncore-svc\u002Fjava.lang.management\n➜\nEl método RuntimeMXBean.getInputArguments() ahora añade el prefijo -XX a los argumentos procedentes de un archivo de configuración\n(\nJDK-8378110\n)\nRuntimeMXBean.getInputArguments()\nahora añade el prefijo\n-XX:\na los argumentos pasados mediante un archivo de configuración.\nRuntimeMXBean.getInputArguments()\ndevuelve los argumentos pasados en la línea de comandos, así como los proporcionados mediante archivos de configuración (\n-XX:Flags=\u003Cpath>\n). Antes, los argumentos de un archivo de configuración se devolvían sin el prefijo\n-XX:\n; por ejemplo,\n+UseG1GC\n. Ahora, estos argumentos se devuelven con el prefijo\n-XX:\n; por ejemplo,\n-XX:+UseG1GC\n.\nhotspot\u002Fgc\n➜\nCambio de nombre de -XX:InitiatingHeapOccupancyPercent a -XX:G1IHOP\n(\nJDK-8227106\n)\nLa opción de línea de comandos\n-XX:InitiatingHeapOccupancyPercent\nha cambiado de nombre a\n-XX:G1IHOP\npara reflejar su uso con el recolector de basura G1.\nLa opción antigua\n-XX:InitiatingHeapOccupancyPercent\nsigue disponible por compatibilidad con versiones anteriores; este alias está ahora obsoleto.\nhotspot\u002Fjfr\n➜\nEl evento JFR jdk.SystemProcess ya no emite argumentos de línea de comandos\n(\nJDK-8384164\n)\nPara evitar la filtración de información sensible de procesos que se ejecutan en el mismo equipo,\nel evento\njdk.SystemProcess\nya no emite argumentos de línea de comandos. El identificador y el nombre del proceso siguen formando parte del evento, lo que suele bastar para solucionar problemas.\nhotspot\u002Fjfr\n➜\nEl evento JFR jdk.OldObjectSample está deshabilitado para ZGC generacional\n(\nJDK-8382740\n)\nEl evento JFR\njdk.OldObjectSample\nestá deshabilitado al usar ZGC generacional.\nEsta combinación provoca una sobrecarga de rendimiento inaceptable porque la implementación depende de referencias débiles que, en ZGC generacional, solo se procesan en la generación antigua.\nhotspot\u002Fruntime\n➜\nLos encabezados de objeto compactos están habilitados de forma predeterminada\n(\nJDK-8360700\n)\nLos encabezados de objeto compactos se introdujeron en JDK 24 mediante\nJEP 450\n. Esta función ahora está habilitada de forma predeterminada, lo que reduce la huella del montón de Java de las aplicaciones y puede mejorar el rendimiento.\nAún puede deshabilitar esta función con la opción\n-XX:-UseCompactObjectHeaders\n, cuya obsolescencia y eliminación están previstas para una versión futura.\nLos archivos CDS para la imagen del JDK,\nclasses_coh.jsa\ny\nclasses_nocoops_coh.jsa\n, ofrecen un rendimiento de inicio equivalente y están configurados con\nUseCompactObjectHeaders\nactivado de forma predeterminada. Si la función está desactivada, se proporcionan archivos CDS alternativos.\nhotspot\u002Fruntime\n➜\nLa opción UseCompressedClassPointers ahora es obsoleta\n(\nJDK-8363996\n)\nLa opción de HotSpot JVM\nUseCompressedClassPointers\nse marcó como obsoleta en JDK 25 y ahora está obsoleta en JDK 27. Si usa esta opción en la línea de comandos de Java, ya sea para utilizar el modo de punteros de clase comprimidos o el modo de punteros de clase sin comprimir, recibirá una advertencia:\nIgnoring option UseCompressedClassPointers; support was removed in 27.0\n.\nLa JVM ahora comprime siempre los punteros de clase en los objetos Java.\nhotspot\u002Fsvc-agent\n➜\nEliminación de la compatibilidad del Serviceability Agent con la impresión de MethodData y el comando printmdo\n(\nJDK-8377797\n)\nSe ha eliminado el comando\nprintmdo\ndel Serviceability Agent (SA). «printmdo» es un subcomando de la herramienta\nclhsdb\nque se usa para mostrar\nMethodData\n, información interna del compilador de la JVM.\nsecurity-libs\u002Fjava.security\n➜\nSe han añadido certificados raíz WISeKey Global GB y GC\n(\nJDK-8372351\n)\nSe han añadido los siguientes certificados raíz al almacén de confianza\ncacerts\n:\n+ WISeKey\n\n  + wisekeyglobalrootgbca\n    DN: CN=OISTE WISeKey Global Root GB CA, OU=OISTE Foundation Endorsed, O=WISeKey, C=CH\n\n+ WISeKey\n  + wisekeyglobalrootgcca\n    DN: CN=OISTE WISeKey Global Root GC CA, OU=OISTE Foundation Endorsed, O=WISeKey, C=CH\nsecurity-libs\u002Fjava.security\n➜\nConjuntos de parámetros adicionales para HSS\u002FLMS\n(\nJDK-8369917\n)\nEl algoritmo de firma HSS\u002FLMS ahora admite los conjuntos de parámetros adicionales definidos en\nRFC 9858\n, además de los definidos originalmente en\nRFC 8554\n. Estos nuevos conjuntos de parámetros pueden generar firmas más pequeñas.\nsecurity-libs\u002Fjava.security\n➜\nLimitación del tamaño de las descargas de listas de revocación de certificados (CRL)\n(JDK-8381796 (no público))\nSe ha añadido una nueva propiedad del sistema y de seguridad,\ncom.sun.security.crl.maxSize\n, para limitar la longitud máxima de una CRL descargada mediante URI indicados en la extensión del certificado CRL Distribution Points durante la validación de la ruta. El valor de estas propiedades es el tamaño, en bytes, de la CRL codificada en DER. Para protocolos que pueden devolver respuestas con varios valores, como LDAP, el umbral de tamaño corresponde a la suma de todas las CRL descargadas en una sola consulta de búsqueda. Las CRL que superen esta longitud no se procesarán durante la validación de la ruta del certificado. Este límite de tamaño no se aplica a las CRL importadas por medios ajenos a la red. Un valor negativo deshabilita este límite. Se ignorará un valor no numérico y se usará el tamaño predeterminado. El límite de tamaño predeterminado es 20 MiB. Si se establecen tanto la propiedad de seguridad como la del sistema, prevalece la propiedad del sistema. Al habilitar el registro de la ruta del certificado mediante\njava.security.debug=certpath\nse mostrará el límite de tamaño actual y se indicarán las CRL descartadas.\nsecurity-libs\u002Fjavax.crypto\n➜\nMejoras importantes de rendimiento en el acuerdo de claves X25519 y los algoritmos de firma Ed25519\n(\nJDK-8378893\n)\nEn esta versión se han optimizado las operaciones de campo de Curve25519, lo que ha producido mejoras de rendimiento notables en la generación de claves y el acuerdo de claves X25519, así como en la generación de claves y la firma Ed25519. Se midieron las siguientes mejoras:\nArquitectura AArch64\nGeneración de claves X25519: +55%\nAcuerdo de claves X25519: +51%\nNegociación TLS con X25519: reanudación: +36%\nNegociación TLS con X25519: sin reanudación: +17%\nGeneración de claves Ed25519: +48%\nFirma Ed25519: +49%\nArquitectura x86_64\nGeneración de claves X25519: +50%\nAcuerdo de claves X25519: +50%\nNegociación TLS con X25519: reanudación: +28%\nNegociación TLS con X25519: sin reanudación: +14%\nGeneración de claves Ed25519: +46%\nFirma Ed25519: +46%\nSe usaron las siguientes pruebas comparativas para medir el rendimiento:\nmicro:org.openjdk.bench.javax.crypto.full.KeyPairGeneratorBench.XDH\nmicro:org.openjdk.bench.javax.crypto.full.KeyAgreementBench.XDH\nmicro:org.openjdk.bench.javax.crypto.full.KEMBench.JSSE_DHasKEM\nmicro:org.openjdk.bench.java.security.SSLHandshake\nmicro:org.openjdk.bench.javax.crypto.full.KeyPairGeneratorBench.EdDSA\nmicro:org.openjdk.bench.javax.crypto.full.SignatureBench.EdDSA\nsecurity-libs\u002Fjavax.crypto\n➜\nMejoras importantes de rendimiento en los algoritmos ML-KEM y ML-DSA\n(\nJDK-8384353\n)\nEn esta versión se han optimizado las funciones intrínsecas SHA-3 para sistemas x86_64 compatibles con AVX-512. Los algoritmos ML-KEM y ML-DSA utilizan ampliamente SHA-3. Esto ha generado mejoras de rendimiento notables en la generación de claves, la desencapsulación y la encapsulación de ML-KEM, así como en la generación de claves, la firma y la verificación de ML-DSA, como se indica a continuación:\nAVX-512\nML-KEM\ngeneración de claves: +48%\nML-KEM\ndesencapsulación: +47%\nML-KEM\nencapsulación: +46%\nML-DSA\ngeneración de claves: +60%\nML-DSA\nfirma: +38%\nML-DSA\nverificación: +74%\nSe usaron las siguientes pruebas comparativas para medir el rendimiento:\nmicro:org.openjdk.bench.javax.crypto.full.KeyPairGeneratorBench.MLKEM\nmicro:org.openjdk.bench.javax.crypto.full.KEMBench.MLKEM\nmicro:org.openjdk.bench.javax.crypto.full.KeyPairGeneratorBench.MLDSA\nmicro:org.openjdk.bench.javax.crypto.full.SignatureBench.MLDSA\nsecurity-libs\u002Fjavax.net.ssl\n➜\nEliminación de ffdhe6144 y ffdhe8192 de la lista predeterminada de grupos con nombre TLS\n(\nJDK-8373426\n)\nSe han eliminado ffdhe6144 y ffdhe8192 de la lista predeterminada de grupos con nombre TLS, ya que casi nunca se usan en la práctica y requieren recursos adicionales del host para procesarse. Puede añadirlos a la lista predeterminada de grupos con nombre estableciendo la propiedad del sistema\njdk.tls.namedGroups\no llamando al método\nSSLParameters.setNamedGroups\nal configurar una conexión de socket TLS.\nsecurity-libs\u002Fjavax.net.ssl\n➜\nAplicación estricta de las combinaciones válidas de opciones javax.net.debug en TLS\n(\nJDK-8044609\n)\nSe ha actualizado el análisis de la propiedad del sistema\njavax.net.debug\npara el registro de depuración TLS\u002FSSL, de modo que se apliquen estrictamente las relaciones documentadas entre las opciones y las subopciones. Las subopciones, como\nverbose\n,\npacket\ny\nplaintext\n, ahora requieren sus respectivas opciones principales, y solo tienen efecto las combinaciones válidas. Las combinaciones no válidas o no compatibles se ignoran sin aviso.\nAntes, algunas subopciones podían usarse de forma independiente o en combinaciones incorrectas, en contra del diseño previsto. El mensaje de ayuda (\n-Djavax.net.debug=help\n) también se ha actualizado para reflejar con precisión todas las entradas admitidas y obsoletas.\nLos usuarios que antes dependían de combinaciones no documentadas o no válidas (por ejemplo, especificar solo\n-Djavax.net.debug=verbose\n) deberán actualizar sus configuraciones para ajustarse al uso documentado. Consulte la salida de ayuda actualizada para ver la lista vigente de opciones válidas y ejemplos de uso correcto.\nsecurity-libs\u002Fjavax.net.ssl\n➜\nEl acuerdo de claves TLS 1.3 ahora usa el algoritmo de claves genérico\n(\nJDK-8377550\n)\nEl acuerdo de claves TLS 1.3 se ha modificado para usar el algoritmo de claves\nGeneric\npara los secretos compartidos Diffie-Hellman, en lugar del algoritmo\nTlsPremasterSecret\n. Este detalle de implementación debería ser transparente para los usuarios del proveedor SunJSSE. Los usuarios de proveedores JCE que no admitan claves\nGeneric\npodrían observar fallos en los protocolos de enlace TLS 1.3, con una\nSSLHandshakeException\ny el mensaje «Could not generate secret».\nEn caso de problemas de compatibilidad, se puede restablecer el comportamiento original estableciendo la propiedad del sistema\njdk.tls.t13KeyDerivationAlgorithm\na\nTlsPremasterSecret\n.\nsecurity-libs\u002Fjavax.net.ssl\n➜\nIntercambio híbrido de claves poscuántico para TLS 1.3\n(\nJDK-8314323\n)\nSe han implementado algoritmos híbridos de intercambio de claves para TLS 1.3, que refuerzan la seguridad de las aplicaciones Java que requieren comunicaciones de red seguras. Estos algoritmos se defienden de futuros ataques de la computación cuántica combinando un algoritmo resistente a la computación cuántica con uno tradicional. Las aplicaciones que usan las API de\njavax.net.ssl\nse beneficiarán de forma predeterminada de estos algoritmos mejorados, sin necesidad de cambiar el código.\nSe admiten los tres nuevos algoritmos híbridos de intercambio de claves siguientes:\nX25519MLKEM768\n,\nSecP256r1MLKEM768\ny\nSecP384r1MLKEM1024\n. De ellos, solo\nX25519MLKEM768\nse coloca al principio de la lista predeterminada de grupos con nombre, por lo que es el grupo preferido.\nPara obtener más información, consulte\nJEP 527: Intercambio híbrido de claves poscuántico para TLS 1.3\n.\ntools\u002Fjavac\n➜\nEl lanzador de Java ya no permite heredar un método main con acceso de paquete desde otro paquete\n(\nJDK-8377004\n)\nEl lanzador\njava\nahora determina correctamente qué método\nmain\ninvocar cuando se define un método\nmain\ncon acceso de paquete en un paquete distinto al de la clase que se ejecuta. El lanzador\njava\nya no invoca ese método\nmain\n.\ntools\u002Fjavac\n➜\nEl modelo AST de las variables var se ajusta más al código fuente\n(\nJDK-8268850\n)\nLa API Compiler Tree, que modela el código fuente Java mediante árboles abstractos (AST), se ha modificado para modelar con mayor precisión las variables con tipos inferidos. Consulte\ncom.sun.source.tree.VariableTree.getType()\npara obtener más información.\ntools\u002Fjavac\n➜\nDocTrees.getElement ahora es más coherente con la API javax.lang.model\n(\nJDK-8284315\n)\nLa implementación de\nDocTrees.getElement(DocTreePath)\nse ha actualizado para ajustarse más a la API\njavax.lang.model\n. En particular, ahora el método devuelve\nnull\ncuando el argumento hace referencia a un tipo primitivo o de matriz. Antes devolvía un\nTypeElement\nno válido para los tipos primitivos y el tipo del componente para los tipos de matriz.\nPuede usar\nDocTrees.getType(DocTreePath)\npara obtener instancias válidas de\nTypeMirror\npara las instancias de\nDocTreePath\nque hacen referencia a tipos primitivos o de matriz.\ntools\u002Fjavac\n➜\nEl compilador de Java ahora rechaza correctamente los caracteres que aparecen en el código fuente después de un carácter ASCII SUB\n(\nJDK-8371873\n)\njavac\nahora aplica las reglas del JLS para los caracteres ASCII SUB finales (\nU+001A\n, control-Z) en los archivos fuente. Si aparece\nU+001A\ny le siguen otros caracteres, estos ya no se ignoran silenciosamente, sino que se tratan como entrada no válida.\ntools\u002Fjavac\n➜\nSe rechazan las anotaciones TYPE_USE en un parámetro lambda var\n(\nJDK-8371683\n)\nLas anotaciones de tipo —en particular, las que tienen\n@Target(TYPE_USE)\ny no son aplicables a variables locales ni a declaraciones de parámetros— ahora se rechazarán de forma coherente para todas las variables con tipos inferidos (es decir, las que usan\nvar\n). Esto incluye los parámetros lambda y las variables de bucles for-each.\ntools\u002Fjavadoc(tool)\n➜\nLa herramienta javadoc copia de forma predeterminada los subdirectorios de doc-files\n(\nJDK-8347112\n)\nLa herramienta\njavadoc\nahora copia recursivamente los subdirectorios de los directorios\ndoc-files\na la salida generada. La opción\n-docfilessubdirs\n, que antes se usaba para habilitar este comportamiento, ya no es necesaria y puede eliminarse en una versión futura.\nLa opción\n-excludedocfilessubdir\nahora admite\n*\ncomo argumento para excluir de la copia todos los subdirectorios de\ndoc-files\n, restableciendo así el comportamiento predeterminado anterior.\nTOP\nDiferencias entre Oracle JDK y OpenJDK\nAunque hemos declarado el objetivo de que los binarios de Oracle JDK y OpenJDK sean lo más parecidos posible, siguen existiendo varias diferencias entre ambas opciones.\nLas diferencias actuales son:\nOracle JDK ofrece «instaladores» (\nmsi\n,\nrpm\n,\ndeb\n, etc.) que no solo colocan los binarios del JDK en el sistema, sino que también contienen reglas de actualización y, en algunos casos, gestionan configuraciones comunes, como establecer variables de entorno comunes (por ejemplo, JAVA_HOME en Windows) y crear asociaciones de archivos (por ejemplo, usar\njava\npara ejecutar archivos\n.jar\n). OpenJDK solo se ofrece como archivo comprimido (\ntar.gz\no\n.zip\n).\nEl registro de uso solo está disponible en Oracle JDK.\nOracle JDK exige que los proveedores criptográficos de terceros estén firmados con un certificado de firma de código Java Cryptography Extension (JCE). OpenJDK sigue permitiendo el uso de proveedores criptográficos de terceros sin firmar.\nEl resultado de\njava -version\nes diferente. Oracle JDK devuelve java e incluye el identificador específico de Oracle. OpenJDK devuelve OpenJDK y no incluye el identificador específico de Oracle.\nOracle JDK se distribuirá bajo la licencia\nOracle No-Fee Terms and Conditions License\n. OpenJDK se distribuye bajo\nGPLv2wCP\n. Por lo tanto, los archivos de licencia incluidos con cada uno serán distintos.\nOracle JDK distribuye FreeType bajo la licencia FreeType y OpenJDK lo hace bajo GPLv2. Por lo tanto, el contenido de\n\\legal\\java.desktop\\freetype.md\nes diferente.\nOracle JDK tiene iconos de Java con una taza y vapor, mientras que OpenJDK tiene iconos de Duke.\nEl código fuente de Oracle JDK incluye «ORACLE PROPRIETARY\u002FCONFIDENTIAL. Use is subject to license terms.» El código fuente distribuido con OpenJDK se refiere, en cambio, a los términos de la licencia GPL.\n\nFuente oficial: https:\u002F\u002Fwww.oracle.com\u002Fjava\u002Ftechnologies\u002Fjavase\u002F27-relnote-issues.html\n","2026-09-15T16:50:12Z",3527,"2026-10-07T09:38:40.131182Z",[66],{"area":67,"items":68},"Funciones",[69,70,71,72,73],"Intercambio híbrido de claves poscuántico para TLS 1.3.","Encabezados de objetos compactos habilitados de forma predeterminada.","G1 pasa a ser el recolector predeterminado en todos los entornos.","JFR oculta datos sensibles antes de que salgan del proceso.","La coincidencia de patrones primitivos sigue siendo una función preliminar.","editorial","en-US","JDK 27 incorpora el intercambio híbrido de claves TLS poscuántico, encabezados de objetos compactos predeterminados, G1 como opción predeterminada universal y ocultación de datos en proceso mediante JFR.","",{"locale":79,"machineTranslated":24,"sourceLocale":75,"status":80},"es-ES","manual","27","Oracle Java Standard Edition Development Kit",[82,84],"oracle-jdk",[86,113,138,164,189,215,240,266,291,317,342,368,393,419],{"arch":39,"artifacts":87,"conflictsWith":101,"dependsOn":104,"downloadSha256":110,"downloadUrl":111,"macos":81,"requiresRosetta":24,"tag":112,"version":81},{"apps":88,"binaries":89,"entries":90,"pkgs":100},[],[],[91,96],{"declaration":92,"phase":14,"sources":95,"type":14},{"uninstall":93},[94],{"pkgutil":13},[],{"declaration":97,"phase":20,"sources":99,"type":22},{"pkg":98},[19],[19],[19],{"casks":102,"formulae":103},[],[],{"arch":105,"casks":106,"formulae":107,"requirements":108},[39],[],[],{"macos":109},{},"4f875ea6a8c198f42ada6aa9adafe9cc670cf6cb2c5fdd59e5158679c21efef2","https:\u002F\u002Fdownload.oracle.com\u002Fjava\u002F27\u002Farchive\u002Fjdk-27_macos-x64_bin.dmg","golden_gate",{"arch":38,"artifacts":114,"conflictsWith":128,"dependsOn":131,"downloadSha256":48,"downloadUrl":50,"macos":81,"requiresRosetta":24,"tag":137,"version":81},{"apps":115,"binaries":116,"entries":117,"pkgs":127},[],[],[118,123],{"declaration":119,"phase":14,"sources":122,"type":14},{"uninstall":120},[121],{"pkgutil":13},[],{"declaration":124,"phase":20,"sources":126,"type":22},{"pkg":125},[19],[19],[19],{"casks":129,"formulae":130},[],[],{"arch":132,"casks":133,"formulae":134,"requirements":135},[38],[],[],{"macos":136},{},"arm64_golden_gate",{"arch":39,"artifacts":139,"conflictsWith":153,"dependsOn":156,"downloadSha256":110,"downloadUrl":111,"macos":162,"requiresRosetta":24,"tag":163,"version":81},{"apps":140,"binaries":141,"entries":142,"pkgs":152},[],[],[143,148],{"declaration":144,"phase":14,"sources":147,"type":14},{"uninstall":145},[146],{"pkgutil":13},[],{"declaration":149,"phase":20,"sources":151,"type":22},{"pkg":150},[19],[19],[19],{"casks":154,"formulae":155},[],[],{"arch":157,"casks":158,"formulae":159,"requirements":160},[39],[],[],{"macos":161},{},"26","tahoe",{"arch":38,"artifacts":165,"conflictsWith":179,"dependsOn":182,"downloadSha256":48,"downloadUrl":50,"macos":162,"requiresRosetta":24,"tag":188,"version":81},{"apps":166,"binaries":167,"entries":168,"pkgs":178},[],[],[169,174],{"declaration":170,"phase":14,"sources":173,"type":14},{"uninstall":171},[172],{"pkgutil":13},[],{"declaration":175,"phase":20,"sources":177,"type":22},{"pkg":176},[19],[19],[19],{"casks":180,"formulae":181},[],[],{"arch":183,"casks":184,"formulae":185,"requirements":186},[38],[],[],{"macos":187},{},"arm64_tahoe",{"arch":39,"artifacts":190,"conflictsWith":204,"dependsOn":207,"downloadSha256":110,"downloadUrl":111,"macos":213,"requiresRosetta":24,"tag":214,"version":81},{"apps":191,"binaries":192,"entries":193,"pkgs":203},[],[],[194,199],{"declaration":195,"phase":14,"sources":198,"type":14},{"uninstall":196},[197],{"pkgutil":13},[],{"declaration":200,"phase":20,"sources":202,"type":22},{"pkg":201},[19],[19],[19],{"casks":205,"formulae":206},[],[],{"arch":208,"casks":209,"formulae":210,"requirements":211},[39],[],[],{"macos":212},{},"15","sequoia",{"arch":38,"artifacts":216,"conflictsWith":230,"dependsOn":233,"downloadSha256":48,"downloadUrl":50,"macos":213,"requiresRosetta":24,"tag":239,"version":81},{"apps":217,"binaries":218,"entries":219,"pkgs":229},[],[],[220,225],{"declaration":221,"phase":14,"sources":224,"type":14},{"uninstall":222},[223],{"pkgutil":13},[],{"declaration":226,"phase":20,"sources":228,"type":22},{"pkg":227},[19],[19],[19],{"casks":231,"formulae":232},[],[],{"arch":234,"casks":235,"formulae":236,"requirements":237},[38],[],[],{"macos":238},{},"arm64_sequoia",{"arch":39,"artifacts":241,"conflictsWith":255,"dependsOn":258,"downloadSha256":110,"downloadUrl":111,"macos":264,"requiresRosetta":24,"tag":265,"version":81},{"apps":242,"binaries":243,"entries":244,"pkgs":254},[],[],[245,250],{"declaration":246,"phase":14,"sources":249,"type":14},{"uninstall":247},[248],{"pkgutil":13},[],{"declaration":251,"phase":20,"sources":253,"type":22},{"pkg":252},[19],[19],[19],{"casks":256,"formulae":257},[],[],{"arch":259,"casks":260,"formulae":261,"requirements":262},[39],[],[],{"macos":263},{},"14","sonoma",{"arch":38,"artifacts":267,"conflictsWith":281,"dependsOn":284,"downloadSha256":48,"downloadUrl":50,"macos":264,"requiresRosetta":24,"tag":290,"version":81},{"apps":268,"binaries":269,"entries":270,"pkgs":280},[],[],[271,276],{"declaration":272,"phase":14,"sources":275,"type":14},{"uninstall":273},[274],{"pkgutil":13},[],{"declaration":277,"phase":20,"sources":279,"type":22},{"pkg":278},[19],[19],[19],{"casks":282,"formulae":283},[],[],{"arch":285,"casks":286,"formulae":287,"requirements":288},[38],[],[],{"macos":289},{},"arm64_sonoma",{"arch":39,"artifacts":292,"conflictsWith":306,"dependsOn":309,"downloadSha256":110,"downloadUrl":111,"macos":315,"requiresRosetta":24,"tag":316,"version":81},{"apps":293,"binaries":294,"entries":295,"pkgs":305},[],[],[296,301],{"declaration":297,"phase":14,"sources":300,"type":14},{"uninstall":298},[299],{"pkgutil":13},[],{"declaration":302,"phase":20,"sources":304,"type":22},{"pkg":303},[19],[19],[19],{"casks":307,"formulae":308},[],[],{"arch":310,"casks":311,"formulae":312,"requirements":313},[39],[],[],{"macos":314},{},"13","ventura",{"arch":38,"artifacts":318,"conflictsWith":332,"dependsOn":335,"downloadSha256":48,"downloadUrl":50,"macos":315,"requiresRosetta":24,"tag":341,"version":81},{"apps":319,"binaries":320,"entries":321,"pkgs":331},[],[],[322,327],{"declaration":323,"phase":14,"sources":326,"type":14},{"uninstall":324},[325],{"pkgutil":13},[],{"declaration":328,"phase":20,"sources":330,"type":22},{"pkg":329},[19],[19],[19],{"casks":333,"formulae":334},[],[],{"arch":336,"casks":337,"formulae":338,"requirements":339},[38],[],[],{"macos":340},{},"arm64_ventura",{"arch":39,"artifacts":343,"conflictsWith":357,"dependsOn":360,"downloadSha256":110,"downloadUrl":111,"macos":366,"requiresRosetta":24,"tag":367,"version":81},{"apps":344,"binaries":345,"entries":346,"pkgs":356},[],[],[347,352],{"declaration":348,"phase":14,"sources":351,"type":14},{"uninstall":349},[350],{"pkgutil":13},[],{"declaration":353,"phase":20,"sources":355,"type":22},{"pkg":354},[19],[19],[19],{"casks":358,"formulae":359},[],[],{"arch":361,"casks":362,"formulae":363,"requirements":364},[39],[],[],{"macos":365},{},"12","monterey",{"arch":38,"artifacts":369,"conflictsWith":383,"dependsOn":386,"downloadSha256":48,"downloadUrl":50,"macos":366,"requiresRosetta":24,"tag":392,"version":81},{"apps":370,"binaries":371,"entries":372,"pkgs":382},[],[],[373,378],{"declaration":374,"phase":14,"sources":377,"type":14},{"uninstall":375},[376],{"pkgutil":13},[],{"declaration":379,"phase":20,"sources":381,"type":22},{"pkg":380},[19],[19],[19],{"casks":384,"formulae":385},[],[],{"arch":387,"casks":388,"formulae":389,"requirements":390},[38],[],[],{"macos":391},{},"arm64_monterey",{"arch":39,"artifacts":394,"conflictsWith":408,"dependsOn":411,"downloadSha256":110,"downloadUrl":111,"macos":417,"requiresRosetta":24,"tag":418,"version":81},{"apps":395,"binaries":396,"entries":397,"pkgs":407},[],[],[398,403],{"declaration":399,"phase":14,"sources":402,"type":14},{"uninstall":400},[401],{"pkgutil":13},[],{"declaration":404,"phase":20,"sources":406,"type":22},{"pkg":405},[19],[19],[19],{"casks":409,"formulae":410},[],[],{"arch":412,"casks":413,"formulae":414,"requirements":415},[39],[],[],{"macos":416},{},"11","big_sur",{"arch":38,"artifacts":420,"conflictsWith":434,"dependsOn":437,"downloadSha256":48,"downloadUrl":50,"macos":417,"requiresRosetta":24,"tag":443,"version":81},{"apps":421,"binaries":422,"entries":423,"pkgs":433},[],[],[424,429],{"declaration":425,"phase":14,"sources":428,"type":14},{"uninstall":426},[427],{"pkgutil":13},[],{"declaration":430,"phase":20,"sources":432,"type":22},{"pkg":431},[19],[19],[19],{"casks":435,"formulae":436},[],[],{"arch":438,"casks":439,"formulae":440,"requirements":441},[38],[],[],{"macos":442},{},"arm64_big_sur",{"icon":27,"machineTranslated":28,"name":29,"slug":30,"sourceLocale":31},628,20,{"brewLag":448,"cadence":452,"count30d":450},{"compared":449,"earlierCount":450,"medianMinutes":451},3,1,153722867,"irregular",[],"https:\u002F\u002Fgithub.com\u002Fhomebrew\u002Fhomebrew-cask\u002Fblob\u002FHEAD\u002FCasks\u002Fo\u002Foracle-jdk.rb","Entorno de ejecución y kit de desarrollo Java Standard Edition de Oracle para compilar, ejecutar, depurar y supervisar aplicaciones Java en macOS.",{"locale":79,"machineTranslated":28,"sourceLocale":75,"status":457},"machine",{"arm64":28,"requiresRosetta":24,"status":459,"x86_64":28},"known",[461,462,463,464],"Java","JDK","Runtime","Development","homebrew\u002Fcask",null,[468,480,490,497,507],{"accentColor":469,"autoUpdates":24,"deprecated":24,"disabled":24,"displayName":470,"editorChoice":24,"iconUrl":471,"installs30d":472,"isFont":24,"isLibrary":24,"kind":59,"machineTranslated":24,"name":473,"primaryCategory":474,"rank30d":475,"sourceLocale":75,"summary":476,"token":477,"version":478,"versionChangedAt":479},"#FB9211","Azul Zulu JDK 25","https:\u002F\u002Fcdn.opennavo.com\u002Ficons\u002Fuploads\u002Fcf70df9fc139\u002Fa9fc49e88167-256.png",211,"Azul Zulu Java Standard Edition Development Kit",{"icon":27,"machineTranslated":28,"name":29,"slug":30,"sourceLocale":31},491,"La distribución OpenJDK 25 de Azul Zulu ofrece el entorno de ejecución de Java, el compilador y herramientas de desarrollo para aplicaciones destinadas a Java 25.","zulu@25","25.0.4.1,25.36.205","2026-10-07T09:38:44.668496Z",{"accentColor":481,"autoUpdates":24,"deprecated":24,"disabled":24,"displayName":482,"editorChoice":24,"iconUrl":483,"installs30d":484,"isFont":24,"isLibrary":24,"kind":59,"machineTranslated":24,"name":473,"primaryCategory":485,"rank30d":486,"sourceLocale":75,"summary":487,"token":488,"version":489,"versionChangedAt":479},"#0C1B3B","Azul Zulu JDK 11","https:\u002F\u002Fcdn.opennavo.com\u002Ficons\u002Fuploads\u002F9b27ddd31fb7\u002F55004438d67c-256.png",147,{"icon":27,"machineTranslated":28,"name":29,"slug":30,"sourceLocale":31},626,"Distribución OpenJDK 11 de Azul para ejecutar y desarrollar aplicaciones Java, con paquetes nativos de macOS para Apple silicon e Intel.","zulu@11","11.0.32.1,11.90.205",{"accentColor":481,"autoUpdates":24,"deprecated":24,"disabled":24,"displayName":473,"editorChoice":24,"iconUrl":483,"installs30d":491,"isFont":24,"isLibrary":24,"kind":59,"machineTranslated":28,"name":473,"primaryCategory":492,"rank30d":493,"sourceLocale":75,"summary":494,"token":495,"version":496,"versionChangedAt":479},122,{"icon":27,"machineTranslated":28,"name":29,"slug":30,"sourceLocale":31},690,"Distribución de OpenJDK de Azul para desarrollar y ejecutar aplicaciones Java, instalada como un kit de desarrollo de Java para macOS con herramientas de línea de comandos.","zulu","27.0.0,27.28.101",{"accentColor":498,"autoUpdates":24,"deprecated":24,"disabled":24,"displayName":499,"editorChoice":24,"iconUrl":500,"installs30d":501,"isFont":24,"isLibrary":24,"kind":59,"machineTranslated":28,"name":499,"primaryCategory":502,"rank30d":503,"sourceLocale":75,"summary":504,"token":505,"version":506,"versionChangedAt":64},"#0C334C","OpenWebStart","https:\u002F\u002Fcdn.opennavo.com\u002Ficons\u002Fuploads\u002Fd772a83bd552\u002Fc4687f71aacf-256.png",234,{"icon":27,"machineTranslated":28,"name":29,"slug":30,"sourceLocale":31},454,"Ejecuta aplicaciones Java basadas en JNLP con entornos de ejecución Java gestionados, caché de aplicaciones y ajustes de seguridad configurables.","openwebstart","1.14.0",{"accentColor":508,"autoUpdates":24,"deprecated":24,"disabled":24,"displayName":509,"editorChoice":24,"iconUrl":510,"installs30d":511,"isFont":24,"isLibrary":24,"kind":59,"machineTranslated":28,"name":512,"primaryCategory":513,"rank30d":514,"sourceLocale":75,"summary":515,"token":516,"version":517,"versionChangedAt":518},"#512BD4",".NET Runtime","https:\u002F\u002Fcdn.opennavo.com\u002Ficons\u002Fuploads\u002Fc57ed3a2acdb\u002F024f64c75a05-256.png",192,".Net Runtime",{"icon":27,"machineTranslated":28,"name":29,"slug":30,"sourceLocale":31},535,"Entorno de ejecución multiplataforma de Microsoft para ejecutar aplicaciones .NET en macOS, sin las herramientas del SDK usadas para desarrollarlas y compilarlas.","dotnet-runtime","10.0.12","2026-10-07T09:38:28.442235Z","\u003Cp>Oracle JDK es la implementación de Oracle del kit de desarrollo de Java Standard Edition. Proporciona el entorno de ejecución de Java y las herramientas de desarrollo para crear, ejecutar, depurar y supervisar aplicaciones Java; es un entorno de ejecución para desarrolladores, no un editor de escritorio independiente para Mac.\u003C\u002Fp>\n\u003Ch3 class=\"on-md-heading-1\">Instalación en macOS\u003C\u002Fh3>\n\u003Cp>Oracle documenta las instalaciones tanto para Intel x64 como para Apple Silicon AArch64. El cask oracle-jdk de Homebrew instala un DMG de Oracle con número de versión que contiene un paquete JDK. El archivo predeterminado registrado es el instalador de JDK 27 para Apple Silicon. El JDK se instala en \u002FLibrary\u002FJava\u002FJavaVirtualMachines. Usa \u003Ccode>java -version\u003C\u002Fcode> para comprobar el entorno de ejecución predeterminado y \u003Ccode>\u002Fusr\u002Flibexec\u002Fjava_home\u003C\u002Fcode> para seleccionar un JDK instalado para el desarrollo desde la línea de comandos.\u003C\u002Fp>\n\u003Ch3 class=\"on-md-heading-1\">Selección de versión y actualizaciones\u003C\u002Fh3>\n\u003Cp>El cask sin número de versión sigue la versión funcional actual; no está fijado a un JDK con soporte a largo plazo. La página de descargas de Oracle identifica JDK 27 como la última versión funcional y JDK 25 como su línea LTS más reciente. Los instaladores solo permiten una actualización de la misma familia de versiones funcionales a la vez: instalar una actualización más reciente sustituye a la anterior. Oracle recomienda detener los procesos de Java antes de sustituir una instalación del JDK.\u003C\u002Fp>\n\u003Ch3 class=\"on-md-heading-1\">Licencias\u003C\u002Fh3>\n\u003Cp>Homebrew enlaza a los términos y condiciones sin coste de Oracle. Oracle indica que los binarios de JDK 27 pueden utilizarse en producción y redistribuirse sin coste bajo estos términos hasta marzo de 2027, cuando JDK 28 sustituya a esta versión. Las condiciones de licencia y soporte varían según la línea de versiones; no asumas que las versiones anteriores de Oracle JDK tienen las mismas condiciones de uso en producción.\u003C\u002Fp>\n\u003Ch3 class=\"on-md-heading-1\">Recursos visuales\u003C\u002Fh3>\n\u003Cp>Este paquete instala un JDK, no una aplicación con una ventana de editor independiente. La guía oficial de instalación en macOS documenta los pasos del instalador y los comandos de terminal; no se ha identificado ninguna captura de pantalla auténtica de una aplicación JDK ni un icono de aplicación rasterizado distintivo.\u003C\u002Fp>\n\u003Cp>Fuentes:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.oracle.com\u002Fjava\u002Ftechnologies\u002Fdownloads\u002F\" target=\"_blank\" rel=\"noopener noreferrer\">https:\u002F\u002Fwww.oracle.com\u002Fjava\u002Ftechnologies\u002Fdownloads\u002F\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F27\u002Finstall\u002Finstallation-jdk-macos.html\" target=\"_blank\" rel=\"noopener noreferrer\">https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F27\u002Finstall\u002Finstallation-jdk-macos.html\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fformulae.brew.sh\u002Fapi\u002Fcask\u002Foracle-jdk.json\" target=\"_blank\" rel=\"noopener noreferrer\">https:\u002F\u002Fformulae.brew.sh\u002Fapi\u002Fcask\u002Foracle-jdk.json\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n"]