{"id":4869,"date":"2025-05-14T20:00:20","date_gmt":"2025-05-14T18:00:20","guid":{"rendered":"https:\/?p=4869"},"modified":"2025-05-20T13:59:00","modified_gmt":"2025-05-20T11:59:00","slug":"introduccion-al-lenguaje-java-21-se","status":"publish","type":"post","link":"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/","title":{"rendered":"Introducci\u00f3n al lenguaje Java 21 SE."},"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\/El-lenguaje-de-programacion-Java-21-1024x576.jpg\" alt=\"\" class=\"wp-image-4870\" style=\"width:1200px;height:auto\" srcset=\"https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/El-lenguaje-de-programacion-Java-21-1024x576.jpg 1024w, https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/El-lenguaje-de-programacion-Java-21-300x169.jpg 300w, https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/El-lenguaje-de-programacion-Java-21-768x432.jpg 768w, https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/El-lenguaje-de-programacion-Java-21-100x56.jpg 100w, https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/El-lenguaje-de-programacion-Java-21-1536x864.jpg 1536w, https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/El-lenguaje-de-programacion-Java-21.jpg 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\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\/introduccion-al-lenguaje-java-21-se\/#1_Introduccion\" >1. Introducci\u00f3n<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#11_%C2%BFQue_es_Java\" >1.1. \u00bfQu\u00e9 es Java?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#12_Breve_Historia_e_Impacto_en_la_Informatica\" >1.2. Breve Historia e Impacto en la Inform\u00e1tica<\/a><\/li><\/ul><\/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\/introduccion-al-lenguaje-java-21-se\/#2_Conceptos_Fundamentales_de_Java\" >2. Conceptos Fundamentales de Java<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#21_Los_Origenes_de_Java\" >2.1. Los Or\u00edgenes de Java<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#22_Relacion_con_C_C_y_C\" >2.2. Relaci\u00f3n con C, C++ y C#<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#23_La_Contribucion_de_Java_a_Internet\" >2.3. La Contribuci\u00f3n de Java a Internet<\/a><\/li><\/ul><\/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\/introduccion-al-lenguaje-java-21-se\/#3_Evolucion_del_Lenguaje_Java\" >3. Evoluci\u00f3n del Lenguaje Java<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#31_Historia_del_Lenguaje_Java\" >3.1. Historia del Lenguaje Java<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#32_El_Papel_de_Java_en_la_Informatica_del_Ano_2025\" >3.2. El Papel de Java en la Inform\u00e1tica del A\u00f1o 2025<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#4_Terminologia_y_Paradigmas_en_Java\" >4. Terminolog\u00eda y Paradigmas en Java<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#41_Programacion_Orientada_a_Objetos_POO\" >4.1. Programaci\u00f3n Orientada a Objetos (POO)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#%C2%BFQue_es_un_objeto_y_que_es_una_clase\" >\u00bfQu\u00e9 es un objeto y qu\u00e9 es una clase?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#1_Encapsulacion\" >1. Encapsulaci\u00f3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#2_Herencia\" >2. Herencia<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#3_Polimorfismo\" >3. Polimorfismo<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#42_Otros_Paradigmas_Funcional_y_Concurrente\" >4.2. Otros Paradigmas: Funcional y Concurrente<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#5_Java_21_Caracteristicas_y_Novedades\" >5. Java 21: Caracter\u00edsticas y Novedades<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#51_Novedades_y_Mejoras\" >5.1. Novedades y Mejoras<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#52_Ejemplos_Practicos_en_Java_21\" >5.2. Ejemplos Pr\u00e1cticos en Java 21<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#6_Documentacion_y_Recursos_de_Java\" >6. Documentaci\u00f3n y Recursos de Java<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#61_La_Documentacion_Oficial_de_Java\" >6.1. La Documentaci\u00f3n Oficial de Java<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#62_Tecnicas_de_Sangrado_y_Convenciones_de_Codigo\" >6.2. T\u00e9cnicas de Sangrado y Convenciones de C\u00f3digo<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#63_Tabla_de_Palabras_Reservadas_del_Lenguaje_y_Otros_Elementos\" >6.3. Tabla de Palabras Reservadas del Lenguaje y Otros Elementos<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#Consideraciones_Adicionales\" >Consideraciones Adicionales<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#7_Bibliotecas_y_Herramientas_de_Desarrollo\" >7. Bibliotecas y Herramientas de Desarrollo<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#71_Bibliotecas_de_Clases_Estandar\" >7.1. Bibliotecas de Clases Est\u00e1ndar<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#72_Frameworks_y_Herramientas_Spring_Hibernate_etc\" >7.2. Frameworks y Herramientas (Spring, Hibernate, etc.)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#73_Gestion_de_Dependencias_con_Maven_y_Gradle\" >7.3. Gesti\u00f3n de Dependencias con Maven y Gradle<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#8_Desarrollo_Practico_en_Java\" >8. Desarrollo Pr\u00e1ctico en Java<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#81_Solucion_de_Errores_Sintacticos_y_Comunes\" >8.1. Soluci\u00f3n de Errores Sint\u00e1cticos y Comunes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#82_Mi_Primera_Aplicacion_en_Java_Ejemplo_Paso_a_Paso\" >8.2. Mi Primera Aplicaci\u00f3n en Java: Ejemplo Paso a Paso<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#83_Compilacion_sin_IDE\" >8.3. Compilaci\u00f3n sin IDE<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-34\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#84_Ejemplos_Avanzados_Concurrencia_Streams_y_Virtual_Threads\" >8.4. Ejemplos Avanzados: Concurrencia, Streams y Virtual Threads<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-35\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#9_Pruebas_y_Buenas_Practicas\" >9. Pruebas y Buenas Pr\u00e1cticas<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-36\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#91_Recomendaciones_Generales_para_una_Buena_Programacion\" >9.1. Recomendaciones Generales para una Buena Programaci\u00f3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-37\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#92_Pruebas_Unitarias_TDD_y_Manejo_de_Excepciones\" >9.2. Pruebas Unitarias, TDD y Manejo de Excepciones<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-38\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#93_Depuracion_Optimizacion_y_Logging\" >9.3. Depuraci\u00f3n, Optimizaci\u00f3n y Logging<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-39\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#10_Resumen_y_Conclusiones\" >10. Resumen y Conclusiones<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-40\" href=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/#11_Referencias_y_Enlaces_Utiles\" >11. Referencias y Enlaces \u00datiles<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"1_Introduccion\"><\/span>1. Introducci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"11_%C2%BFQue_es_Java\"><\/span>1.1. \u00bfQu\u00e9 es Java?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Java es un lenguaje de programaci\u00f3n de prop\u00f3sito general, orientado a objetos y dise\u00f1ado para ser altamente portable. Con el lema \u00abwrite once, run anywhere\u00bb, Java permite desarrollar aplicaciones que se ejecutan en m\u00faltiples plataformas sin necesidad de recompilar el c\u00f3digo. Esta caracter\u00edstica ha convertido a Java en un pilar del desarrollo de software tanto en el \u00e1mbito empresarial como en el mundo acad\u00e9mico y de la tecnolog\u00eda emergente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"12_Breve_Historia_e_Impacto_en_la_Informatica\"><\/span>1.2. Breve Historia e Impacto en la Inform\u00e1tica<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Desde su aparici\u00f3n en 1995, Java ha evolucionado para convertirse en uno de los lenguajes m\u00e1s populares en la programaci\u00f3n. Originalmente desarrollado por Sun Microsystems, su arquitectura basada en una M\u00e1quina Virtual (JVM) ha permitido que aplicaciones complejas se ejecuten con alto rendimiento y seguridad en una variedad de dispositivos, desde servidores hasta dispositivos m\u00f3viles. Su impacto en internet, la creaci\u00f3n de frameworks robustos y su continua evoluci\u00f3n lo convierten en un referente para el desarrollo seguro y escalable en 2025.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"2_Conceptos_Fundamentales_de_Java\"><\/span>2. Conceptos Fundamentales de Java<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"21_Los_Origenes_de_Java\"><\/span>2.1. Los Or\u00edgenes de Java<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Nacido en un contexto en el que la necesidad de interoperabilidad era alta, Java fue dise\u00f1ado para ofrecer seguridad, portabilidad y una sintaxis clara derivada de lenguajes como C y C++. Su creaci\u00f3n impuls\u00f3 un cambio en el desarrollo de aplicaciones para internet y en dispositivos embebidos, marcando el inicio de una nueva era en la inform\u00e1tica.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"22_Relacion_con_C_C_y_C\"><\/span>2.2. Relaci\u00f3n con C, C++ y C#<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Aunque Java comparte una sintaxis similar a C y C++, sus fundamentos se centran en evitar problemas comunes en estos lenguajes, como la gesti\u00f3n manual de la memoria y la complejidad de la herencia m\u00faltiple. Por otro lado, C# fue en parte inspirado por Java y ha tomado decisiones de dise\u00f1o competitivas; sin embargo, Java se ha distinguido por su filosof\u00eda \u00abplataforma neutral\u00bb y una comunidad de desarrolladores muy activa.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"23_La_Contribucion_de_Java_a_Internet\"><\/span>2.3. La Contribuci\u00f3n de Java a Internet<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Java revolucion\u00f3 el desarrollo de aplicaciones web con su capacidad para compilar a bytecode, permitiendo que el mismo c\u00f3digo se ejecute en cualquier dispositivo con una JVM instalada. Esta caracter\u00edstica ha sido integral para el crecimiento de aplicaciones en servidor, la seguridad en el entorno web y el desarrollo de aplicaciones m\u00f3viles.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"3_Evolucion_del_Lenguaje_Java\"><\/span>3. Evoluci\u00f3n del Lenguaje Java<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"31_Historia_del_Lenguaje_Java\"><\/span>3.1. Historia del Lenguaje Java<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Desde su primera versi\u00f3n en los a\u00f1os 90 hasta la llegada de Java 21, el lenguaje ha pasado por numerosas iteraciones. Cada actualizaci\u00f3n ha introducido mejoras en rendimiento, sintaxis y funcionalidades, adapt\u00e1ndose a las necesidades tanto de la programaci\u00f3n empresarial como de las nuevas tendencias tecnol\u00f3gicas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"32_El_Papel_de_Java_en_la_Informatica_del_Ano_2025\"><\/span>3.2. El Papel de Java en la Inform\u00e1tica del A\u00f1o 2025<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Java sigue siendo fundamental en 2025, siendo empleado en aplicaciones cr\u00edticas en finanzas, telecomunicaciones, sistemas embebidos y servicios web de alta disponibilidad. Se destacan tres pilares:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3.2.1. Seguridad<\/h4>\n\n\n\n<p>La s\u00f3lida arquitectura de la JVM y el riguroso control de acceso a recursos en Java proporcionan un entorno seguro frente a vulnerabilidades. La inclusi\u00f3n de mecanismos como el <em>sandboxing<\/em> y pol\u00edticas de seguridad a nivel de c\u00f3digo hacen de Java uno de los lenguajes m\u00e1s fiables para aplicaciones sensibles.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3.2.2. Portabilidad<\/h4>\n\n\n\n<p>El bytecode generado permite que el c\u00f3digo Java se ejecute en cualquier sistema operativo que tenga instalada la JVM, haciendo que la migraci\u00f3n entre plataformas sea casi transparente.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3.2.3. La Magia del Bytecode<\/h4>\n\n\n\n<p>El proceso de compilaci\u00f3n en Java transforma el c\u00f3digo fuente en bytecode \u2013un conjunto de instrucciones interpretadas por la JVM\u2013 que posibilita la independencia del hardware y la optimizaci\u00f3n en tiempo de ejecuci\u00f3n, garantizando un rendimiento competitivo y una gran escalabilidad.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"4_Terminologia_y_Paradigmas_en_Java\"><\/span>4. Terminolog\u00eda y Paradigmas en Java<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"41_Programacion_Orientada_a_Objetos_POO\"><\/span>4.1. Programaci\u00f3n Orientada a Objetos (POO)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>La <strong>Programaci\u00f3n Orientada a Objetos (POO)<\/strong> es un paradigma de desarrollo que organiza el c\u00f3digo en torno a <strong>objetos<\/strong>, en lugar de funciones y datos independientes. Este enfoque permite modelar sistemas de manera m\u00e1s intuitiva, acerc\u00e1ndose a la forma en que los humanos pensamos sobre el mundo real.<\/p>\n\n\n\n<p>Java es un lenguaje que est\u00e1 dise\u00f1ado desde sus fundamentos para trabajar con POO, haciendo uso de conceptos como <strong>encapsulaci\u00f3n, herencia, polimorfismo y abstracci\u00f3n<\/strong>, los cuales permiten construir programas modulares, reutilizables y f\u00e1ciles de mantener.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"%C2%BFQue_es_un_objeto_y_que_es_una_clase\"><\/span>\u00bfQu\u00e9 es un objeto y qu\u00e9 es una clase?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>En POO, los <strong>objetos<\/strong> representan instancias de <strong>clases<\/strong>, que son estructuras que definen el comportamiento y las caracter\u00edsticas de un tipo espec\u00edfico de entidad.<\/p>\n\n\n\n<p><strong>Ejemplo sencillo<\/strong> de una clase y un objeto en Java:<\/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=\"\">\/\/ Definici\u00f3n de la clase Persona\npublic class Persona {\n    String nombre;\n    int edad;\n    \n    \/\/ Constructor de la clase\n    public Persona(String nombre, int edad) {\n        this.nombre = nombre;\n        this.edad = edad;\n    }\n\n    \/\/ M\u00e9todo para mostrar informaci\u00f3n\n    public void mostrarInfo() {\n        System.out.println(\"Nombre: \" + nombre + \", Edad: \" + edad);\n    }\n}\n\n\/\/ Clase principal con el m\u00e9todo main\npublic class Main {\n    public static void main(String[] args) {\n        \/\/ Creaci\u00f3n de un objeto de la clase Persona\n        Persona persona1 = new Persona(\"Carlos\", 30);\n        persona1.mostrarInfo(); \/\/ Salida: Nombre: Carlos, Edad: 30\n    }\n}<\/pre>\n\n\n\n<p>En este ejemplo, la <strong>clase <\/strong><code class=\"\" data-line=\"\">Persona<\/code> define dos atributos (<code class=\"\" data-line=\"\">nombre<\/code> y <code class=\"\" data-line=\"\">edad<\/code>), un <strong>constructor<\/strong> y un m\u00e9todo (<code class=\"\" data-line=\"\">mostrarInfo()<\/code>). Luego, en la clase <code class=\"\" data-line=\"\">Main<\/code>, se crea un <strong>objeto<\/strong> (<code class=\"\" data-line=\"\">persona1<\/code>) y se invoca el m\u00e9todo para mostrar su informaci\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"1_Encapsulacion\"><\/span>1. Encapsulaci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>La <strong>encapsulaci\u00f3n<\/strong> consiste en ocultar los detalles internos de un objeto y permitir el acceso solo a trav\u00e9s de m\u00e9todos definidos. Esto mejora la seguridad del c\u00f3digo y la modularidad.<\/p>\n\n\n\n<p><strong>Ejemplo de encapsulaci\u00f3n:<\/strong><\/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 CuentaBancaria {\n    private double saldo;  \/\/ Atributo privado, no accesible directamente\n\n    \/\/ Constructor\n    public CuentaBancaria(double saldoInicial) {\n        saldo = saldoInicial;\n    }\n\n    \/\/ M\u00e9todo para depositar dinero\n    public void depositar(double cantidad) {\n        saldo += cantidad;\n    }\n\n    \/\/ M\u00e9todo para consultar el saldo\n    public double consultarSaldo() {\n        return saldo;\n    }\n}\n\n\/\/ Uso en una clase principal\npublic class Banco {\n    public static void main(String[] args) {\n        CuentaBancaria cuenta = new CuentaBancaria(1000);\n        cuenta.depositar(500);\n        System.out.println(\"Saldo actual \u20ac: \" + cuenta.consultarSaldo()); \/\/ Salida: 1500\n    }\n}<\/pre>\n\n\n\n<p>Aqu\u00ed, el atributo <code class=\"\" data-line=\"\">saldo<\/code> es <strong>privado<\/strong> (<code class=\"\" data-line=\"\">private<\/code>), lo que impide su acceso directo. En su lugar, se emplean m\u00e9todos p\u00fablicos (<code class=\"\" data-line=\"\">depositar<\/code> y <code class=\"\" data-line=\"\">consultarSaldo<\/code>) para interactuar con \u00e9l, lo que refuerza la seguridad y la integridad de los datos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"2_Herencia\"><\/span>2. Herencia<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>La <strong>herencia<\/strong> permite que una clase (<code class=\"\" data-line=\"\">subclase<\/code>) obtenga caracter\u00edsticas de otra clase (<code class=\"\" data-line=\"\">superclase<\/code>). Esto facilita la reutilizaci\u00f3n del c\u00f3digo y la especializaci\u00f3n de clases.<\/p>\n\n\n\n<p><strong>Ejemplo de herencia:<\/strong><\/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=\"\">\/\/ Clase base\npublic class Animal {\n    public void hacerSonido() {\n        System.out.println(\"El animal hace un sonido\");\n    }\n}\n\n\/\/ Clase derivada (hereda de Animal)\npublic class Perro extends Animal {\n    @Override\n    public void hacerSonido() {\n        System.out.println(\"El perro ladra\");\n    }\n}\n\n\/\/ Uso de herencia en el programa principal\npublic class Zoologico {\n    public static void main(String[] args) {\n        Animal miAnimal = new Animal();\n        miAnimal.hacerSonido(); \/\/ Salida: El animal hace un sonido\n\n        Perro miPerro = new Perro();\n        miPerro.hacerSonido(); \/\/ Salida: El perro ladra\n    }\n}<\/pre>\n\n\n\n<p>La clase <code class=\"\" data-line=\"\">Perro<\/code> <strong>hereda<\/strong> de <code class=\"\" data-line=\"\">Animal<\/code>, sobrescribiendo (<code class=\"\" data-line=\"\">@Override<\/code>) el m\u00e9todo <code class=\"\" data-line=\"\">hacerSonido()<\/code>. Gracias a la herencia, <code class=\"\" data-line=\"\">Perro<\/code> puede utilizar el comportamiento de <code class=\"\" data-line=\"\">Animal<\/code> y modificarlo seg\u00fan sus necesidades.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"3_Polimorfismo\"><\/span>3. Polimorfismo<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>El <strong>polimorfismo<\/strong> permite que un mismo m\u00e9todo pueda ejecutarse de diferentes maneras seg\u00fan el objeto que lo llame. Esto se logra mediante la <strong>sobrescritura<\/strong> (<code class=\"\" data-line=\"\">@Override<\/code>) en clases heredadas.<\/p>\n\n\n\n<p><strong>Ejemplo de polimorfismo:<\/strong><\/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=\"\">\/\/ Clase base\npublic class Vehiculo {\n    public void acelerar() {\n        System.out.println(\"El veh\u00edculo est\u00e1 acelerando.\");\n    }\n}\n\n\/\/ Clase derivada\npublic class Coche extends Vehiculo {\n    @Override\n    public void acelerar() {\n        System.out.println(\"El coche acelera r\u00e1pidamente.\");\n    }\n}\n\n\/\/ Otra clase derivada\npublic class Bicicleta extends Vehiculo {\n    @Override\n    public void acelerar() {\n        System.out.println(\"La bicicleta avanza lentamente.\");\n    }\n}\n\n\/\/ Uso del polimorfismo en el programa\npublic class Carretera {\n    public static void main(String[] args) {\n        Vehiculo v1 = new Coche();\n        Vehiculo v2 = new Bicicleta();\n\n        v1.acelerar(); \/\/ Salida: El coche acelera r\u00e1pidamente.\n        v2.acelerar(); \/\/ Salida: La bicicleta avanza lentamente.\n    }\n}<\/pre>\n\n\n\n<p>Aqu\u00ed, aunque <code class=\"\" data-line=\"\">v1<\/code> y <code class=\"\" data-line=\"\">v2<\/code> son declarados como <code class=\"\" data-line=\"\">Vehiculo<\/code>, en tiempo de ejecuci\u00f3n cada objeto ejecuta su propia versi\u00f3n del m\u00e9todo <code class=\"\" data-line=\"\">acelerar()<\/code>, mostrando el efecto del polimorfismo.<\/p>\n\n\n\n<p>La <strong>Programaci\u00f3n Orientada a Objetos (POO)<\/strong> es fundamental en Java y permite crear sistemas flexibles, organizados y reutilizables. Al emplear <strong>encapsulaci\u00f3n<\/strong>, <strong>herencia<\/strong> y <strong>polimorfismo<\/strong>, los desarrolladores pueden dise\u00f1ar aplicaciones robustas con menos redundancia y mayor claridad en el c\u00f3digo.<\/p>\n\n\n\n<p>En Java 21, el paradigma POO sigue evolucionando con mejoras como <strong>Records<\/strong>, <strong>Sealed Classes<\/strong> y la implementaci\u00f3n de patrones m\u00e1s expresivos mediante <strong>Pattern Matching<\/strong>, lo que potencia a\u00fan m\u00e1s la seguridad y la mantenibilidad del c\u00f3digo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"42_Otros_Paradigmas_Funcional_y_Concurrente\"><\/span>4.2. Otros Paradigmas: Funcional y Concurrente<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>M\u00e1s all\u00e1 de la POO, Java ha incorporado elementos de la programaci\u00f3n funcional dentro de las \u00faltimas versiones (por ejemplo, <em>lambdas<\/em> y <em>streams<\/em>). Asimismo, la evoluci\u00f3n del lenguaje en entornos de alta concurrencia ha llevado a la introducci\u00f3n de herramientas avanzadas como los Virtual Threads, que simplifican y optimizan el manejo de tareas concurrentes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"5_Java_21_Caracteristicas_y_Novedades\"><\/span>5. Java 21: Caracter\u00edsticas y Novedades<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"51_Novedades_y_Mejoras\"><\/span>5.1. Novedades y Mejoras<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Java 21 trae consigo una serie de mejoras que potencian tanto el rendimiento como la productividad del desarrollador. Entre las principales novedades destacan:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Virtual Threads y Structured Concurrency:<\/strong> Facilitando la creaci\u00f3n de hilos ligeros y la gesti\u00f3n de m\u00faltiples tareas concurrentes de forma m\u00e1s segura y escalable.<\/li>\n\n\n\n<li><strong>Records Mejorados y Sealed Classes:<\/strong> Estos mecanismos permiten crear clases inmutables y restringir la herencia a un conjunto controlado de subclases, mejorando la claridad y seguridad del dise\u00f1o.<\/li>\n\n\n\n<li><strong>Pattern Matching para Switch:<\/strong> Refinamientos en la sintaxis que permiten trabajar con diferentes tipos de datos de manera m\u00e1s expresiva y menos propensa a errores.<\/li>\n\n\n\n<li><strong>Optimizaciones Internas y Mejor Gesti\u00f3n de la Memoria:<\/strong> Aporta mejoras en el rendimiento en escenarios de alta demanda, reduciendo el overhead en la gesti\u00f3n de recursos.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"52_Ejemplos_Practicos_en_Java_21\"><\/span>5.2. Ejemplos Pr\u00e1cticos en Java 21<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>A continuaci\u00f3n, se muestran algunos ejemplos de c\u00f3digo que ilustran las nuevas caracter\u00edsticas de la versi\u00f3n de Java SE 21 LTS:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Virtual Threads<\/h4>\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 VirtualThread {\n    public static void main(String[] args) throws InterruptedException {\n        \/\/ Creaci\u00f3n y ejecuci\u00f3n de un hilo virtual\n        Thread virtualThread = Thread.ofVirtual().start(() -> {\n            System.out.println(\"\u00a1Hola desde un hilo virtual en Java 21!\");\n        });\n        virtualThread.join();\n    }\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Sealed Classes y Records<\/h4>\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=\"\">\/\/ Definici\u00f3n de una interfaz sellada\npublic sealed interface Shape permits Circle, Rectangle {}\n\n\/\/ Clase final que implementa Shape\npublic final class Circle implements Shape {\n    private final double radius;\n    \n    public Circle(double radius) {\n        this.radius = radius;\n    }\n    \n    public double getRadius() {\n        return radius;\n    }\n}\n\n\/\/ Clase final para un rect\u00e1ngulo\npublic final class Rectangle implements Shape {\n    private final double width;\n    private final double height;\n    \n    public Rectangle(double width, double height) {\n         this.width = width;\n         this.height = height;\n    }\n    \n    public double getWidth() {\n         return width;\n    }\n    \n    public double getHeight() {\n         return height;\n    }\n}\n\n\/\/ Uso de un record para representar un punto\npublic record Point(int x, int y) {}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Pattern Matching en Switch<\/h4>\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 String getShapeName(Shape shape) {\n    return switch (shape) {\n        case Circle c -> \"C\u00edrculo\";\n        case Rectangle r -> \"Rect\u00e1ngulo\";\n        \/\/ En versiones futuras se pueden agregar m\u00e1s casos\n        default -> throw new IllegalStateException(\"Forma desconocida: \" + shape);\n    };\n}<\/pre>\n\n\n\n<p>Estos ejemplos ilustran c\u00f3mo Java 21 combina la robustez tradicional con innovaciones que simplifican el desarrollo concurrente y seguro.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"6_Documentacion_y_Recursos_de_Java\"><\/span>6. Documentaci\u00f3n y Recursos de Java<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"61_La_Documentacion_Oficial_de_Java\"><\/span>6.1. La Documentaci\u00f3n Oficial de Java<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>La documentaci\u00f3n oficial de Oracle y la comunidad de OpenJDK constituyen fuentes primarias para comprender a fondo cada versi\u00f3n del lenguaje. Es imperativo consultar estos recursos para mantenerse actualizado sobre las mejores pr\u00e1cticas y las nuevas APIs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"62_Tecnicas_de_Sangrado_y_Convenciones_de_Codigo\"><\/span>6.2. T\u00e9cnicas de Sangrado y Convenciones de C\u00f3digo<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>La correcta indentaci\u00f3n (sangrado) y el uso consistente de convenciones de nomenclatura son esenciales para la legibilidad y el mantenimiento del c\u00f3digo. Se recomienda seguir gu\u00edas de estilo oficiales (como la de Oracle) y emplear herramientas de formateo autom\u00e1ticas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"63_Tabla_de_Palabras_Reservadas_del_Lenguaje_y_Otros_Elementos\"><\/span>6.3. Tabla de Palabras Reservadas del Lenguaje y Otros Elementos<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>En Java, las palabras reservadas (o keywords) son lexemas que tienen un significado fijo y especial para el compilador. Esto significa que no pueden utilizarse para nombrar clases, m\u00e9todos, variables u otros identificadores, ya que est\u00e1n destinadas a definir la estructura y el comportamiento del lenguaje. Adem\u00e1s de estas palabras \u00abhist\u00f3ricas\u00bb, en las versiones m\u00e1s recientes de Java se han incorporado nuevas palabras, algunas de ellas como palabras reservadas contextuales, que aportan mejoras en la concisi\u00f3n y legibilidad del c\u00f3digo (por ejemplo, para inferencia de tipos o manejo de clases inmutables y selladas).<\/p>\n\n\n\n<p>A continuaci\u00f3n se presenta una tabla completa con las palabras reservadas tradicionales y algunas de las novedades introducidas en versiones posteriores (desde Java 9 en adelante):<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Tabla de Palabras Reservadas y Contextuales en Java<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Palabra Reservada<\/th><th>Descripci\u00f3n breve<\/th><th>Notas \/ Versi\u00f3n<\/th><\/tr><\/thead><tbody><tr><td><code class=\"\" data-line=\"\">abstract<\/code><\/td><td>Declara clases o m\u00e9todos abstractos.<\/td><td>Impide instanciaci\u00f3n directa.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\">assert<\/code><\/td><td>Permite realizar aserciones para depuraci\u00f3n.<\/td><td>Introducido en Java SE 1.4.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\">boolean<\/code><\/td><td>Define el tipo de dato primitivo para valores l\u00f3gicos.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">break<\/code><\/td><td>Interrumpe la ejecuci\u00f3n de un ciclo o bloque <code class=\"\" data-line=\"\">switch<\/code>.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">byte<\/code><\/td><td>Declara variables del tipo de dato entero de 8 bits.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">case<\/code><\/td><td>Define cada opci\u00f3n en una sentencia <code class=\"\" data-line=\"\">switch<\/code>.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">catch<\/code><\/td><td>Captura excepciones arrojadas en un bloque <code class=\"\" data-line=\"\">try<\/code>.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">char<\/code><\/td><td>Tipo primitivo para representar un car\u00e1cter.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">class<\/code><\/td><td>Declara una clase.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">const<\/code><\/td><td>Reservado pero sin uso actual.<\/td><td>Reservado para uso futuro.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\">continue<\/code><\/td><td>Interrumpe la iteraci\u00f3n actual de un ciclo y pasa a la siguiente.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">default<\/code><\/td><td>Define el caso por defecto en un <code class=\"\" data-line=\"\">switch<\/code> o m\u00e9todos por defecto en interfaces.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">do<\/code><\/td><td>Inicia un ciclo <code class=\"\" data-line=\"\">do-while<\/code>.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">double<\/code><\/td><td>Tipo primitivo para n\u00fameros decimales de doble precisi\u00f3n.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">else<\/code><\/td><td>Alternativa en una declaraci\u00f3n <code class=\"\" data-line=\"\">if<\/code>.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">enum<\/code><\/td><td>Declara un tipo enumerado.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">extends<\/code><\/td><td>Indica que una clase hereda de otra o una interfaz extiende a otra.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">final<\/code><\/td><td>Declara constantes o impide la herencia\/sobrescritura.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">finally<\/code><\/td><td>Define un bloque que se ejecuta despu\u00e9s de <code class=\"\" data-line=\"\">try<\/code>\/<code class=\"\" data-line=\"\">catch<\/code>, independientemente del resultado.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">float<\/code><\/td><td>Tipo primitivo para n\u00fameros decimales de precisi\u00f3n simple.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">for<\/code><\/td><td>Inicia un ciclo <code class=\"\" data-line=\"\">for<\/code>.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">goto<\/code><\/td><td>Reservada pero no utilizada en Java.<\/td><td>Reservada para uso futuro.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\">if<\/code><\/td><td>Inicia una condici\u00f3n.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">implements<\/code><\/td><td>Indica que una clase implementa una o m\u00e1s interfaces.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">import<\/code><\/td><td>Permite incluir clases o paquetes en un archivo fuente.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">instanceof<\/code><\/td><td>Verifica si un objeto es instancia de una clase o interfaz determinada.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">int<\/code><\/td><td>Tipo primitivo para n\u00fameros enteros de 32 bits.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">interface<\/code><\/td><td>Declara una interfaz.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">long<\/code><\/td><td>Tipo primitivo para n\u00fameros enteros de 64 bits.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">native<\/code><\/td><td>Indica que un m\u00e9todo est\u00e1 implementado en c\u00f3digo nativo (por ejemplo, C\/C++).<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">new<\/code><\/td><td>Crea una nueva instancia de un objeto.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">null<\/code><\/td><td>Literal que representa la ausencia de un valor.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">package<\/code><\/td><td>Declara el paquete al que pertenece la clase.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">private<\/code><\/td><td>Define el acceso restringido al \u00e1mbito de la clase.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">protected<\/code><\/td><td>Define el acceso a nivel de paquete y subclases.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">public<\/code><\/td><td>Indica acceso p\u00fablico, sin restricciones.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">return<\/code><\/td><td>Devuelve un valor de un m\u00e9todo o finaliza su ejecuci\u00f3n.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">short<\/code><\/td><td>Tipo primitivo para n\u00fameros enteros de 16 bits.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">static<\/code><\/td><td>Declara miembros pertenecientes a la clase, no a instancias espec\u00edficas.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">strictfp<\/code><\/td><td>Restringe la precisi\u00f3n y el comportamiento en c\u00e1lculos flotantes.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">super<\/code><\/td><td>Hace referencia a la clase padre inmediata.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">switch<\/code><\/td><td>Inicia una sentencia de selecci\u00f3n m\u00faltiple.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">synchronized<\/code><\/td><td>Marca m\u00e9todos o bloques para acceso seguro en entornos concurrentes.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">this<\/code><\/td><td>Hace referencia a la instancia actual.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">throw<\/code><\/td><td>Lanza una excepci\u00f3n de forma expl\u00edcita.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">throws<\/code><\/td><td>Declara las excepciones que un m\u00e9todo puede propagar.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">transient<\/code><\/td><td>Indica que un atributo no debe ser serializado.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">try<\/code><\/td><td>Inicia el manejo de excepciones.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">void<\/code><\/td><td>Especifica que un m\u00e9todo no devuelve ning\u00fan valor.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">volatile<\/code><\/td><td>Marca una variable como susceptible a cambios asincr\u00f3nicos, evitando cach\u00e9 local.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">while<\/code><\/td><td>Inicia un ciclo basado en una condici\u00f3n.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\">var<\/code><\/td><td>Permite declarar variables con inferencia de tipo.<\/td><td>Palabra reservada contextual (desde Java 10).<\/td><\/tr><tr><td><code class=\"\" data-line=\"\">record<\/code><\/td><td>Define una clase inmutable de forma compacta, ideal para almacenar datos.<\/td><td>Introducido en Java 16.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\">sealed<\/code><\/td><td>Restringe qu\u00e9 clases pueden extender o implementar una clase o interfaz sellada.<\/td><td>Introducido en Java 17.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\">permits<\/code><\/td><td>Lista expl\u00edcitamente las clases que pueden extender una clase sellada.<\/td><td>Introducido en Java 17.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\">non-sealed<\/code><\/td><td>Permite que una subclase de una clase sellada renuncie al sello, abriendo la herencia.<\/td><td>Introducido en Java 17.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\">yield<\/code><\/td><td>Se utiliza en expresiones de <code class=\"\" data-line=\"\">switch<\/code> para retornar un valor.<\/td><td>Consolidado en Java 14 (previo en preview desde Java 13).<\/td><\/tr><tr><td><code class=\"\" data-line=\"\">module<\/code><\/td><td>Inicia la declaraci\u00f3n de un m\u00f3dulo en el sistema de m\u00f3dulos de Java.<\/td><td>Introducido en Java 9.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\">open<\/code><\/td><td>Indica que un m\u00f3dulo permite la reflexi\u00f3n en ciertos paquetes.<\/td><td>Introducido en Java 9.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\">requires<\/code><\/td><td>Especifica la dependencia de un m\u00f3dulo.<\/td><td>Introducido en Java 9.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\">exports<\/code><\/td><td>Declara qu\u00e9 paquetes de un m\u00f3dulo est\u00e1n disponibles para otros m\u00f3dulos.<\/td><td>Introducido en Java 9.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\">opens<\/code><\/td><td>Similar a <code class=\"\" data-line=\"\">exports<\/code>, pero permite la reflexi\u00f3n en tiempo de ejecuci\u00f3n.<\/td><td>Introducido en Java 9.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\">uses<\/code><\/td><td>Declara la dependencia en la implementaci\u00f3n de un servicio.<\/td><td>Introducido en Java 9.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\">provides<\/code><\/td><td>Se\u00f1ala que un m\u00f3dulo ofrece una implementaci\u00f3n de un servicio espec\u00edfico.<\/td><td>Introducido en Java 9.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Consideraciones_Adicionales\"><\/span>Consideraciones Adicionales<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Palabras Reservadas Contextuales:<\/strong> Algunas palabras, como <code class=\"\" data-line=\"\">var<\/code>, son reservadas en ciertos contextos. Esto significa que su significado especial se aplica \u00fanicamente en situaciones predefinidas (por ejemplo, en la declaraci\u00f3n de una variable) pero pueden emplearse como nombres de identificadores en otros contextos donde su significado no se active.<\/li>\n\n\n\n<li><strong>Evoluci\u00f3n del Lenguaje:<\/strong> Con cada nueva versi\u00f3n, Java introduce mejoras que incluyen nuevas palabras o reinterpreta algunas existentes. Por ejemplo, las innovaciones asociadas con la inferencia de tipos, los registros inmutables y el control de la herencia (como <code class=\"\" data-line=\"\">sealed<\/code>, <code class=\"\" data-line=\"\">permits<\/code> y <code class=\"\" data-line=\"\">non-sealed<\/code>) han ampliado el repertorio de palabras del lenguaje, facilitando un desarrollo m\u00e1s seguro y expresivo.<\/li>\n\n\n\n<li><strong>M\u00f3dulos y el Sistema de M\u00f3dulos:<\/strong> Las palabras relacionadas con la modularizaci\u00f3n (<code class=\"\" data-line=\"\">module<\/code>, <code class=\"\" data-line=\"\">requires<\/code>, <code class=\"\" data-line=\"\">exports<\/code>, etc.) reflejan el cambio paradigm\u00e1tico introducido en Java 9, que facilita la organizaci\u00f3n y el mantenimiento de aplicaciones de gran escala.<\/li>\n<\/ul>\n\n\n\n<p>Esta estructura completa y detallada no solo sirve como una r\u00e1pida referencia para desarrolladores, sino que tambi\u00e9n ayuda a entender c\u00f3mo evolucionan los elementos b\u00e1sicos del lenguaje para adaptarse a las exigencias de la programaci\u00f3n moderna.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"7_Bibliotecas_y_Herramientas_de_Desarrollo\"><\/span>7. Bibliotecas y Herramientas de Desarrollo<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"71_Bibliotecas_de_Clases_Estandar\"><\/span>7.1. Bibliotecas de Clases Est\u00e1ndar<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Java cuenta con un extenso conjunto de bibliotecas que abordan desde manejo de datos (java.util) hasta operaciones de entrada\/salida (java.io o java.nio), pasando por networking, seguridad y desarrollo web. Estas bibliotecas permiten que desarrolladores implementen funcionalidades complejas sin reinventar la rueda.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"72_Frameworks_y_Herramientas_Spring_Hibernate_etc\"><\/span>7.2. Frameworks y Herramientas (Spring, Hibernate, etc.)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Para el desarrollo de aplicaciones empresariales, frameworks como <strong>Spring<\/strong> o <strong>Jakarta EE<\/strong> ofrecen estructuras robustas y escalables. Por otro lado, <strong>Hibernate<\/strong> simplifica el mapeo objeto-relacional (ORM), facilitando la interacci\u00f3n con bases de datos. Estas herramientas potencian al lenguaje al proporcionar soluciones integradas a desaf\u00edos comunes en la industria.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"73_Gestion_de_Dependencias_con_Maven_y_Gradle\"><\/span>7.3. Gesti\u00f3n de Dependencias con Maven y Gradle<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>El uso de herramientas de automatizaci\u00f3n como <strong>Maven<\/strong> y <strong>Gradle<\/strong> es fundamental para la gesti\u00f3n de proyectos en Java. Estas permiten definir, gestionar y resolver dependencias de bibliotecas de forma eficiente, adem\u00e1s de automatizar la compilaci\u00f3n, pruebas y empaquetado de aplicaciones.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Herramienta<\/th><th>Uso Principal<\/th><th>Ejemplo de Archivo<\/th><\/tr><\/thead><tbody><tr><td>Maven<\/td><td>Gesti\u00f3n de dependencias y construcci\u00f3n del proyecto<\/td><td><code class=\"\" data-line=\"\">pom.xml<\/code><\/td><\/tr><tr><td>Gradle<\/td><td>Alternativa flexible a Maven con scripts personalizables<\/td><td><code class=\"\" data-line=\"\">build.gradle<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"8_Desarrollo_Practico_en_Java\"><\/span>8. Desarrollo Pr\u00e1ctico en Java<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"81_Solucion_de_Errores_Sintacticos_y_Comunes\"><\/span>8.1. Soluci\u00f3n de Errores Sint\u00e1cticos y Comunes<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Identificar y corregir errores sint\u00e1cticos es parte esencial del desarrollo en Java. El uso de IDEs (como IntelliJ IDEA o Eclipse) y la compilaci\u00f3n mediante <code class=\"\" data-line=\"\">javac<\/code> ayudan a detectar errores en tiempo de compilaci\u00f3n. Herramientas de an\u00e1lisis est\u00e1tico (como SonarQube) tambi\u00e9n resultan \u00fatiles para mantener un c\u00f3digo limpio y robusto.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"82_Mi_Primera_Aplicacion_en_Java_Ejemplo_Paso_a_Paso\"><\/span>8.2. Mi Primera Aplicaci\u00f3n en Java: Ejemplo Paso a Paso<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>El tradicional \u00abHola Mundo\u00bb sigue siendo un excelente punto de partida para aprender la sintaxis b\u00e1sica.<\/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(\"\u00a1Hola, mundo!\");\n    }\n}<\/pre>\n\n\n\n<p>Pasos para compilar y ejecutar:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Guardar el c\u00f3digo en un archivo llamado <code class=\"\" data-line=\"\">HolaMundo.java<\/code>.<\/li>\n\n\n\n<li>Compilar con:<\/li>\n<\/ol>\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=\"\">$ javac HolaMundo.java<\/pre>\n\n\n\n<p>Ejecutar con:<\/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=\"\">$ java HolaMundo<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"83_Compilacion_sin_IDE\"><\/span>8.3. Compilaci\u00f3n sin IDE<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Muchas veces es valioso saber compilar desde la l\u00ednea de comandos. Esto se logra utilizando el compilador <code class=\"\" data-line=\"\">javac<\/code> y posteriormente ejecutando el bytecode con <code class=\"\" data-line=\"\">java<\/code>. Este enfoque es \u00fatil para la integraci\u00f3n en scripts o entornos de servidor.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"84_Ejemplos_Avanzados_Concurrencia_Streams_y_Virtual_Threads\"><\/span>8.4. Ejemplos Avanzados: Concurrencia, Streams y Virtual Threads<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p><strong>Ejemplo con Streams:<\/strong><\/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=\"\">import java.util.Arrays;\n\npublic class Stream {\n    public static void main(String[] args) {\n        int[] nums = {1, 2, 3, 4, 5};\n        Arrays.stream(nums)\n            .map(n -> n * n)\n            .forEach(System.out::println);\n    }\n}<\/pre>\n\n\n\n<p><strong>Ejemplo con Virtual Threads:<\/strong><\/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 VirtualThread {\n    public static void main(String[] args) throws InterruptedException {\n        Thread.startVirtualThread(() -> System.out.println(\"Ejecutando en un hilo virtual\"));\n    }\n}<\/pre>\n\n\n\n<p>Estos ejemplos demuestran desde la sintaxis b\u00e1sica hasta el aprovechamiento de nuevas caracter\u00edsticas para tareas concurrentes y procesamiento de datos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"9_Pruebas_y_Buenas_Practicas\"><\/span>9. Pruebas y Buenas Pr\u00e1cticas<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"91_Recomendaciones_Generales_para_una_Buena_Programacion\"><\/span>9.1. Recomendaciones Generales para una Buena Programaci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Legibilidad:<\/strong> Usa nombres significativos para clases, m\u00e9todos y variables.<\/li>\n\n\n\n<li><strong>Modularidad:<\/strong> Separa la l\u00f3gica en m\u00f3dulos o clases bien definidas.<\/li>\n\n\n\n<li><strong>Comentarios y Documentaci\u00f3n:<\/strong> Aseg\u00farate de documentar el c\u00f3digo y utilizar herramientas de documentaci\u00f3n (como Javadoc).<\/li>\n\n\n\n<li><strong>Revisi\u00f3n de C\u00f3digo:<\/strong> Realiza revisiones peri\u00f3dicas para identificar mejoras y posibles errores.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"92_Pruebas_Unitarias_TDD_y_Manejo_de_Excepciones\"><\/span>9.2. Pruebas Unitarias, TDD y Manejo de Excepciones<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>El desarrollo basado en pruebas (TDD) y el uso de marcos de pruebas como <strong>JUnit<\/strong> son pr\u00e1cticas recomendadas que garantizan la robustez del c\u00f3digo.<\/p>\n\n\n\n<p><em>Ejemplo de test unitario en JUnit 5:<\/em><\/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=\"\">import static org.junit.jupiter.api.Assertions.assertEquals;\nimport org.junit.jupiter.api.Test;\n\npublic class CalculatorTest {\n    @Test\n    public void testSuma() {\n        int resultado = Calculator.sumar(2, 3);\n        assertEquals(5, resultado);\n    }\n}<\/pre>\n\n\n\n<p>Asimismo, un manejo adecuado de excepciones es esencial para prevenir ca\u00eddas inesperadas de la aplicaci\u00f3n. Utiliza bloques <em>try-catch<\/em> y registra errores mediante frameworks de logging.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"93_Depuracion_Optimizacion_y_Logging\"><\/span>9.3. Depuraci\u00f3n, Optimizaci\u00f3n y Logging<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Depuraci\u00f3n:<\/strong> Emplea los depuradores integrados en los IDEs para rastrear y corregir errores durante la ejecuci\u00f3n.<\/li>\n\n\n\n<li><strong>Optimizaci\u00f3n:<\/strong> Perfila la aplicaci\u00f3n para identificar cuellos de botella y utiliza herramientas como VisualVM para an\u00e1lisis de rendimiento.<\/li>\n\n\n\n<li><strong>Logging:<\/strong> Implementa bibliotecas como Log4j o SLF4J para registrar eventos, lo cual facilitar\u00e1 el monitoreo y diagn\u00f3stico en entornos productivos.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"10_Resumen_y_Conclusiones\"><\/span>10. Resumen y Conclusiones<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Java 21 consolida la trayectoria del lenguaje a trav\u00e9s de innovaciones que mantienen su relevancia en el panorama moderno del desarrollo de software. Desde la introducci\u00f3n de Virtual Threads hasta mejoras en la sintaxis y el manejo de datos con Records y Sealed Classes, Java 21 demuestra un compromiso continuo con la eficiencia, la seguridad y la port\u00e1tilidad. Adem\u00e1s, la integraci\u00f3n de pr\u00e1cticas de programaci\u00f3n funcional y el soporte robusto para el dise\u00f1o orientado a objetos aseguran que este lenguaje siga siendo una opci\u00f3n s\u00f3lida para proyectos de cualquier escala. <\/p>\n\n\n\n<p>No pretendo que sepas ni comprendas todo, sino que veas los ejemplos, leas y en futuros capitulos abordaremos todos los temas de este curso de Java SE 21,  <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"11_Referencias_y_Enlaces_Utiles\"><\/span>11. Referencias y Enlaces \u00datiles<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Documentaci\u00f3n Oficial de Oracle Java:<\/strong> https:\/\/docs.oracle.com\/en\/java\/<\/li>\n\n\n\n<li><strong>OpenJDK:<\/strong> https:\/\/openjdk.java.net\/<\/li>\n\n\n\n<li><strong>Gu\u00eda de Estilo de C\u00f3digo Java (Oracle):<\/strong> https:\/\/www.oracle.com\/java\/technologies\/javase\/codeconventions-contents.html<\/li>\n\n\n\n<li><strong>Comunidades y Foros (StackOverflow, GitHub):<\/strong> Recursos esenciales para resolver dudas y conocer las tendencias del desarrollo en Java.<\/li>\n<\/ul>\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>1. Introducci\u00f3n 1.1. \u00bfQu\u00e9 es Java? Java es un lenguaje de programaci\u00f3n de prop\u00f3sito general, orientado a objetos y dise\u00f1ado para ser altamente portable. Con el lema \u00abwrite once, run anywhere\u00bb, Java permite desarrollar aplicaciones que se ejecutan en m\u00faltiples plataformas sin necesidad de recompilar el c\u00f3digo. Esta caracter\u00edstica ha [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4870,"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":[14,27],"class_list":["post-4869","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desarrollo","category-desarrollo-web","category-java","tag-java","tag-oracle"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Introducci\u00f3n al lenguaje Java 21 SE. | javiercachon.com<\/title>\n<meta name=\"description\" content=\"Java es un lenguaje de programaci\u00f3n de prop\u00f3sito general, orientado a objetos y dise\u00f1ado para ser altamente portable.\" \/>\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\/introduccion-al-lenguaje-java-21-se\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introducci\u00f3n al lenguaje Java 21 SE. | javiercachon.com\" \/>\n<meta property=\"og:description\" content=\"Java es un lenguaje de programaci\u00f3n de prop\u00f3sito general, orientado a objetos y dise\u00f1ado para ser altamente portable.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/\" \/>\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-14T18:00:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-20T11:59:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/El-lenguaje-de-programacion-Java-21.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=\"14 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/javiercachon.com\\\/introduccion-al-lenguaje-java-21-se\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/javiercachon.com\\\/introduccion-al-lenguaje-java-21-se\\\/\"},\"author\":{\"name\":\"Javier Cach\u00f3n Garrido\",\"@id\":\"https:\\\/\\\/javiercachon.com\\\/es\\\/#\\\/schema\\\/person\\\/56ea56e1350676921cc43a3bcfd6c997\"},\"headline\":\"Introducci\u00f3n al lenguaje Java 21 SE.\",\"datePublished\":\"2025-05-14T18:00:20+00:00\",\"dateModified\":\"2025-05-20T11:59:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/javiercachon.com\\\/introduccion-al-lenguaje-java-21-se\\\/\"},\"wordCount\":3177,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/javiercachon.com\\\/es\\\/#\\\/schema\\\/person\\\/56ea56e1350676921cc43a3bcfd6c997\"},\"image\":{\"@id\":\"https:\\\/\\\/javiercachon.com\\\/introduccion-al-lenguaje-java-21-se\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/javiercachon.com\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/El-lenguaje-de-programacion-Java-21.jpg\",\"keywords\":[\"Java\",\"Oracle\"],\"articleSection\":[\"Desarrollo\",\"Desarrollo Web\",\"Java\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/javiercachon.com\\\/introduccion-al-lenguaje-java-21-se\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/javiercachon.com\\\/introduccion-al-lenguaje-java-21-se\\\/\",\"url\":\"https:\\\/\\\/javiercachon.com\\\/introduccion-al-lenguaje-java-21-se\\\/\",\"name\":\"Introducci\u00f3n al lenguaje Java 21 SE. | javiercachon.com\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/javiercachon.com\\\/es\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/javiercachon.com\\\/introduccion-al-lenguaje-java-21-se\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/javiercachon.com\\\/introduccion-al-lenguaje-java-21-se\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/javiercachon.com\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/El-lenguaje-de-programacion-Java-21.jpg\",\"datePublished\":\"2025-05-14T18:00:20+00:00\",\"dateModified\":\"2025-05-20T11:59:00+00:00\",\"description\":\"Java es un lenguaje de programaci\u00f3n de prop\u00f3sito general, orientado a objetos y dise\u00f1ado para ser altamente portable.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/javiercachon.com\\\/introduccion-al-lenguaje-java-21-se\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/javiercachon.com\\\/introduccion-al-lenguaje-java-21-se\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/javiercachon.com\\\/introduccion-al-lenguaje-java-21-se\\\/#primaryimage\",\"url\":\"https:\\\/\\\/javiercachon.com\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/El-lenguaje-de-programacion-Java-21.jpg\",\"contentUrl\":\"https:\\\/\\\/javiercachon.com\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/El-lenguaje-de-programacion-Java-21.jpg\",\"width\":1920,\"height\":1080},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/javiercachon.com\\\/introduccion-al-lenguaje-java-21-se\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"inicio\",\"item\":\"https:\\\/\\\/javiercachon.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introducci\u00f3n al lenguaje Java 21 SE.\"}]},{\"@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":"Introducci\u00f3n al lenguaje Java 21 SE. | javiercachon.com","description":"Java es un lenguaje de programaci\u00f3n de prop\u00f3sito general, orientado a objetos y dise\u00f1ado para ser altamente portable.","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\/introduccion-al-lenguaje-java-21-se\/","og_locale":"es_ES","og_type":"article","og_title":"Introducci\u00f3n al lenguaje Java 21 SE. | javiercachon.com","og_description":"Java es un lenguaje de programaci\u00f3n de prop\u00f3sito general, orientado a objetos y dise\u00f1ado para ser altamente portable.","og_url":"https:\/\/javiercachon.com\/es\/introduccion-al-lenguaje-java-21-se\/","og_site_name":"javiercachon.com","article_publisher":"https:\/\/www.facebook.com\/javiercachon82","article_author":"https:\/\/www.facebook.com\/javiercachon82","article_published_time":"2025-05-14T18:00:20+00:00","article_modified_time":"2025-05-20T11:59:00+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/El-lenguaje-de-programacion-Java-21.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":"14 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/javiercachon.com\/introduccion-al-lenguaje-java-21-se\/#article","isPartOf":{"@id":"https:\/\/javiercachon.com\/introduccion-al-lenguaje-java-21-se\/"},"author":{"name":"Javier Cach\u00f3n Garrido","@id":"https:\/\/javiercachon.com\/es\/#\/schema\/person\/56ea56e1350676921cc43a3bcfd6c997"},"headline":"Introducci\u00f3n al lenguaje Java 21 SE.","datePublished":"2025-05-14T18:00:20+00:00","dateModified":"2025-05-20T11:59:00+00:00","mainEntityOfPage":{"@id":"https:\/\/javiercachon.com\/introduccion-al-lenguaje-java-21-se\/"},"wordCount":3177,"commentCount":0,"publisher":{"@id":"https:\/\/javiercachon.com\/es\/#\/schema\/person\/56ea56e1350676921cc43a3bcfd6c997"},"image":{"@id":"https:\/\/javiercachon.com\/introduccion-al-lenguaje-java-21-se\/#primaryimage"},"thumbnailUrl":"https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/El-lenguaje-de-programacion-Java-21.jpg","keywords":["Java","Oracle"],"articleSection":["Desarrollo","Desarrollo Web","Java"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/javiercachon.com\/introduccion-al-lenguaje-java-21-se\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/javiercachon.com\/introduccion-al-lenguaje-java-21-se\/","url":"https:\/\/javiercachon.com\/introduccion-al-lenguaje-java-21-se\/","name":"Introducci\u00f3n al lenguaje Java 21 SE. | javiercachon.com","isPartOf":{"@id":"https:\/\/javiercachon.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/javiercachon.com\/introduccion-al-lenguaje-java-21-se\/#primaryimage"},"image":{"@id":"https:\/\/javiercachon.com\/introduccion-al-lenguaje-java-21-se\/#primaryimage"},"thumbnailUrl":"https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/El-lenguaje-de-programacion-Java-21.jpg","datePublished":"2025-05-14T18:00:20+00:00","dateModified":"2025-05-20T11:59:00+00:00","description":"Java es un lenguaje de programaci\u00f3n de prop\u00f3sito general, orientado a objetos y dise\u00f1ado para ser altamente portable.","breadcrumb":{"@id":"https:\/\/javiercachon.com\/introduccion-al-lenguaje-java-21-se\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/javiercachon.com\/introduccion-al-lenguaje-java-21-se\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/javiercachon.com\/introduccion-al-lenguaje-java-21-se\/#primaryimage","url":"https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/El-lenguaje-de-programacion-Java-21.jpg","contentUrl":"https:\/\/javiercachon.com\/wp-content\/uploads\/2025\/05\/El-lenguaje-de-programacion-Java-21.jpg","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/javiercachon.com\/introduccion-al-lenguaje-java-21-se\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"inicio","item":"https:\/\/javiercachon.com\/"},{"@type":"ListItem","position":2,"name":"Introducci\u00f3n al lenguaje Java 21 SE."}]},{"@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\/El-lenguaje-de-programacion-Java-21.jpg","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/javiercachon.com\/es\/wp-json\/wp\/v2\/posts\/4869","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=4869"}],"version-history":[{"count":0,"href":"https:\/\/javiercachon.com\/es\/wp-json\/wp\/v2\/posts\/4869\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/javiercachon.com\/es\/wp-json\/wp\/v2\/media\/4870"}],"wp:attachment":[{"href":"https:\/\/javiercachon.com\/es\/wp-json\/wp\/v2\/media?parent=4869"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/javiercachon.com\/es\/wp-json\/wp\/v2\/categories?post=4869"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/javiercachon.com\/es\/wp-json\/wp\/v2\/tags?post=4869"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}