{"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\/en\/introduccion-al-lenguaje-java-21-se\/","title":{"rendered":"Introduction to the Java 21 SE language."},"content":{"rendered":"<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\">Article table of contents.<\/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=\"Toggle Table of Content\"><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\/en\/introduccion-al-lenguaje-java-21-se\/#1_Introduccion\" >1. Introduction<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#11_%C2%BFQue_es_Java\" >1.1. What is 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\/en\/introduccion-al-lenguaje-java-21-se\/#12_Breve_Historia_e_Impacto_en_la_Informatica\" >1.2. Brief History and Impact on Computing<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#2_Conceptos_Fundamentales_de_Java\" >2. Fundamental Java Concepts<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#21_Los_Origenes_de_Java\" >2.1. The Origins of 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\/en\/introduccion-al-lenguaje-java-21-se\/#22_Relacion_con_C_C_y_C\" >2.2. Relationship with C, C++ and 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\/en\/introduccion-al-lenguaje-java-21-se\/#23_La_Contribucion_de_Java_a_Internet\" >2.3. Java&#039;s Contribution to the 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\/en\/introduccion-al-lenguaje-java-21-se\/#3_Evolucion_del_Lenguaje_Java\" >3. Evolution of the Java Language<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#31_Historia_del_Lenguaje_Java\" >3.1. History of the Java Language<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#32_El_Papel_de_Java_en_la_Informatica_del_Ano_2025\" >3.2. The Role of Java in Computing in 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\/en\/introduccion-al-lenguaje-java-21-se\/#4_Terminologia_y_Paradigmas_en_Java\" >4. Terminology and Paradigms in 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\/en\/introduccion-al-lenguaje-java-21-se\/#41_Programacion_Orientada_a_Objetos_POO\" >4.1. Object-Oriented Programming (OOP)<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#%C2%BFQue_es_un_objeto_y_que_es_una_clase\" >What is an object and what is a class?<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#1_Encapsulacion\" >1. Encapsulation<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#2_Herencia\" >2. Inheritance<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#3_Polimorfismo\" >3. Polymorphism<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#42_Otros_Paradigmas_Funcional_y_Concurrente\" >4.2. Other Paradigms: Functional and Concurrent<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#5_Java_21_Caracteristicas_y_Novedades\" >5. Java 21: Features and What&#039;s New<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#51_Novedades_y_Mejoras\" >5.1. New Features and Improvements<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#52_Ejemplos_Practicos_en_Java_21\" >5.2. Practical Examples in 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\/en\/introduccion-al-lenguaje-java-21-se\/#6_Documentacion_y_Recursos_de_Java\" >6. Java Documentation and Resources<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#61_La_Documentacion_Oficial_de_Java\" >6.1. The Official Java Documentation<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#62_Tecnicas_de_Sangrado_y_Convenciones_de_Codigo\" >6.2. Bleeding Techniques and Code Conventions<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#63_Tabla_de_Palabras_Reservadas_del_Lenguaje_y_Otros_Elementos\" >6.3. Table of Reserved Words of the Language and Other Elements<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#Consideraciones_Adicionales\" >Additional Considerations<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#7_Bibliotecas_y_Herramientas_de_Desarrollo\" >7. Libraries and Development Tools<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#71_Bibliotecas_de_Clases_Estandar\" >7.1. Standard Class Libraries<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#72_Frameworks_y_Herramientas_Spring_Hibernate_etc\" >7.2. Frameworks and Tools (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\/en\/introduccion-al-lenguaje-java-21-se\/#73_Gestion_de_Dependencias_con_Maven_y_Gradle\" >7.3. Dependency Management with Maven and 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\/en\/introduccion-al-lenguaje-java-21-se\/#8_Desarrollo_Practico_en_Java\" >8. Practical Development in 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\/en\/introduccion-al-lenguaje-java-21-se\/#81_Solucion_de_Errores_Sintacticos_y_Comunes\" >8.1. Solving Syntactic and Common Errors<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#82_Mi_Primera_Aplicacion_en_Java_Ejemplo_Paso_a_Paso\" >8.2. My First Java Application: Step-by-Step Example<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#83_Compilacion_sin_IDE\" >8.3. Compiling without 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\/en\/introduccion-al-lenguaje-java-21-se\/#84_Ejemplos_Avanzados_Concurrencia_Streams_y_Virtual_Threads\" >8.4. Advanced Examples: Concurrency, Streams, and 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\/en\/introduccion-al-lenguaje-java-21-se\/#9_Pruebas_y_Buenas_Practicas\" >9. Tests and Good Practices<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#91_Recomendaciones_Generales_para_una_Buena_Programacion\" >9.1. General Recommendations for Good Programming<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#92_Pruebas_Unitarias_TDD_y_Manejo_de_Excepciones\" >9.2. Unit Testing, TDD, and Exception Handling<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#93_Depuracion_Optimizacion_y_Logging\" >9.3. Debugging, Optimization, and 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\/en\/introduccion-al-lenguaje-java-21-se\/#10_Resumen_y_Conclusiones\" >10. Summary and Conclusions<\/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\/en\/introduccion-al-lenguaje-java-21-se\/#11_Referencias_y_Enlaces_Utiles\" >11. References and Useful Links<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"1_Introduccion\"><\/span>1. Introduction<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. What is Java?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Java is a general-purpose, object-oriented programming language designed to be highly portable. With the motto &quot;write once, run anywhere,&quot; Java allows you to develop applications that run on multiple platforms without having to recompile the code. This feature has made Java a mainstay of software development in both the business world and academia and emerging technology.<\/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. Brief History and Impact on Computing<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Since its introduction in 1995, Java has evolved to become one of the most popular programming languages. Originally developed by Sun Microsystems, its Java Virtual Machine (JVM)-based architecture has enabled complex applications to run with high performance and security on a variety of devices, from servers to mobile devices. Its impact on the internet, the creation of robust frameworks, and its continued evolution make it a benchmark for secure and scalable development in 2025.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"2_Conceptos_Fundamentales_de_Java\"><\/span>2. Fundamental Java Concepts<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. The Origins of Java<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Born in a context where the need for interoperability was high, Java was designed to offer security, portability, and a clear syntax derived from languages like C and C++. Its creation drove a shift in application development for the internet and embedded devices, marking the beginning of a new era in computing.<\/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. Relationship with C, C++ and C#<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Although Java shares a similar syntax with C and C++, its foundation focuses on avoiding common problems in these languages, such as manual memory management and the complexity of multiple inheritance. On the other hand, C# was partly inspired by Java and has made competing design decisions; however, Java has distinguished itself with its &quot;platform-neutral&quot; philosophy and a very active developer community.<\/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. Java&#039;s Contribution to the Internet<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Java revolutionized web application development with its ability to compile to bytecode, allowing the same code to run on any device with a JVM installed. This feature has been integral to the growth of server-side applications, web security, and mobile application development.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"3_Evolucion_del_Lenguaje_Java\"><\/span>3. Evolution of the Java Language<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. History of the Java Language<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>From its first version in the 1990s to the arrival of Java 21, the language has undergone numerous iterations. Each update has introduced improvements in performance, syntax, and functionality, adapting to the needs of both business programming and new technological trends.<\/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. The Role of Java in Computing in 2025<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Java remains essential in 2025, being used in critical applications in finance, telecommunications, embedded systems, and high-availability web services. Three pillars stand out:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3.2.1. Security<\/h4>\n\n\n\n<p>The JVM&#039;s robust architecture and strict resource access control in Java provide a secure environment against vulnerabilities. The inclusion of mechanisms such as <em>sandboxing<\/em> and code-level security policies make Java one of the most reliable languages for sensitive applications.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3.2.2. Portability<\/h4>\n\n\n\n<p>The generated bytecode allows Java code to run on any operating system that has the JVM installed, making migration between platforms almost transparent.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3.2.3. The Magic of Bytecode<\/h4>\n\n\n\n<p>The Java compilation process transforms source code into bytecode\u2014a set of instructions interpreted by the JVM\u2014enabling hardware independence and runtime optimization, ensuring competitive performance and high scalability.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"4_Terminologia_y_Paradigmas_en_Java\"><\/span>4. Terminology and Paradigms in 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. Object-Oriented Programming (OOP)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>The <strong>Object-Oriented Programming (OOP)<\/strong> It is a development paradigm that organizes code around <strong>objects<\/strong>, rather than independent functions and data. This approach allows for more intuitive modeling of systems, approximating the way humans think about the real world.<\/p>\n\n\n\n<p>Java is a language that is designed from its foundations to work with OOP, making use of concepts such as <strong>encapsulation, inheritance, polymorphism, and abstraction<\/strong>, which allow the construction of modular, reusable and easy-to-maintain programs.<\/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>What is an object and what is a class?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>In OOP, the <strong>objects<\/strong> represent instances of <strong>classes<\/strong>, which are structures that define the behavior and characteristics of a specific type of entity.<\/p>\n\n\n\n<p><strong>Simple example<\/strong> of a class and an object in 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=\"\" data-no-auto-translation=\"\">\/\/ 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>In this example, the <strong>class <\/strong><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">Persona<\/code> defines two attributes (<code class=\"\" data-line=\"\" data-no-auto-translation=\"\">nombre<\/code> and <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">edad<\/code>), a <strong>builder<\/strong> and a method (<code class=\"\" data-line=\"\" data-no-auto-translation=\"\">mostrarInfo()<\/code>). Then, in class <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">Main<\/code>, a is created <strong>object<\/strong> (<code class=\"\" data-line=\"\" data-no-auto-translation=\"\">persona1<\/code>) and the method is called to display its information.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"1_Encapsulacion\"><\/span>1. Encapsulation<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>The <strong>encapsulation<\/strong> It consists of hiding the internal details of an object and allowing access only through defined methods. This improves code security and modularity.<\/p>\n\n\n\n<p><strong>Example of encapsulation:<\/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=\"\" data-no-auto-translation=\"\">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>Here, the attribute <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">saldo<\/code> is <strong>private<\/strong> (<code class=\"\" data-line=\"\" data-no-auto-translation=\"\">private<\/code>), which prevents direct access. Instead, public methods (<code class=\"\" data-line=\"\" data-no-auto-translation=\"\">depositar<\/code> and <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">consultarSaldo<\/code>) to interact with it, which reinforces the security and integrity of the data.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"2_Herencia\"><\/span>2. Inheritance<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>The <strong>inheritance<\/strong> allows a class (<code class=\"\" data-line=\"\" data-no-auto-translation=\"\">subclase<\/code>) get features from another class (<code class=\"\" data-line=\"\" data-no-auto-translation=\"\">superclase<\/code>). This facilitates code reuse and class specialization.<\/p>\n\n\n\n<p><strong>Example of inheritance:<\/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=\"\" data-no-auto-translation=\"\">\/\/ 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>The class <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">Perro<\/code> <strong>inherits<\/strong> of <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">Animal<\/code>, overwriting (<code class=\"\" data-line=\"\" data-no-auto-translation=\"\">@Override<\/code>) the method <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">hacerSonido()<\/code>. Thanks to inheritance, <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">Perro<\/code> you can use the behavior of <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">Animal<\/code> and modify it according to your needs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"3_Polimorfismo\"><\/span>3. Polymorphism<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>He <strong>polymorphism<\/strong> allows the same method to be executed in different ways depending on the object that calls it. This is achieved through the <strong>overwrite<\/strong> (<code class=\"\" data-line=\"\" data-no-auto-translation=\"\">@Override<\/code>) in inherited classes.<\/p>\n\n\n\n<p><strong>Example of polymorphism:<\/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=\"\" data-no-auto-translation=\"\">\/\/ 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>Here, although <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">v1<\/code> and <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">v2<\/code> are declared as <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">Vehiculo<\/code>, at runtime each object executes its own version of the method <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">acelerar()<\/code>, showing the effect of polymorphism.<\/p>\n\n\n\n<p>The <strong>Object-Oriented Programming (OOP)<\/strong> is fundamental in Java and allows you to create flexible, organized and reusable systems. By using <strong>encapsulation<\/strong>, <strong>inheritance<\/strong> and <strong>polymorphism<\/strong>, developers can design robust applications with less redundancy and greater code clarity.<\/p>\n\n\n\n<p>In Java 21, the OOP paradigm continues to evolve with improvements such as <strong>Records<\/strong>, <strong>Sealed Classes<\/strong> and the implementation of more expressive patterns through <strong>Pattern Matching<\/strong>, which further enhances code security and maintainability.<\/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. Other Paradigms: Functional and Concurrent<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Beyond OOP, Java has incorporated elements of functional programming into recent versions (e.g., <em>lambdas<\/em> and <em>streams<\/em>). Likewise, the evolution of the language in high-concurrency environments has led to the introduction of advanced tools such as Virtual Threads, which simplify and optimize the management of concurrent tasks.<\/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: Features and What&#039;s New<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. New Features and Improvements<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Java 21 brings a series of improvements that boost both performance and developer productivity. Key new features include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Virtual Threads and Structured Concurrency:<\/strong> Facilitating the creation of lightweight threads and the management of multiple concurrent tasks in a more secure and scalable way.<\/li>\n\n\n\n<li><strong>Improved Records and Sealed Classes:<\/strong> These mechanisms allow you to create immutable classes and restrict inheritance to a controlled set of subclasses, improving the clarity and security of the design.<\/li>\n\n\n\n<li><strong>Pattern Matching for Switch:<\/strong> Syntax refinements that allow you to work with different data types in a more expressive and less error-prone manner.<\/li>\n\n\n\n<li><strong>Internal Optimizations and Better Memory Management:<\/strong> It provides performance improvements in high-demand scenarios, reducing resource management overhead.<\/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. Practical Examples in Java 21<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Below are some code examples that illustrate the new features in 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=\"\" data-no-auto-translation=\"\">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 and 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=\"\" data-no-auto-translation=\"\">\/\/ 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 on 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=\"\" data-no-auto-translation=\"\">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>These examples illustrate how Java 21 combines traditional robustness with innovations that simplify safe, concurrent development.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"6_Documentacion_y_Recursos_de_Java\"><\/span>6. Java Documentation and Resources<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. The Official Java Documentation<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Oracle&#039;s official documentation and the OpenJDK community are primary sources for a thorough understanding of each language version. It&#039;s imperative to consult these resources to stay up-to-date on best practices and new 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. Bleeding Techniques and Code Conventions<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Proper indentation and consistent use of naming conventions are essential for code readability and maintainability. It&#039;s recommended to follow official style guides (such as Oracle&#039;s) and use automatic formatting tools.<\/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. Table of Reserved Words of the Language and Other Elements<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>In Java, reserved words (or keywords) are lexemes that have a fixed, special meaning for the compiler. This means they cannot be used to name classes, methods, variables, or other identifiers, as they are intended to define the structure and behavior of the language. In addition to these &quot;historical&quot; words, new words have been incorporated in newer versions of Java, some of them as contextual reserved words, which provide improvements in code conciseness and readability (for example, for type inference or handling immutable and sealed classes).<\/p>\n\n\n\n<p>Below is a complete table with the traditional reserved words and some of the new features introduced in later versions (from Java 9 onwards):<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Table of Reserved and Contextual Words in Java<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Reserved Word<\/th><th>Brief description<\/th><th>Notes \/ Version<\/th><\/tr><\/thead><tbody><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">abstract<\/code><\/td><td>Declare abstract classes or methods.<\/td><td>Prevents direct instantiation.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">assert<\/code><\/td><td>Allows assertions to be made for debugging.<\/td><td>Introduced in Java SE 1.4.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">boolean<\/code><\/td><td>Defines the primitive data type for logical values.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">break<\/code><\/td><td>Interrupts the execution of a cycle or block <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">switch<\/code>.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">byte<\/code><\/td><td>Declares variables of 8-bit integer data type.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">case<\/code><\/td><td>Define each option in a statement <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">switch<\/code>.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">catch<\/code><\/td><td>Catch exceptions thrown in a block <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">try<\/code>.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">char<\/code><\/td><td>Primitive type to represent a character.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">class<\/code><\/td><td>Declare a class.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">const<\/code><\/td><td>Reserved but not currently in use.<\/td><td>Reserved for future use.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">continue<\/code><\/td><td>Interrupts the current iteration of a loop and moves on to the next.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">default<\/code><\/td><td>Defines the default case in a <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">switch<\/code> or default methods in interfaces.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">do<\/code><\/td><td>Start a cycle <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">do-while<\/code>.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">double<\/code><\/td><td>Primitive type for double-precision decimal numbers.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">else<\/code><\/td><td>Alternative in a statement <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">if<\/code>.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">enum<\/code><\/td><td>Declares an enumerated type.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">extends<\/code><\/td><td>Indicates that a class inherits from another or an interface extends another.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">final<\/code><\/td><td>Declare constants or prevent inheritance\/overwriting.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">finally<\/code><\/td><td>Defines a block that is executed after <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">try<\/code>\/<code class=\"\" data-line=\"\" data-no-auto-translation=\"\">catch<\/code>, regardless of the outcome.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">float<\/code><\/td><td>Primitive type for single-precision decimal numbers.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">for<\/code><\/td><td>Start a cycle <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">for<\/code>.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">goto<\/code><\/td><td>Reserved but not used in Java.<\/td><td>Reserved for future use.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">if<\/code><\/td><td>Start a condition.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">implements<\/code><\/td><td>Indicates that a class implements one or more interfaces.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">import<\/code><\/td><td>Allows you to include classes or packages in a source file.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">instanceof<\/code><\/td><td>Checks whether an object is an instance of a given class or interface.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">int<\/code><\/td><td>Primitive type for 32-bit integers.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">interface<\/code><\/td><td>Declare an interface.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">long<\/code><\/td><td>Primitive type for 64-bit integers.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">native<\/code><\/td><td>Indicates that a method is implemented in native code (e.g., C\/C++).<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">new<\/code><\/td><td>Creates a new instance of an object.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">null<\/code><\/td><td>Literal representing the absence of a value.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">package<\/code><\/td><td>Declares the package to which the class belongs.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">private<\/code><\/td><td>Defines restricted access to the class scope.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">protected<\/code><\/td><td>Defines access at the package and subclass level.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">public<\/code><\/td><td>Indicates public access, without restrictions.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">return<\/code><\/td><td>Returns a value from a method or terminates its execution.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">short<\/code><\/td><td>Primitive type for 16-bit integers.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">static<\/code><\/td><td>Declare members belonging to the class, not to specific instances.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">strictfp<\/code><\/td><td>Restricts precision and behavior in float calculations.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">super<\/code><\/td><td>Refers to the immediate parent class.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">switch<\/code><\/td><td>Starts a multiple-select statement.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">synchronized<\/code><\/td><td>Mark methods or blocks for secure access in concurrent environments.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">this<\/code><\/td><td>Refers to the current instance.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">throw<\/code><\/td><td>Explicitly throws an exception.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">throws<\/code><\/td><td>Declare the exceptions that a method can propagate.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">transient<\/code><\/td><td>Indicates that an attribute should not be serialized.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">try<\/code><\/td><td>Start exception handling.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">void<\/code><\/td><td>Specifies that a method does not return any value.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">volatile<\/code><\/td><td>Marks a variable as susceptible to asynchronous changes, avoiding local caching.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">while<\/code><\/td><td>Starts a cycle based on a condition.<\/td><td><\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">var<\/code><\/td><td>Allows you to declare variables with type inference.<\/td><td>Contextual reserved word (since Java 10).<\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">record<\/code><\/td><td>Defines an immutable class in a compact way, ideal for storing data.<\/td><td>Introduced in Java 16.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">sealed<\/code><\/td><td>Restricts which classes can extend or implement a sealed class or interface.<\/td><td>Introduced in Java 17.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">permits<\/code><\/td><td>Explicitly list the classes that can extend a sealed class.<\/td><td>Introduced in Java 17.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">non-sealed<\/code><\/td><td>Allows a subclass of a sealed class to renounce the seal, opening inheritance.<\/td><td>Introduced in Java 17.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">yield<\/code><\/td><td>It is used in expressions of <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">switch<\/code> to return a value.<\/td><td>Consolidated in Java 14 (previously in preview since Java 13).<\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">module<\/code><\/td><td>Begins the declaration of a module in the Java module system.<\/td><td>Introduced in Java 9.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">open<\/code><\/td><td>Indicates that a module allows reflection on certain packages.<\/td><td>Introduced in Java 9.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">requires<\/code><\/td><td>Specifies the dependency of a module.<\/td><td>Introduced in Java 9.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">exports<\/code><\/td><td>Declares which packages in a module are available to other modules.<\/td><td>Introduced in Java 9.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">opens<\/code><\/td><td>Similar to <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">exports<\/code>, but allows runtime reflection.<\/td><td>Introduced in Java 9.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">uses<\/code><\/td><td>Declare the dependency on the implementation of a service.<\/td><td>Introduced in Java 9.<\/td><\/tr><tr><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">provides<\/code><\/td><td>Indicates that a module offers an implementation of a specific service.<\/td><td>Introduced in 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>Additional Considerations<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Contextual Reserved Words:<\/strong> Some words, like <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">var<\/code>, are reserved in certain contexts. This means that their special meaning applies only in predefined situations (for example, in the declaration of a variable), but they can be used as identifier names in other contexts where their meaning is not activated.<\/li>\n\n\n\n<li><strong>Evolution of Language:<\/strong> With each new version, Java introduces improvements that include new words or reinterpret existing ones. For example, innovations associated with type inference, immutable records, and inheritance control (such as <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">sealed<\/code>, <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">permits<\/code> and <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">non-sealed<\/code>) have expanded the repertoire of words in the language, facilitating more secure and expressive development.<\/li>\n\n\n\n<li><strong>Modules and the Module System:<\/strong> Words related to modularization (<code class=\"\" data-line=\"\" data-no-auto-translation=\"\">module<\/code>, <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">requires<\/code>, <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">exports<\/code>, etc.) reflect the paradigm shift introduced in Java 9, which makes it easier to organize and maintain large-scale applications.<\/li>\n<\/ul>\n\n\n\n<p>This comprehensive and detailed framework not only serves as a quick reference for developers, but also helps them understand how the language&#039;s core elements evolve to meet the demands of modern programming.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"7_Bibliotecas_y_Herramientas_de_Desarrollo\"><\/span>7. Libraries and Development Tools<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. Standard Class Libraries<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Java has an extensive set of libraries that cover everything from data management (java.util) to input\/output operations (java.io or java.nio), networking, security, and web development. These libraries allow developers to implement complex features without reinventing the wheel.<\/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 and Tools (Spring, Hibernate, etc.)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>For the development of business applications, frameworks such as <strong>Spring<\/strong> either <strong>Jakarta EE<\/strong> They offer robust and scalable structures. On the other hand, <strong>Hibernate<\/strong> It simplifies object-relational mapping (ORM), facilitating interaction with databases. These tools enhance the language by providing integrated solutions to common industry challenges.<\/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. Dependency Management with Maven and Gradle<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>The use of automation tools such as <strong>Maven<\/strong> and <strong>Gradle<\/strong> It&#039;s essential for Java project management. It allows you to efficiently define, manage, and resolve library dependencies, as well as automate the compilation, testing, and packaging of applications.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Tool<\/th><th>Main Use<\/th><th>File Example<\/th><\/tr><\/thead><tbody><tr><td>Maven<\/td><td>Dependency management and project construction<\/td><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">pom.xml<\/code><\/td><\/tr><tr><td>Gradle<\/td><td>Flexible alternative to Maven with customizable scripts<\/td><td><code class=\"\" data-line=\"\" data-no-auto-translation=\"\">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. Practical Development in 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. Solving Syntactic and Common Errors<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Identifying and correcting syntax errors is an essential part of Java development. Using IDEs (such as IntelliJ IDEA or Eclipse) and compiling with <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">javac<\/code> They help detect errors at compile time. Static analysis tools (such as SonarQube) are also useful for maintaining clean and robust code.<\/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. My First Java Application: Step-by-Step Example<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>The traditional \u201cHello World\u201d is still an excellent starting point for learning basic syntax.<\/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=\"\" data-no-auto-translation=\"\">public class HolaMundo {\n    public static void main(String[] args) {\n        System.out.println(\"\u00a1Hola, mundo!\");\n    }\n}<\/pre>\n\n\n\n<p>Steps to compile and run:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Save the code in a file called <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">HolaMundo.java<\/code>.<\/li>\n\n\n\n<li>Compile with:<\/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=\"\" data-no-auto-translation=\"\">$ javac HolaMundo.java<\/pre>\n\n\n\n<p>Run with:<\/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=\"\" data-no-auto-translation=\"\">$ 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. Compiling without IDE<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>It is often valuable to know how to compile from the command line. This is achieved by using the compiler <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">javac<\/code> and subsequently executing the bytecode with <code class=\"\" data-line=\"\" data-no-auto-translation=\"\">java<\/code>This approach is useful for integration into scripts or server environments.<\/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. Advanced Examples: Concurrency, Streams, and Virtual Threads<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p><strong>Example with 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=\"\" data-no-auto-translation=\"\">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>Example with 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=\"\" data-no-auto-translation=\"\">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>These examples demonstrate everything from basic syntax to leveraging new features for concurrent tasks and data processing.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"9_Pruebas_y_Buenas_Practicas\"><\/span>9. Tests and Good Practices<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. General Recommendations for Good Programming<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Readability:<\/strong> Use meaningful names for classes, methods, and variables.<\/li>\n\n\n\n<li><strong>Modularity:<\/strong> Separate the logic into well-defined modules or classes.<\/li>\n\n\n\n<li><strong>Comments and Documentation:<\/strong> Be sure to document your code and use documentation tools (such as Javadoc).<\/li>\n\n\n\n<li><strong>Code Review:<\/strong> Conduct periodic reviews to identify improvements and potential errors.<\/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. Unit Testing, TDD, and Exception Handling<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Test-driven development (TDD) and the use of testing frameworks such as <strong>JUnit<\/strong> They are recommended practices that guarantee the robustness of the code.<\/p>\n\n\n\n<p><em>Example of unit test in 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=\"\" data-no-auto-translation=\"\">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>Likewise, proper exception handling is essential to prevent unexpected application crashes. Use exception blocks. <em>try-catch<\/em> and logs errors using logging frameworks.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"93_Depuracion_Optimizacion_y_Logging\"><\/span>9.3. Debugging, Optimization, and Logging<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Depuration:<\/strong> Use the debuggers built into IDEs to track and correct errors at runtime.<\/li>\n\n\n\n<li><strong>Optimization:<\/strong> Profile the application to identify bottlenecks and use tools like VisualVM for performance analysis.<\/li>\n\n\n\n<li><strong>Logging:<\/strong> Implement libraries like Log4j or SLF4J to log events, which will facilitate monitoring and diagnostics in production environments.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"10_Resumen_y_Conclusiones\"><\/span>10. Summary and Conclusions<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Java 21 solidifies the language&#039;s trajectory through innovations that maintain its relevance in the modern software development landscape. From the introduction of Virtual Threads to improvements in syntax and data handling with Records and Sealed Classes, Java 21 demonstrates a continued commitment to efficiency, security, and portability. Furthermore, the integration of functional programming practices and robust support for object-oriented design ensure that this language remains a solid choice for projects of any scale. <\/p>\n\n\n\n<p>I don&#039;t expect you to know or understand everything, but rather to see the examples, read, and in future chapters we will cover all the topics in this Java SE 21 course.  <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"11_Referencias_y_Enlaces_Utiles\"><\/span>11. References and Useful Links<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Official Oracle Java Documentation:<\/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>Java Code Style Guide (Oracle):<\/strong> https:\/\/www.oracle.com\/java\/technologies\/javase\/codeconventions-contents.html<\/li>\n\n\n\n<li><strong>Communities and Forums (StackOverflow, GitHub):<\/strong> Essential resources to resolve doubts and learn about Java development trends.<\/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\/en\/introduccion-al-lenguaje-java-21-se\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\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\/en\/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=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Javier Cach\u00f3n Garrido\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutes\" \/>\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\":\"en-US\",\"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\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/javiercachon.com\\\/introduccion-al-lenguaje-java-21-se\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@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\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/javiercachon.com\\\/es\\\/#\\\/schema\\\/person\\\/56ea56e1350676921cc43a3bcfd6c997\",\"name\":\"Javier Cach\u00f3n Garrido\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@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\\\/en\\\/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\/en\/introduccion-al-lenguaje-java-21-se\/","og_locale":"en_US","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\/en\/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":{"Written by":"Javier Cach\u00f3n Garrido","Est. reading time":"14 minutes"},"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":"en-US","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":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/javiercachon.com\/introduccion-al-lenguaje-java-21-se\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@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":"It is a revolutionary educational platform that seeks to democratize access to computer science knowledge.","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":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/javiercachon.com\/es\/#\/schema\/person\/56ea56e1350676921cc43a3bcfd6c997","name":"Javier Cach\u00f3n Garrido","image":{"@type":"ImageObject","inLanguage":"en-US","@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\/en\/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\/en\/wp-json\/wp\/v2\/posts\/4869","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/javiercachon.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/javiercachon.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/javiercachon.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/javiercachon.com\/en\/wp-json\/wp\/v2\/comments?post=4869"}],"version-history":[{"count":0,"href":"https:\/\/javiercachon.com\/en\/wp-json\/wp\/v2\/posts\/4869\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/javiercachon.com\/en\/wp-json\/wp\/v2\/media\/4870"}],"wp:attachment":[{"href":"https:\/\/javiercachon.com\/en\/wp-json\/wp\/v2\/media?parent=4869"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/javiercachon.com\/en\/wp-json\/wp\/v2\/categories?post=4869"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/javiercachon.com\/en\/wp-json\/wp\/v2\/tags?post=4869"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}