{"id":4747,"date":"2025-05-10T20:45:49","date_gmt":"2025-05-10T18:45:49","guid":{"rendered":"https:\/?p=4747"},"modified":"2025-05-20T13:24:09","modified_gmt":"2025-05-20T11:24:09","slug":"openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa","status":"publish","type":"post","link":"https:\/\/javiercachon.com\/es\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/","title":{"rendered":"Cap\u00edtulo 4: OpenJDK 21 en Debian, Ubuntu y MX-Linux: Gu\u00eda Completa."},"content":{"rendered":"\n<figure class=\"wp-block-image size-large is-resized\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"http:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/OpenJDK-Java-21-SE-with-mxlinux-and-a-steaming-coffee-cup-with-the-IDE-Eclipse-for-Java-at-1080p-1024x576.jpg\" alt=\"\" class=\"wp-image-4735\" style=\"width:1200px;height:auto\" srcset=\"https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/OpenJDK-Java-21-SE-with-mxlinux-and-a-steaming-coffee-cup-with-the-IDE-Eclipse-for-Java-at-1080p-1024x576.jpg 1024w, https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/OpenJDK-Java-21-SE-with-mxlinux-and-a-steaming-coffee-cup-with-the-IDE-Eclipse-for-Java-at-1080p-300x169.jpg 300w, https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/OpenJDK-Java-21-SE-with-mxlinux-and-a-steaming-coffee-cup-with-the-IDE-Eclipse-for-Java-at-1080p-768x432.jpg 768w, https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/OpenJDK-Java-21-SE-with-mxlinux-and-a-steaming-coffee-cup-with-the-IDE-Eclipse-for-Java-at-1080p-100x56.jpg 100w, https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/OpenJDK-Java-21-SE-with-mxlinux-and-a-steaming-coffee-cup-with-the-IDE-Eclipse-for-Java-at-1080p-1536x864.jpg 1536w, https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/OpenJDK-Java-21-SE-with-mxlinux-and-a-steaming-coffee-cup-with-the-IDE-Eclipse-for-Java-at-1080p.jpg 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>OpenJDK 21<\/strong> <strong>LTS<\/strong> es la implementaci\u00f3n de referencia de c\u00f3digo abierto de la versi\u00f3n 21 de Java SE, siguiendo las \u00faltimas especificaciones del ecosistema Java. Esta versi\u00f3n, que representa el lanzamiento de soporte extendido (LTS) m\u00e1s actual, introduce mejoras significativas en concurrencia, rendimiento, seguridad y modularidad, orientadas a facilitar el desarrollo y ejecuci\u00f3n de aplicaciones modernas y escalables.<\/p>\n\n\n\n<p><strong>OpenJDK 21<\/strong> no est\u00e1 incluido por defecto en los repositorios oficiales de Debian 12 y MX Linux 23, ya que la versi\u00f3n predeterminada sigue siendo <strong>OpenJDK 17<\/strong>. Esto significa que si un usuario desea instalar OpenJDK 21, debe hacerlo manualmente descargando los paquetes desde fuentes externas, en <strong><a href=\"https:\/\/openjdk.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/openjdk.org\/<\/a><\/strong>.<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Tabla de contenidos del articulo.<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Alternar tabla de contenidos\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/javiercachon.com\/es\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/#Disponibilidad_y_Proveedores\" >Disponibilidad y Proveedores<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/javiercachon.com\/es\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/#Historia_de_OpenJDK_y_su_ideologo_en_el_codigo_abierto\" >Historia de OpenJDK y su ide\u00f3logo en el c\u00f3digo abierto<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/javiercachon.com\/es\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/#Caracteristicas_Destacadas\" >Caracter\u00edsticas Destacadas<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/javiercachon.com\/es\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/#Instalacion_de_OpenJDK_21\" >Instalaci\u00f3n de OpenJDK 21<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/javiercachon.com\/es\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/#Alternar_Entre_Versiones_de_Java\" >Alternar Entre Versiones de Java<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/javiercachon.com\/es\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/#Verificacion_de_la_Instalacion\" >Verificaci\u00f3n de la Instalaci\u00f3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/javiercachon.com\/es\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/#HolaMundojava\" >HolaMundo.java<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/javiercachon.com\/es\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/#Conclusiones\" >Conclusiones<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/javiercachon.com\/es\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/#Referencias\" >Referencias<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Disponibilidad_y_Proveedores\"><\/span>Disponibilidad y Proveedores<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p><strong>OpenJDK 21<\/strong> alcanz\u00f3 su disponibilidad general en un lanzamiento planeado para septiembre de 2023, consolid\u00e1ndose como la plataforma preferida para desarrolladores y administradores de sistemas. Los binarios listos para producci\u00f3n, distribuidos bajo la licencia GPL con excepci\u00f3n de enlaces, son ofrecidos por Oracle y otros proveedores reconocidos en la comunidad. Con esta actualizaci\u00f3n, OpenJDK 21 sustituye a versiones anteriores (como la 17), con mejoras en todas las \u00e1reas cr\u00edticas del desarrollo de software.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Historia_de_OpenJDK_y_su_ideologo_en_el_codigo_abierto\"><\/span>Historia de OpenJDK y su ide\u00f3logo en el c\u00f3digo abierto<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>OpenJDK tiene una historia fascinante que se remonta a los esfuerzos de <strong>Sun Microsystems<\/strong>, la empresa que originalmente desarroll\u00f3 Java. En <strong>1995<\/strong>, Sun lanz\u00f3 la primera versi\u00f3n de Java con el lema \u00abEscribe una vez, ejecuta en todas partes\u00bb, lo que revolucion\u00f3 el desarrollo de software. Sin embargo, en sus primeros a\u00f1os, Java SE s\u00e9 distribu\u00eda bajo una licencia propietaria, lo que limitaba su accesibilidad.<\/p>\n\n\n\n<p>En <strong>2006<\/strong>, Sun Microsystems tom\u00f3 la decisi\u00f3n de hacer que Java SE fuera de c\u00f3digo abierto, lo que llev\u00f3 a la creaci\u00f3n de <strong>OpenJDK<\/strong>, la implementaci\u00f3n oficial y abierta de Java SE. Este movimiento permiti\u00f3 que desarrolladores de todo el mundo contribuyeran al proyecto, fomentando la innovaci\u00f3n y la colaboraci\u00f3n.<\/p>\n\n\n\n<p>El creador principal de Java fue <strong>James Gosling<\/strong>, quien lider\u00f3 el desarrollo del lenguaje en Sun Microsystems en los a\u00f1os 90. Inicialmente, Java se llamaba <strong>Project Oak<\/strong>, pero el nombre fue cambiado a Java en <strong>1995<\/strong> debido a problemas de marca registrada. Gosling dise\u00f1\u00f3 Java con una sintaxis similar a C\/C++, pero con un enfoque en la portabilidad y la seguridad.<\/p>\n\n\n\n<p>En <strong>2010<\/strong>, Oracle adquiri\u00f3 Sun Microsystems y asumi\u00f3 el liderazgo de OpenJDK, asegurando que siguiera siendo la implementaci\u00f3n de referencia de Java SE. Desde entonces, OpenJDK ha evolucionado con nuevas versiones y mejoras, consolid\u00e1ndose como la opci\u00f3n preferida para el desarrollo en Java en entorno libre y de c\u00f3digo abierto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Caracteristicas_Destacadas\"><\/span>Caracter\u00edsticas Destacadas<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Las principales novedades y mejoras en OpenJDK 21 incluyen:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Hilos Virtuales<\/strong>: Los nuevos hilos virtuales (Virtual Threads) permiten gestionar de forma ligera y escalable miles de hilos, simplificando la programaci\u00f3n concurrente para aplicaciones de alto rendimiento y que requieren escalabilidad masiva ().<\/li>\n\n\n\n<li><strong>Patrones de Registros y Coincidencia en Switch<\/strong>: Se han consolidado y extendido las mejoras en los <em>record patterns<\/em> y la coincidencia de patrones en las expresiones <code class=\"\" data-line=\"\">switch<\/code>. Esto facilita la escritura de c\u00f3digo m\u00e1s conciso, seguro y legible, eliminando patrones redundantes en el manejo de estructuras condicionales.<\/li>\n\n\n\n<li><strong>API de Memoria Optimizada<\/strong>: Se ha mejorado el manejo de la memoria mediante nuevas API y optimizaciones a nivel de bajo nivel, lo que resulta en un rendimiento superior y una gesti\u00f3n de recursos m\u00e1s eficiente en aplicaciones complejas.<\/li>\n\n\n\n<li><strong>Encapsulamiento y Modularidad Fortalecidos<\/strong>: Con actualizaciones en la estructura modular del JDK, se refuerza el encapsulamiento de componentes internos. Esto garantiza mayor seguridad y estabilidad, permitiendo a los desarrolladores trabajar \u00fanicamente con las interfaces p\u00fablicas definidas.<\/li>\n\n\n\n<li><strong>Optimizaci\u00f3n en Compiladores AOT y JIT<\/strong>: Se han implementado mejoras en los compiladores AOT (Ahead-Of-Time) y JIT (Just-In-Time), proporcionando arranques m\u00e1s r\u00e1pidos y una ejecuci\u00f3n optimizada de las aplicaciones Java.<\/li>\n<\/ol>\n\n\n\n<p>Estas caracter\u00edsticas hacen de OpenJDK 21 una plataforma moderna y robusta, adaptada tanto para el desarrollo experimental como para aplicaciones empresariales de alta demanda.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Instalacion_de_OpenJDK_21\"><\/span>Instalaci\u00f3n de OpenJDK 21<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Para comenzar a disfrutar de las ventajas de OpenJDK 21 en sistemas basados en Debian (incluyendo Ubuntu y MX-Linux), sigue alguno de los siguientes m\u00e9todos:<\/p>\n\n\n\n<p>Debido a que MX-Linux 23 tra\u00e9 de serie y por defecto OpenJDK 17, Debes descargarte el OpenJDK 21 de:<strong><a href=\"https:\/\/jdk.java.net\/21\/\" target=\"_blank\" rel=\"noreferrer noopener\"> https:\/\/jdk.java.net\/21\/<\/a><\/strong> yendo a la versi\u00f3n java 21 en <strong><a href=\"https:\/\/jdk.java.net\/archive\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/jdk.java.net\/archive\/<\/a><\/strong> descargando el paquete <strong>.tar.gz<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">wget https:\/\/download.java.net\/java\/GA\/jdk21.0.2\/f2283984656d49d69e91c558476027ac\/13\/GPL\/openjdk-21.0.2_linux-x64_bin.tar.gz<\/pre>\n\n\n\n<p>Se nos descargar\u00e1 en el directorio <strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#000000\" class=\"has-inline-color\">\/Descargas<\/mark><\/strong><\/p>\n\n\n\n<p>Nos creamos el directorio <strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#000000\" class=\"has-inline-color\">\/opt\/java<\/mark><\/strong> :<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ sudo mkdir -p \/opt\/java<\/pre>\n\n\n\n<p>Podemos extraer el archivo descargado para obtener todos los archivos y directorios que contienen OpenJDK y moverlos al directorio <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-ast-global-color-0-color\">\/opt\/java<\/mark><\/strong> :<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ sudo tar xvf openjdk-21.0.2_linux-x64_bin.tar.gz -C \/opt\/java<\/pre>\n\n\n\n<p>Para configurar el entorno OpenJDK 21, metemos estas tres variables de entorno en la terminal:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ export JAVA_HOME=\/opt\/java\/jdk-21.0.2\n$ export PATH=$PATH:$JAVA_HOME\/bin\n$ export CLASSPATH=.:$JAVA_HOME\/lib<\/pre>\n\n\n\n<p>Confirma la creaci\u00f3n de la variable<strong> $JAVA_HOME<\/strong> y la actualizaci\u00f3n de <strong>PATH<\/strong> y todo ha salido correcto:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ echo $JAVA_HOME\n\/opt\/java\/jdk-21.0.2\n$ echo $PATH\n\/bin:\/opt\/Qt\/6.5.3\/gcc_64\/bin:\/opt\/Qt\/bin:\/usr\/local\/bin:\/usr\/bin:\/bin:\/usr\/local\/games:\/usr\/games:\/sbin:\/usr\/sbin:\/opt\/java\/jdk-21.0.2\/bin<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Complementos de Integraci\u00f3n<\/h4>\n\n\n\n<p>Adem\u00e1s, para integrar OpenJDK 21 con herramientas y entornos de desarrollo, puedes instalar los siguientes paquetes:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ sudo apt install jtreg7 java-package uwsgi-app-integration-plugins<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Alternar_Entre_Versiones_de_Java\"><\/span>Alternar Entre Versiones de Java<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Para asegurarte de que <strong>OpenJDK 21<\/strong> se muestre, debes verificar que est\u00e9 instalado y configurado correctamente:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ $ sudo update-alternatives --install \/usr\/bin\/java java \/opt\/java\/jdk-21.0.2 2 \n$ sudo update-alternatives --install \"\/usr\/bin\/java\" \"java\" \"\/opt\/java\/jdk-21.0.2\/bin\/java\" 0\n$ sudo update-alternatives --install \"\/usr\/bin\/javac\" \"javac\" \"\/opt\/java\/jdk-21.0.2\/bin\/javac\" 0\n$ sudo update-alternatives --set java \/usr\/lib\/jvm\/jdk-21.0.2\/bin\/java\n$ sudo update-alternatives --set javac \/usr\/lib\/jvm\/jdk-21.0.2\/bin\/javac<\/pre>\n\n\n\n<p>Si en tu sistema est\u00e1n instaladas m\u00faltiples versiones de Java, puedes seleccionar la versi\u00f3n por defecto usando:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ sudo update-alternatives --config java\n\nExisten 4 opciones para la alternativa java (que provee \/usr\/bin\/java).\n\n  Selecci\u00f3n   Ruta                                         Prioridad  Estado\n------------------------------------------------------------\n  0            \/usr\/lib\/jvm\/jdk-21.0.7-oracle-x64\/bin\/java   352378880 modo autom\u00e1tico\n* 1            \/opt\/java\/jdk-21.0.2\/bin\/java                 0         modo manual\n  2            \/usr\/lib\/jvm\/java-17-openjdk-amd64\/bin\/java   1711      modo manual\n  3            \/usr\/lib\/jvm\/jdk-21.0.7-oracle-x64\/bin\/java   352378880 modo manual\n\nPulse &lt;Intro> para mantener el valor por omisi\u00f3n [*] o pulse un n\u00famero de selecci\u00f3n: 1\n<\/pre>\n\n\n\n<p>Al ejecutarlo, se mostrar\u00e1 una lista de todas las versiones instaladas. Simplemente, ingresa el n\u00famero correspondiente a OpenJDK 21 para configurarla como la versi\u00f3n predeterminada.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Verificacion_de_la_Instalacion\"><\/span>Verificaci\u00f3n de la Instalaci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Para confirmar que OpenJDK 21 se ha instalado correctamente y est\u00e1 listo para usarse, ejecuta:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ java -version\nopenjdk version \"21.0.2\" 2024-01-16\nOpenJDK Runtime Environment (build 21.0.2+13-58)\nOpenJDK 64-Bit Server VM (build 21.0.2+13-58, mixed mode, sharing)<\/pre>\n\n\n\n<p>Introducimos 2 comandos de java, el compilador (javac) y el int\u00e9rprete de java (Java) para comprobar que contestan en la l\u00ednea de \u00f3rdenes:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ el compilador java\n$ javac\nUsage: javac &lt;options> &lt;source files>\nwhere possible options include:\n  @&lt;filename>                  Read options and filenames from file\n  -Akey[=value]                Options to pass to annotation processors\n  --add-modules &lt;module>(,&lt;module>)*\n        Root modules to resolve in addition to the initial modules,\n        or all modules on the module path if &lt;module> is ALL-MODULE-PATH.\n  --boot-class-path &lt;path>, -bootclasspath &lt;path>\n        Override location of bootstrap class files\n  --class-path &lt;path>, -classpath &lt;path>, -cp &lt;path>\n        Specify where to find user class files and annotation processors\n  -d &lt;directory>               Specify where to place generated class files\n  -deprecation\n        Output source locations where deprecated APIs are used\n  --enable-preview\n        Enable preview language features.\n        To be used in conjunction with either -source or --release.\n  -encoding &lt;encoding>         Specify character encoding used by source files\n  -endorseddirs &lt;dirs>         Override location of endorsed standards path\n  -extdirs &lt;dirs>              Override location of installed extensions\n  -g                           Generate all debugging info\n  -g:{lines,vars,source}       Generate only some debugging info\n  -g:none                      Generate no debugging info\n  -h &lt;directory>\n        Specify where to place generated native header files\n  --help, -help, -?            Print this help message\n  --help-extra, -X             Print help on extra options\n  -implicit:{none,class}\n        Specify whether to generate class files for implicitly referenced files\n  -J&lt;flag>                     Pass &lt;flag> directly to the runtime system\n  --limit-modules &lt;module>(,&lt;module>)*\n        Limit the universe of observable modules\n  --module &lt;module>(,&lt;module>)*, -m &lt;module>(,&lt;module>)*\n        Compile only the specified module(s), check timestamps\n  --module-path &lt;path>, -p &lt;path>\n        Specify where to find application modules\n  --module-source-path &lt;module-source-path>\n        Specify where to find input source files for multiple modules\n  --module-version &lt;version>\n        Specify version of modules that are being compiled\n  -nowarn                      Generate no warnings\n  -parameters\n        Generate metadata for reflection on method parameters\n  -proc:{none,only,full}\n        Control whether annotation processing and\/or compilation is done.\n  -processor &lt;class1>[,&lt;class2>,&lt;class3>...]\n        Names of the annotation processors to run;\n        bypasses default discovery process\n  --processor-module-path &lt;path>\n        Specify a module path where to find annotation processors\n  --processor-path &lt;path>, -processorpath &lt;path>\n        Specify where to find annotation processors\n  -profile &lt;profile>\n        Check that API used is available in the specified profile.\n        This option is deprecated and may be removed in a future release.\n  --release &lt;release>\n        Compile for the specified Java SE release.\n        Supported releases: \n            8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21\n  -s &lt;directory>               Specify where to place generated source files\n  --source &lt;release>, -source &lt;release>\n        Provide source compatibility with the specified Java SE release.\n        Supported releases: \n            8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21\n  --source-path &lt;path>, -sourcepath &lt;path>\n        Specify where to find input source files\n  --system &lt;jdk>|none          Override location of system modules\n  --target &lt;release>, -target &lt;release>\n        Generate class files suitable for the specified Java SE release.\n        Supported releases: \n            8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21\n  --upgrade-module-path &lt;path>\n        Override location of upgradeable modules\n  -verbose                     Output messages about what the compiler is doing\n  --version, -version          Version information\n  -Werror                      Terminate compilation if warnings occur<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ El int\u00e9rprete java.\n$ java\nUsage: java [options] &lt;mainclass> [args...]\n           (to execute a class)\n   or  java [options] -jar &lt;jarfile> [args...]\n           (to execute a jar file)\n   or  java [options] -m &lt;module>[\/&lt;mainclass>] [args...]\n       java [options] --module &lt;module>[\/&lt;mainclass>] [args...]\n           (to execute the main class in a module)\n   or  java [options] &lt;sourcefile> [args]\n           (to execute a single source-file program)\n\n Arguments following the main class, source file, -jar &lt;jarfile>,\n -m or --module &lt;module>\/&lt;mainclass> are passed as the arguments to\n main class.\n\n where options include:\n\n    -cp &lt;class search path of directories and zip\/jar files>\n    -classpath &lt;class search path of directories and zip\/jar files>\n    --class-path &lt;class search path of directories and zip\/jar files>\n                  A : separated list of directories, JAR archives,\n                  and ZIP archives to search for class files.\n    -p &lt;module path>\n    --module-path &lt;module path>...\n                  A : separated list of elements, each element is a file path\n                  to a module or a directory containing modules. Each module is either\n                  a modular JAR or an exploded-module directory.\n    --upgrade-module-path &lt;module path>...\n                  A : separated list of elements, each element is a file path\n                  to a module or a directory containing modules to replace\n                  upgradeable modules in the runtime image. Each module is either\n                  a modular JAR or an exploded-module directory.\n    --add-modules &lt;module name>[,&lt;module name>...]\n                  root modules to resolve in addition to the initial module.\n                  &lt;module name> can also be ALL-DEFAULT, ALL-SYSTEM,\n                  ALL-MODULE-PATH.\n    --enable-native-access &lt;module name>[,&lt;module name>...]\n                  modules that are permitted to perform restricted native operations.\n                  &lt;module name> can also be ALL-UNNAMED.\n    --list-modules\n                  list observable modules and exit\n    -d &lt;module name>\n    --describe-module &lt;module name>\n                  describe a module and exit\n    --dry-run     create VM and load main class but do not execute main method.\n                  The --dry-run option may be useful for validating the\n                  command-line options such as the module system configuration.\n    --validate-modules\n                  validate all modules and exit\n                  The --validate-modules option may be useful for finding\n                  conflicts and other errors with modules on the module path.\n    -D&lt;name>=&lt;value>\n                  set a system property\n    -verbose:[class|module|gc|jni]\n                  enable verbose output for the given subsystem\n    -version      print product version to the error stream and exit\n    --version     print product version to the output stream and exit\n    -showversion  print product version to the error stream and continue\n    --show-version\n                  print product version to the output stream and continue\n    --show-module-resolution\n                  show module resolution output during startup\n    -? -h -help\n                  print this help message to the error stream\n    --help        print this help message to the output stream\n    -X            print help on extra options to the error stream\n    --help-extra  print help on extra options to the output stream\n    -ea[:&lt;packagename>...|:&lt;classname>]\n    -enableassertions[:&lt;packagename>...|:&lt;classname>]\n                  enable assertions with specified granularity\n    -da[:&lt;packagename>...|:&lt;classname>]\n    -disableassertions[:&lt;packagename>...|:&lt;classname>]\n                  disable assertions with specified granularity\n    -esa | -enablesystemassertions\n                  enable system assertions\n    -dsa | -disablesystemassertions\n                  disable system assertions\n    -agentlib:&lt;libname>[=&lt;options>]\n                  load native agent library &lt;libname>, e.g. -agentlib:jdwp\n                  see also -agentlib:jdwp=help\n    -agentpath:&lt;pathname>[=&lt;options>]\n                  load native agent library by full pathname\n    -javaagent:&lt;jarpath>[=&lt;options>]\n                  load Java programming language agent, see java.lang.instrument\n    -splash:&lt;imagepath>\n                  show splash screen with specified image\n                  HiDPI scaled images are automatically supported and used\n                  if available. The unscaled image filename, e.g. image.ext,\n                  should always be passed as the argument to the -splash option.\n                  The most appropriate scaled image provided will be picked up\n                  automatically.\n                  See the SplashScreen API documentation for more information\n    @argument files\n                  one or more argument files containing options\n    --disable-@files\n                  prevent further argument file expansion\n    --enable-preview\n                  allow classes to depend on preview features of this release\nTo specify an argument for a long option, you can use --&lt;name>=&lt;value> or\n--&lt;name> &lt;value>.<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"HolaMundojava\"><\/span>HolaMundo.java<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>A continuaci\u00f3n, se muestra un sencillo ejemplo en Java 21:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class HolaMundo {\n    public static void main(String[] args) {\n        System.out.println(\"Hola ojosdegato\");\n    }\n}<\/pre>\n\n\n\n<p>Para compilar y ejecutar el programa, sigue estos pasos:<\/p>\n\n\n\n<p>Guarda el archivo <strong>HolaMundo.java<\/strong>.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Compilar el c\u00f3digo: <code class=\"\" data-line=\"\">$ javac HolaMundo.java<\/code><\/li>\n\n\n\n<li>Ejecutar el programa: <code class=\"\" data-line=\"\">$ java HolaMundo<\/code><\/li>\n<\/ol>\n\n\n\n<p>La salida ser\u00e1:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Hola ojosdegato<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Conclusiones\"><\/span>Conclusiones<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Con OpenJDK 21 instalado en tu sistema Debian, Ubuntu o MX-Linux, cuentas con un entorno robusto y actualizado para desarrollar y ejecutar aplicaciones Java. Esta gu\u00eda completa te ha conducido desde la instalaci\u00f3n inicial hasta la verificaci\u00f3n del entorno, pasando por ejemplos pr\u00e1cticos que ilustran el proceso de desarrollo en Java 21. Gracias a las innovaciones en concurrencia, manejo de memoria y modularidad, OpenJDK 21 te brinda las herramientas necesarias para crear aplicaciones modernas, seguras y escalables.<\/p>\n\n\n\n<p>Explora la documentaci\u00f3n oficial de OpenJDK y las comunidades de Debian y Ubuntu para descubrir a\u00fan m\u00e1s novedades y optimizaciones que puedan potenciar tus proyectos en Java. Adem\u00e1s, mantente atento a las futuras actualizaciones y mejoras que continuamente enriquecen el ecosistema de Java.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Referencias\"><\/span>Referencias<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p><a href=\"https:\/\/ed.team\/\" target=\"_blank\" rel=\"noreferrer noopener\">EDteam &#8211; En espa\u00f1ol nadie te explica mejor<\/a>: He realizado unos cursos gratis y excelentes, te exigen un 9 para obtener un certificado de aprovechamiento, exigen mucho y aprendes un mont\u00f3n.<\/p>\n\n\n\n<p><strong>OpenJDK<\/strong>&nbsp;es la&nbsp;<a href=\"https:\/\/es.wikipedia.org\/wiki\/Software_libre\">versi\u00f3n libre<\/a>&nbsp;de la plataforma de desarrollo&nbsp;<a href=\"https:\/\/es.wikipedia.org\/wiki\/Lenguaje_de_programaci%C3%B3n_Java\">Java<\/a> en: <a href=\"https:\/\/openjdk.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/openjdk.org\/<\/a><\/p>\n\n\n\n<p><\/p>\n<div style='text-align:center' class='yasr-auto-insert-overall'><\/div><div style='text-align:center' class='yasr-auto-insert-visitor'><\/div>","protected":false},"excerpt":{"rendered":"<p>OpenJDK 21 LTS es la implementaci\u00f3n de referencia de c\u00f3digo abierto de la versi\u00f3n 21 de Java SE, siguiendo las \u00faltimas especificaciones del ecosistema Java. Esta versi\u00f3n, que representa el lanzamiento de soporte extendido (LTS) m\u00e1s actual, introduce mejoras significativas en concurrencia, rendimiento, seguridad y modularidad, orientadas a facilitar el [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4735,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"jetpack_post_was_ever_published":false,"yasr_overall_rating":0,"yasr_post_is_review":"","yasr_auto_insert_disabled":"","yasr_review_type":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[5,176,265],"tags":[6,7,14,15,17,19],"class_list":["post-4747","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desarrollo","category-desarrollo-web","category-java","tag-apps","tag-debian-linux","tag-java","tag-linux","tag-lts","tag-mx-linux"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Cap\u00edtulo 4: OpenJDK 21 en Debian, Ubuntu y MX-Linux: Gu\u00eda Completa. | javiercachon.com<\/title>\n<meta name=\"description\" content=\"OpenJDK 21 es la implementaci\u00f3n de referencia de c\u00f3digo abierto de la versi\u00f3n 21 de Java SE, siguiendo las \u00faltimas especificaciones del ecosistema Java.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/javiercachon.com\/es\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cap\u00edtulo 4: OpenJDK 21 en Debian, Ubuntu y MX-Linux: Gu\u00eda Completa. | javiercachon.com\" \/>\n<meta property=\"og:description\" content=\"OpenJDK 21 es la implementaci\u00f3n de referencia de c\u00f3digo abierto de la versi\u00f3n 21 de Java SE, siguiendo las \u00faltimas especificaciones del ecosistema Java.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/javiercachon.com\/es\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/\" \/>\n<meta property=\"og:site_name\" content=\"javiercachon.com\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javiercachon82\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/javiercachon82\" \/>\n<meta property=\"article:published_time\" content=\"2025-05-10T18:45:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-20T11:24:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/OpenJDK-Java-21-SE-with-mxlinux-and-a-steaming-coffee-cup-with-the-IDE-Eclipse-for-Java-at-1080p.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Javier Cach\u00f3n Garrido\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/x.com\/udegeek\" \/>\n<meta name=\"twitter:site\" content=\"@udegeek\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Javier Cach\u00f3n Garrido\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/javiercachon.com\\\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/javiercachon.com\\\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\\\/\"},\"author\":{\"name\":\"Javier Cach\u00f3n Garrido\",\"@id\":\"https:\\\/\\\/javiercachon.com\\\/es\\\/#\\\/schema\\\/person\\\/56ea56e1350676921cc43a3bcfd6c997\"},\"headline\":\"Cap\u00edtulo 4: OpenJDK 21 en Debian, Ubuntu y MX-Linux: Gu\u00eda Completa.\",\"datePublished\":\"2025-05-10T18:45:49+00:00\",\"dateModified\":\"2025-05-20T11:24:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/javiercachon.com\\\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\\\/\"},\"wordCount\":1151,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/javiercachon.com\\\/es\\\/#\\\/schema\\\/person\\\/56ea56e1350676921cc43a3bcfd6c997\"},\"image\":{\"@id\":\"https:\\\/\\\/javiercachon.com\\\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/javiercachon.com\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/OpenJDK-Java-21-SE-with-mxlinux-and-a-steaming-coffee-cup-with-the-IDE-Eclipse-for-Java-at-1080p.jpg\",\"keywords\":[\"Apps\",\"Debian Linux\",\"Java\",\"Linux\",\"LTS\",\"MX-Linux\"],\"articleSection\":[\"Desarrollo\",\"Desarrollo Web\",\"Java\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/javiercachon.com\\\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/javiercachon.com\\\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\\\/\",\"url\":\"https:\\\/\\\/javiercachon.com\\\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\\\/\",\"name\":\"Cap\u00edtulo 4: OpenJDK 21 en Debian, Ubuntu y MX-Linux: Gu\u00eda Completa. | javiercachon.com\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/javiercachon.com\\\/es\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/javiercachon.com\\\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/javiercachon.com\\\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/javiercachon.com\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/OpenJDK-Java-21-SE-with-mxlinux-and-a-steaming-coffee-cup-with-the-IDE-Eclipse-for-Java-at-1080p.jpg\",\"datePublished\":\"2025-05-10T18:45:49+00:00\",\"dateModified\":\"2025-05-20T11:24:09+00:00\",\"description\":\"OpenJDK 21 es la implementaci\u00f3n de referencia de c\u00f3digo abierto de la versi\u00f3n 21 de Java SE, siguiendo las \u00faltimas especificaciones del ecosistema Java.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/javiercachon.com\\\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/javiercachon.com\\\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/javiercachon.com\\\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\\\/#primaryimage\",\"url\":\"https:\\\/\\\/javiercachon.com\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/OpenJDK-Java-21-SE-with-mxlinux-and-a-steaming-coffee-cup-with-the-IDE-Eclipse-for-Java-at-1080p.jpg\",\"contentUrl\":\"https:\\\/\\\/javiercachon.com\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/OpenJDK-Java-21-SE-with-mxlinux-and-a-steaming-coffee-cup-with-the-IDE-Eclipse-for-Java-at-1080p.jpg\",\"width\":1920,\"height\":1080},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/javiercachon.com\\\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"inicio\",\"item\":\"https:\\\/\\\/javiercachon.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cap\u00edtulo 4: OpenJDK 21 en Debian, Ubuntu y MX-Linux: Gu\u00eda Completa.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/javiercachon.com\\\/es\\\/#website\",\"url\":\"https:\\\/\\\/javiercachon.com\\\/es\\\/\",\"name\":\"javiercachon.com\",\"description\":\"es una plataforma educativa revolucionaria que busca democratizar el acceso al conocimiento en inform\u00e1tica.\",\"publisher\":{\"@id\":\"https:\\\/\\\/javiercachon.com\\\/es\\\/#\\\/schema\\\/person\\\/56ea56e1350676921cc43a3bcfd6c997\"},\"alternateName\":\"javiercachon.com\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/javiercachon.com\\\/es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/javiercachon.com\\\/es\\\/#\\\/schema\\\/person\\\/56ea56e1350676921cc43a3bcfd6c997\",\"name\":\"Javier Cach\u00f3n Garrido\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/javiercachon.com\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/Montanas-JC-logo-azul.jpg\",\"url\":\"https:\\\/\\\/javiercachon.com\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/Montanas-JC-logo-azul.jpg\",\"contentUrl\":\"https:\\\/\\\/javiercachon.com\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/Montanas-JC-logo-azul.jpg\",\"width\":250,\"height\":34,\"caption\":\"Javier Cach\u00f3n Garrido\"},\"logo\":{\"@id\":\"https:\\\/\\\/javiercachon.com\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/Montanas-JC-logo-azul.jpg\"},\"description\":\"Javier Cach\u00f3n Garrido es un experto en inform\u00e1tica, apasionado por el c\u00f3digo abierto y la educaci\u00f3n tecnol\u00f3gica. Como fundador de JavierCachon.com, impulsa la formaci\u00f3n en GNU\\\/Linux y software libre, promoviendo el aprendizaje accesible y colaborativo. Su misi\u00f3n es democratizar el conocimiento en TI, ofreciendo recursos gratuitos y de calidad para profesionales y entusiastas del sector. Es un profeta y predicador que evangeliza la tecnolog\u00eda, la inform\u00e1tica y telecomunicaciones, acomp\u00e1\u00f1ale en su aventura y pasi\u00f3n por los sistemas operativos abiertos GNU\\\/Linux.\",\"sameAs\":[\"https:\\\/\\\/javiercachon.com\\\/\",\"https:\\\/\\\/www.facebook.com\\\/javiercachon82\",\"https:\\\/\\\/www.instagram.com\\\/edugeek\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/javiercachongarrido\\\/\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/x.com\\\/udegeek\",\"https:\\\/\\\/www.youtube.com\\\/@edugeek\",\"https:\\\/\\\/wiki.javiercachon.com\\\/wiki\\\/index.php\\\/Usuario:Ojosdegato\"],\"url\":\"https:\\\/\\\/javiercachon.com\\\/es\\\/author\\\/ojosdegato\\\/\"},false]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Cap\u00edtulo 4: OpenJDK 21 en Debian, Ubuntu y MX-Linux: Gu\u00eda Completa. | javiercachon.com","description":"OpenJDK 21 es la implementaci\u00f3n de referencia de c\u00f3digo abierto de la versi\u00f3n 21 de Java SE, siguiendo las \u00faltimas especificaciones del ecosistema Java.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/javiercachon.com\/es\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/","og_locale":"es_ES","og_type":"article","og_title":"Cap\u00edtulo 4: OpenJDK 21 en Debian, Ubuntu y MX-Linux: Gu\u00eda Completa. | javiercachon.com","og_description":"OpenJDK 21 es la implementaci\u00f3n de referencia de c\u00f3digo abierto de la versi\u00f3n 21 de Java SE, siguiendo las \u00faltimas especificaciones del ecosistema Java.","og_url":"https:\/\/javiercachon.com\/es\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/","og_site_name":"javiercachon.com","article_publisher":"https:\/\/www.facebook.com\/javiercachon82","article_author":"https:\/\/www.facebook.com\/javiercachon82","article_published_time":"2025-05-10T18:45:49+00:00","article_modified_time":"2025-05-20T11:24:09+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/OpenJDK-Java-21-SE-with-mxlinux-and-a-steaming-coffee-cup-with-the-IDE-Eclipse-for-Java-at-1080p.jpg","type":"image\/jpeg"}],"author":"Javier Cach\u00f3n Garrido","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/x.com\/udegeek","twitter_site":"@udegeek","twitter_misc":{"Escrito por":"Javier Cach\u00f3n Garrido","Tiempo de lectura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/javiercachon.com\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/#article","isPartOf":{"@id":"https:\/\/javiercachon.com\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/"},"author":{"name":"Javier Cach\u00f3n Garrido","@id":"https:\/\/javiercachon.com\/es\/#\/schema\/person\/56ea56e1350676921cc43a3bcfd6c997"},"headline":"Cap\u00edtulo 4: OpenJDK 21 en Debian, Ubuntu y MX-Linux: Gu\u00eda Completa.","datePublished":"2025-05-10T18:45:49+00:00","dateModified":"2025-05-20T11:24:09+00:00","mainEntityOfPage":{"@id":"https:\/\/javiercachon.com\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/"},"wordCount":1151,"commentCount":0,"publisher":{"@id":"https:\/\/javiercachon.com\/es\/#\/schema\/person\/56ea56e1350676921cc43a3bcfd6c997"},"image":{"@id":"https:\/\/javiercachon.com\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/#primaryimage"},"thumbnailUrl":"https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/OpenJDK-Java-21-SE-with-mxlinux-and-a-steaming-coffee-cup-with-the-IDE-Eclipse-for-Java-at-1080p.jpg","keywords":["Apps","Debian Linux","Java","Linux","LTS","MX-Linux"],"articleSection":["Desarrollo","Desarrollo Web","Java"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/javiercachon.com\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/javiercachon.com\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/","url":"https:\/\/javiercachon.com\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/","name":"Cap\u00edtulo 4: OpenJDK 21 en Debian, Ubuntu y MX-Linux: Gu\u00eda Completa. | javiercachon.com","isPartOf":{"@id":"https:\/\/javiercachon.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/javiercachon.com\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/#primaryimage"},"image":{"@id":"https:\/\/javiercachon.com\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/#primaryimage"},"thumbnailUrl":"https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/OpenJDK-Java-21-SE-with-mxlinux-and-a-steaming-coffee-cup-with-the-IDE-Eclipse-for-Java-at-1080p.jpg","datePublished":"2025-05-10T18:45:49+00:00","dateModified":"2025-05-20T11:24:09+00:00","description":"OpenJDK 21 es la implementaci\u00f3n de referencia de c\u00f3digo abierto de la versi\u00f3n 21 de Java SE, siguiendo las \u00faltimas especificaciones del ecosistema Java.","breadcrumb":{"@id":"https:\/\/javiercachon.com\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/javiercachon.com\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/javiercachon.com\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/#primaryimage","url":"https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/OpenJDK-Java-21-SE-with-mxlinux-and-a-steaming-coffee-cup-with-the-IDE-Eclipse-for-Java-at-1080p.jpg","contentUrl":"https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/OpenJDK-Java-21-SE-with-mxlinux-and-a-steaming-coffee-cup-with-the-IDE-Eclipse-for-Java-at-1080p.jpg","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/javiercachon.com\/openjdk-21-en-debian-ubuntu-y-mx-linux-guia-completa\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"inicio","item":"https:\/\/javiercachon.com\/"},{"@type":"ListItem","position":2,"name":"Cap\u00edtulo 4: OpenJDK 21 en Debian, Ubuntu y MX-Linux: Gu\u00eda Completa."}]},{"@type":"WebSite","@id":"https:\/\/javiercachon.com\/es\/#website","url":"https:\/\/javiercachon.com\/es\/","name":"javiercachon.com","description":"es una plataforma educativa revolucionaria que busca democratizar el acceso al conocimiento en inform\u00e1tica.","publisher":{"@id":"https:\/\/javiercachon.com\/es\/#\/schema\/person\/56ea56e1350676921cc43a3bcfd6c997"},"alternateName":"javiercachon.com","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/javiercachon.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":["Person","Organization"],"@id":"https:\/\/javiercachon.com\/es\/#\/schema\/person\/56ea56e1350676921cc43a3bcfd6c997","name":"Javier Cach\u00f3n Garrido","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/javiercachon.com\/wp-content\/uploads\/2024\/11\/Montanas-JC-logo-azul.jpg","url":"https:\/\/javiercachon.com\/wp-content\/uploads\/2024\/11\/Montanas-JC-logo-azul.jpg","contentUrl":"https:\/\/javiercachon.com\/wp-content\/uploads\/2024\/11\/Montanas-JC-logo-azul.jpg","width":250,"height":34,"caption":"Javier Cach\u00f3n Garrido"},"logo":{"@id":"https:\/\/javiercachon.com\/wp-content\/uploads\/2024\/11\/Montanas-JC-logo-azul.jpg"},"description":"Javier Cach\u00f3n Garrido es un experto en inform\u00e1tica, apasionado por el c\u00f3digo abierto y la educaci\u00f3n tecnol\u00f3gica. Como fundador de JavierCachon.com, impulsa la formaci\u00f3n en GNU\/Linux y software libre, promoviendo el aprendizaje accesible y colaborativo. Su misi\u00f3n es democratizar el conocimiento en TI, ofreciendo recursos gratuitos y de calidad para profesionales y entusiastas del sector. Es un profeta y predicador que evangeliza la tecnolog\u00eda, la inform\u00e1tica y telecomunicaciones, acomp\u00e1\u00f1ale en su aventura y pasi\u00f3n por los sistemas operativos abiertos GNU\/Linux.","sameAs":["https:\/\/javiercachon.com\/","https:\/\/www.facebook.com\/javiercachon82","https:\/\/www.instagram.com\/edugeek\/","https:\/\/www.linkedin.com\/in\/javiercachongarrido\/","https:\/\/x.com\/https:\/\/x.com\/udegeek","https:\/\/www.youtube.com\/@edugeek","https:\/\/wiki.javiercachon.com\/wiki\/index.php\/Usuario:Ojosdegato"],"url":"https:\/\/javiercachon.com\/es\/author\/ojosdegato\/"},false]}},"yasr_visitor_votes":{"stars_attributes":{"read_only":false,"span_bottom":false},"number_of_votes":0,"sum_votes":0},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/OpenJDK-Java-21-SE-with-mxlinux-and-a-steaming-coffee-cup-with-the-IDE-Eclipse-for-Java-at-1080p.jpg","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/javiercachon.com\/es\/wp-json\/wp\/v2\/posts\/4747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/javiercachon.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/javiercachon.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/javiercachon.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/javiercachon.com\/es\/wp-json\/wp\/v2\/comments?post=4747"}],"version-history":[{"count":0,"href":"https:\/\/javiercachon.com\/es\/wp-json\/wp\/v2\/posts\/4747\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/javiercachon.com\/es\/wp-json\/wp\/v2\/media\/4735"}],"wp:attachment":[{"href":"https:\/\/javiercachon.com\/es\/wp-json\/wp\/v2\/media?parent=4747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/javiercachon.com\/es\/wp-json\/wp\/v2\/categories?post=4747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/javiercachon.com\/es\/wp-json\/wp\/v2\/tags?post=4747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}