{"id":35434,"date":"2020-05-25T19:16:00","date_gmt":"2020-05-25T19:16:00","guid":{"rendered":"https:\/\/blog.jetbrains.com\/es\/?p=14"},"modified":"2020-06-08T14:58:29","modified_gmt":"2020-06-08T14:58:29","slug":"25-cosas-que-amamos-de-java","status":"publish","type":"post","link":"https:\/\/blog.jetbrains.com\/es\/2020\/05\/25\/25-cosas-que-amamos-de-java\/","title":{"rendered":"25 cosas que amamos de Java"},"content":{"rendered":"\u00a1A JetBrains le encantan todos los lenguajes de programaci\u00f3n y todo tipo de desarrolladores! En mayo de 2020 \u00a1Java cumple 25 a\u00f1os! Por eso queremos hacerle un homenaje y hablar de 25 cosas que adoramos de Java y la JVM.\r\n\r\n\r\n\r\n\r\nCompatibilidad con versiones anteriores\r\nJava es casi el \u00fanico lenguaje capaz de ejecutar c\u00f3digo de hace 25 a\u00f1os en una versi\u00f3n moderna. Los desarrolladores de este lenguaje toman muy en serio la compatibilidad con versiones anteriores y, debido a esto, muchas organizaciones est\u00e1n felices de hacer de Java su plataforma de desarrollo principal, con la tranquilidad de que su c\u00f3digo seguir\u00e1 funcionando en la JVM durante a\u00f1os.\r\nMadurez\r\nExistir desde hace mucho tiempo tiene una gran cantidad de ventajas. Durante los \u00faltimos 25 a\u00f1os, los desarrolladores han escrito aplicaciones en Java para una amplia variedad de sectores y tipos de negocios, as\u00ed como para plataformas distintas. Mientras tanto, durante 25 a\u00f1os los desarrolladores han aprendido Java en las escuelas, universidades, talleres y en su trabajo. De este modo se ha creado un gran ecosistema que ha tenido tiempo de aprender de la experiencia y contin\u00faa creciendo. Java y los problemas que puede resolver est\u00e1n bien documentados y cuentan con un buen apoyo por parte de proveedores y organizaciones sin fines de lucro, as\u00ed como usuarios individuales. Otro aspecto muy importante para desarrolladores como nosotros es que la madurez y el uso tan extendido de Java significan que existen muchos puestos de trabajo para desarrolladores que desean codificar en este lenguaje.\r\nMejora constante\r\nEn contraposici\u00f3n con la compatibilidad con versiones anteriores y la madurez tenemos la evoluci\u00f3n de la plataforma y del lenguaje. Desde 2017 (Java 9) hemos visto un nuevo lanzamiento cada seis meses, lo cual ha permitido un flujo constante de cambios y mejoras en el lenguaje. En combinaci\u00f3n con Funciones de vista previa, este lenguaje es capaz de experimentar con sintaxis nueva, obtener feedback de desarrolladores y estandarizar nuevas funcionalidades que de verdad resultan \u00fatiles a quienes usan Java.\r\nEquilibrio\r\nJava debe encontrar el dif\u00edcil equilibrio entre la compatibilidad con versiones anteriores y la visi\u00f3n de futuro. El enfoque actual de dar valor a la compatibilidad con versiones anteriores y lanzar cada seis meses, pero con un lanzamiento de una versi\u00f3n LTS (Asistencia a largo plazo) cada tres a\u00f1os, parece estar logrando el equilibrio perfecto. El lenguaje es capaz de evolucionar enviando advertencias acerca de funcionalidades obsoletas que se eliminar\u00e1n, y disponiendo de alternativas para todo aquello que vaya a desaparecer.\r\n\r\nQuienes busquen una estabilidad adicional pueden quedarse con los lanzamientos de versiones LTS (Asistencia a largo plazo). Para reducir su riesgo en cuanto a tiempo de actualizaci\u00f3n, podr\u00edan testear con regularidad frente a las versiones semestrales.\u00a0 Los que est\u00e1n satisfechos con actualizar cada seis meses pueden descargar la versi\u00f3n m\u00e1s reciente de Java cada vez que se lance una. Los desarrolladores que deseen probar sintaxis nueva incluso antes de que se estandarice, pueden  habilitar las funcionalidades de vista previa, y los que deseen hacerlo lo antes posible, pueden incluso utilizar el lanzamiento de acceso anticipado de una versi\u00f3n que todav\u00eda no est\u00e9 en el mercado.\u00a0 Los equipos que usen versiones modernas de Java realmente pueden disfrutar de lo mejor de todos los mundos.\r\nEst\u00e1ndares\r\nLos est\u00e1ndares pueden no resultar tan interesantes para un desarrollador como las funcionalidades del lenguaje, pero disponer de est\u00e1ndares para Java, para Java EE y Jakarta EE, as\u00ed como para casos de uso com\u00fan con los que los desarrolladores se van encontrando, les hace la vida m\u00e1s f\u00e1cil.\u00a0 Aprender a utilizar JDBC para que se comunique con una base de datos significa que no tenemos que preocuparnos por c\u00f3mo se implementa el controlador de la base de datos, puesto que nuestro modo de interactuar con \u00e9l ser\u00e1 siempre el mismo.\u00a0 El JCP es uno de los procesos utilizados para determinar est\u00e1ndares para Java.\r\n\r\nLa especificaci\u00f3n de lenguaje Java (JLS) explica la apariencia del lenguaje Java y c\u00f3mo deber\u00eda funcionar el compilador. Incluye el Java Memory Model, que puede ayudarnos a predecir c\u00f3mo podr\u00eda comportarse una aplicaci\u00f3n, independientemente de la JVM o del hardware. La Especificaci\u00f3n de Java Virtual Machine aborda los detalles de nivel inferior de la JVM. Estas especificaciones permiten a los JDK, distribuidos por distintos proveedores y que se ejecuten en diferentes plataformas, comportarse de modos espec\u00edficos y predecibles. Lo cual nos lleva a...\r\nWrite Once Run Anywhere\r\nWORA (el acr\u00f3nimo en ingl\u00e9s de \"Se escribe una vez, se ejecuta en cualquier lugar) fue una de las ideas originales de Java, que hoy en d\u00eda parece algo tan obvio que puede que no nos demos cuenta de lo revolucionario que fue en su d\u00eda. Recuerdo cuando trabajaba para una muy, muy gran organizaci\u00f3n en 2002. Esta organizaci\u00f3n cambi\u00f3 su tecnolog\u00eda anterior por Java simplemente porque ten\u00edan una gran cantidad de hardware diverso, y poder ejecutar las nuevas aplicaciones de Java en \u00e9l en lugar de tener que comprar hardware espec\u00edfico para aplicaciones es uno de los principales motivos por los que trasladaron todo su desarrollo a Java. Hoy en d\u00eda, en la era de la nube, esto podr\u00eda parecer menos relevante, pero solo porque no veamos siempre WORA en acci\u00f3n no significa que no nos est\u00e9 resultando \u00fatil todav\u00eda. Y, por supuesto, si usamos IntelliJ IDEA (o NetBeans) estamos disfrutando de WORA en el escritorio.\r\nRendimiento\r\nA menudo les resulta sorprendente a quienes est\u00e1n menos familiarizados con Java, pero Java es un lenguaje de muy alto rendimiento. Cuenta con una plataforma madura con 25 a\u00f1os de mejoras en el rendimiento, numerosos recolectores de memoria con distintos perfiles de rendimiento, y la JVM optimiza nuestro c\u00f3digo en tiempo de ejecuci\u00f3n para nuestro uso real en la producci\u00f3n mucho mejor de lo que lo har\u00eda la mayor\u00eda de los desarrolladores humanos. Java se usa mucho en el mundo financiero, por ejemplo, que depende de transacciones de baja latencia y rendimiento predecible.\r\nGarbage Collection\r\nLa Garbage Collection (limpieza de memoria) autom\u00e1tica es otra de las cosas que, 25 a\u00f1os despu\u00e9s, damos por supuestas. Ya no tenemos que pensar en c\u00f3mo se asigna la memoria en nuestras aplicaciones, ni en c\u00f3mo liberarla. Cada JVM cuenta con uno o m\u00e1s algoritmos distintos de recolecci\u00f3n de memoria, para que podamos escoger el que funcione bien con nuestra aplicaci\u00f3n; sin tener que preocuparnos demasiado por el funcionamiento interno podemos continuar dedic\u00e1ndonos a escribir la l\u00f3gica de negocio para nuestras aplicaciones.\r\nObservabilidad y gesti\u00f3n\r\nSi nos interesa saber qu\u00e9 sucede durante la ejecuci\u00f3n de nuestra aplicaci\u00f3n, disponemos de una gran cantidad de herramientas para ello. Muchas de ellas incluso son gratuitas, especialmente desde que Java Flight Recorder y Mission Control forman parte de OpenJDK (desde Java 11). Herramientas como JMX incluso nos permiten gestionar din\u00e1micamente nuestras aplicaciones.\r\nJava Virtual Machine (JVM)\r\nMuchas de las funcionalidades que acabamos de mencionar son caracter\u00edsticas de la JVM, pero queremos hacer menci\u00f3n por separado a la JVM y al hecho de que es independiente del lenguaje Java. Existen muchos motivos para adorar la JVM, incluidos algunos de los que ya hemos mencionado: WORA, optimizaciones de tiempo de ejecuci\u00f3n, rendimiento, elecci\u00f3n de proveedor, etc., muchos de los cuales son posibles gracias a los est\u00e1ndares y especificaciones. Tambi\u00e9n es importante que la JVM sea independiente del lenguaje Java, puesto que significa que pueden crearse lenguajes diferentes en la plataforma, aprovechando as\u00ed todas las grandes funcionalidades de la JVM que acabamos de explicar y ofreciendo a la vez distintos tipos de sintaxis y funcionalidades de lenguaje.\r\nOtros lenguajes de la JVM\r\nUno de los motivos por los que Java sobrevivi\u00f3, e incluso prosper\u00f3 en los a\u00f1os m\u00e1s tranquilos entre Java 6 y Java 8 (Java 7 tiene grandes funcionalidades, pero a los desarrolladores Java no les pareci\u00f3 un gran lanzamiento), es por los otros lenguajes de la JVM. El favorito de JetBrains, por supuesto, es Kotlin, pero la JVM es una plataforma para otros lenguajes populares como Groovy, Scala, Clojure y JRuby, as\u00ed como muchos otros lenguajes nuevos y reimplementados. En muchos casos, la interoperabilidad entre estos lenguajes y el Java cl\u00e1sico nos ayuda a adoptar y sacar partido de esta variedad.\r\nBibliotecas y marcos de trabajo\r\nUno de los argumentos de m\u00e1s peso es la ingente cantidad de bibliotecas y marcos de trabajo entre los que podemos elegir, muchos de ellos de c\u00f3digo abierto y gratuitos. En particular, marcos de trabajo populares como Spring y Spring Boot facilitan la creaci\u00f3n de cualquier cosa, desde peque\u00f1os servicios a grandes y complejas aplicaciones para empresas. Gracias a los est\u00e1ndares, a menudo no resulta dif\u00edcil comprender y utilizar una biblioteca cuando hemos usado algo similar en otro contexto. La madurez de Java y la adopci\u00f3n temprana del c\u00f3digo abierto por parte de la comunidad significan que a menudo ya existe una soluci\u00f3n para problemas est\u00e1ndar, no es necesario volver a inventar la rueda. Tambi\u00e9n significa que, dado que muchas de estas soluciones existen y se usan desde hace mucho tiempo, ya se han probado, se comprenden y se han documentado bien.\r\nHerramientas de build y gesti\u00f3n de dependencias\r\nAtr\u00e1s quedaron los d\u00edas en los que un pobre desarrollador (como yo) ten\u00eda que buscar en Internet alg\u00fan archivo JAR desconocido que contuviese alguna clase que parec\u00eda ser necesaria para el c\u00f3digo que intentaba ejecutar. Maven y Gradle, en particular, han facilitado no solo crear e implementar una aplicaci\u00f3n, sino configurar un proyecto de forma est\u00e1ndar con todas las dependencias necesarias. Es f\u00e1cil comenzar a escribir c\u00f3digo ya sea en un proyecto nuevo o en uno existente. Los repositorios p\u00fablicos como Maven Central y Bintray agilizan la b\u00fasqueda (y publicaci\u00f3n) de bibliotecas.\r\nJUnit y testeo automatizado\r\nJUnit se cre\u00f3 en 1997, as\u00ed que \u00a1es casi tan antiguo como el propio Java!\u00a0 Es, de lejos, el marco de trabajo de pruebas automatizado m\u00e1s habitual en el mundo Java, y tanto JUnit como TestNG se incluyen con IntelliJ IDEA, puesto que se presupone que se necesitar\u00e1 un marco de trabajo de pruebas con cualquier nuevo proyecto de Java. Es probable que los marcos de trabajo de pruebas modernos de una gran cantidad de lenguajes est\u00e9n basados en ideas de JUnit que ahora damos por supuestas. La cultura del testeo automatizado de la comunidad Java debe mucho a esta biblioteca.\r\nIDE\r\nEste es el blog de IntelliJ IDEA, \u00a1no \u00edbamos a olvidarnos de esta! Tanto si creen que la verbosidad de Java requiere un IDE, como si piensan que Java puede sacar partido realmente de un IDE debido a su tecleo est\u00e1tico, el hecho es que los desarrolladores de Java adoran sus IDE (\u00a1y nosotros adoramos a los desarrolladores!). Aprender a utilizar un IDE con eficacia (ya sea IntelliJ IDEA, Eclipse o NetBeans) puede mejorar significativamente la productividad de un desarrollador gracias a: finalizaci\u00f3n y generaci\u00f3n de c\u00f3digo, ejecuci\u00f3n de pruebas, depuraci\u00f3n, navegaci\u00f3n y una gran cantidad de funcionalidades adicionales. A los desarrolladores de Java suelen encantarles las ventajas de un IDE.\r\nComunidad\r\nLa comunidad Java es grande, madura, din\u00e1mica y acogedora. Existen grupos de usuarios de Java en muchas ciudades del mundo, y un grupo de usuarios virtual de Java si no puede asistir a un meetup en persona. Los Java Champions son l\u00edderes t\u00e9cnicos reconocidos en el mundo Java que cobraron fama por compartir cosas \u00fatiles o interesantes para los desarrolladores de Java y JVM. Java cuenta con una enorme comunidad de c\u00f3digo abierto, incluyendo el propio JDK a trav\u00e9s de OpenJDK. La comunidad Java valora el aprendizaje, la ense\u00f1anza y la mejora constante, se interesa por los est\u00e1ndares y las \"buenas pr\u00e1cticas\", y es pragm\u00e1tica en su uso en un entorno real.\r\nPersonas\r\nLa comunidad est\u00e1 formada por personas, por supuesto, pero cuando pregunt\u00e9 qu\u00e9 es lo que los desarrolladores m\u00e1s valoran de Java, muchos de ellos mencionaron especialmente a la gente del mundo Java que hab\u00eda influido en ellos. Estos incluyen desde colegas a profesores, a gente como Brian Goetz, Angie Jones, Georges Saab, Mala Gupta, Venkat Subramaniam. Algunos incluso me mencionaron a m\u00ed. Personalmente, yo llegu\u00e9 a Java porque lo hab\u00eda estudiado en la universidad y hab\u00eda mucho empleo, pero me qued\u00e9 porque me encantan las personas y la ayuda que he recibido de ellos.\r\nJavadoc y documentaci\u00f3n\r\nJava convierte la documentaci\u00f3n de la API en una parte clave del lenguaje a trav\u00e9s de Javadoc. Los tres tipos distintos de comentarios (Javadoc, bloque y l\u00ednea) indican claramente qu\u00e9 tipo de comentario est\u00e1 dejando el desarrollador. Javadoc anima especialmente a los desarrolladores a dejar documentaci\u00f3n \u00fatil para otros desarrolladores que llamen a un m\u00e9todo o utilicen una clase o paquete. Si un desarrollador no encuentra informaci\u00f3n de ayuda detallada en una biblioteca o trozo de c\u00f3digo, normalmente Javadoc puede ayudarle a orientarse en la direcci\u00f3n correcta.\r\n\r\nAdem\u00e1s, el ecosistema de Java en general parece esperar (y proporcionar) documentaci\u00f3n de calidad a los desarrolladores. Se anima a los potenciales participantes en proyectos de c\u00f3digo abierto a enviar solicitudes de incorporaci\u00f3n de cambios en los comentarios de Javadoc u otra documentaci\u00f3n, y desarrolladores de todo el mundo preguntan y responden preguntas en StackOverflow, o escriben art\u00edculos en blogs acerca de soluciones para problemas espec\u00edficos.\r\nC\u00f3digo abierto\r\nLa comunidad de Java no solo adopt\u00f3 el c\u00f3digo abierto desde bien temprano, sino que ahora el propio JDK tambi\u00e9n es de c\u00f3digo abierto a trav\u00e9s de OpenJDK. El c\u00f3digo abierto facilita que participen y colaboren varios proveedores o individuos. Tambi\u00e9n es fascinante poder ver el c\u00f3digo Java en s\u00ed mismo. El c\u00f3digo abierto ofrece a los desarrolladores como nosotros una gran oportunidad de aprender de personas que ya han hecho todo el trabajo duro de pensar acerca de problemas complicados y resolverlos.\r\nGratis\r\nLa plataforma Java y muchas de las herramientas m\u00e1s populares utilizadas en el ecosistema Java no necesitan que un desarrollador (o incluso una organizaci\u00f3n con fines de lucro) paguen por usarlas. Incluso despu\u00e9s de que Oracle cambiase sus licencias y asistencia en Java 11, \u00e9l y muchos otros proveedores todav\u00eda ofrecieron un modo de usar el lenguaje de forma gratuita en la producci\u00f3n. Los proyectos de c\u00f3digo abierto, herramientas de build e IDE ya mencionados en este art\u00edculo, son todos gratuitos o disponen de una opci\u00f3n gratis. Por eso, Java resulta atractivo para desarrolladores que est\u00e1n empezando a escribir c\u00f3digo, as\u00ed como para organizaciones de todos los tama\u00f1os que necesitan crear software pero respetando el presupuesto.\r\nOrientaci\u00f3n a objetos\r\nLa programaci\u00f3n orientada a objetos no es la \u00fanica opci\u00f3n, claro, y cada paradigma tiene sus ventajas y sus desventajas. Java se dise\u00f1\u00f3 como lenguaje orientado a objetos desde el principio, y en \u00e9l se demuestran muchos ejemplos de patrones de dise\u00f1o y otras buenas pr\u00e1cticas de codificaci\u00f3n para orientaci\u00f3n a objetos. Si busca un lenguaje de programaci\u00f3n orientado a objetos, Java deber\u00eda ser uno de los primeros de su lista de lenguajes por probar.\r\nEvoluci\u00f3n y adaptaci\u00f3n\r\nJava era, y contin\u00faa siendo, un lenguaje de programaci\u00f3n orientado a objetos. Pero ha adoptado con \u00e9xito algunos conceptos de la programaci\u00f3n funcional (como las expresiones lambda y las estructuras de datos inmutables), y ha hecho que funcionen bien dentro del paradigma de orientaci\u00f3n a objetos. La inferencia de tipo (por ejemplo, var) nos permite continuar disfrutando de las ventajas de un lenguaje de tipo est\u00e1tico, pero con menos c\u00f3digo estereotipado. La inform\u00e1tica sigue siendo una disciplina relativamente joven, pero a medida que aprendemos cosas nuevas podemos ir aplic\u00e1ndolas a nuestras herramientas existentes. Java (el lenguaje y todo el ecosistema) evoluciona constantemente seg\u00fan nuevas tendencias y nuevas \"buenas pr\u00e1cticas\", y tambi\u00e9n como resultado de observar c\u00f3mo funcionan las cosas en el mundo real.\r\n\r\nTambi\u00e9n saca partido de la sintaxis y las ideas de otros lenguajes de JVM, para ver qu\u00e9 funciona y qu\u00e9 podr\u00eda no encajar en un mundo Java cl\u00e1sico. Incluso los procesos y herramimentas que Java utiliza para evolucionar y crecer, como el JCP y OpenJDK, tambi\u00e9n se adaptan para continuar siendo relevantes en esta constante evoluci\u00f3n. Esta evoluci\u00f3n y adaptaci\u00f3n forma parte del delicado equilibrio que Java tiene que mantener.\r\nEnfocado en la legibilidad\r\nEl c\u00f3digo Java suele ser legible incluso para programadores de otros lenguajes. El lenguaje tiende a ser m\u00e1s extenso que extremadamente conciso, lo cual facilita su comprensi\u00f3n al leer. Los desarrolladores del lenguaje no han implementado funciones como la sobrecarga de operadores, puesto que creen que es importante no verse sorprendido por comportamiento personalizado inesperado. Se tiende a evitar la \"magia\" en el lenguaje y en los marcos de trabajo. Aunque algunos marcos de trabajo usan aspectos como la Convenci\u00f3n sobre configuraci\u00f3n para hacer cosas sin que un desarrollador tenga que ocuparse de ello imperativamente, sin duda se ha producido un alejamiento de (por ejemplo) hacer mucha programaci\u00f3n orientada a aspectos con anotaciones, y un acercamiento a usar anotaciones para documentaci\u00f3n y comprobaciones de an\u00e1lisis est\u00e1ticos. A la comunidad y al ecosistema tienden a gustarles los est\u00e1ndares y las \"buenas pr\u00e1cticas\", de modo que el c\u00f3digo Java suele respetar reglas similares incluso en proyectos muy distintos.\r\nFuncionalidades del lenguaje\r\n\u00a1Hemos hablado de 23 cosas que nos gustan de Java sin citar ni una sola funcionalidad! Para ser sinceros, es porque limitarnos a solo 25 funcionalidades parec\u00eda muy dif\u00edcil, y tambi\u00e9n porque muchas de las cosas que nos encantan de Java no siempre est\u00e1n relacionadas con la sintaxis o las funcionalidades. Nos gustar\u00eda hacer un homenaje a algunas de las funcionalidades favoritas de los desarrolladores:\r\n\r\n\tAPI Collections: \u00a1lleva mucho tiempo con nosotros y nos ha dado un buen servicio!\r\n\tM\u00e9todos de f\u00e1brica pr\u00e1cticos para las colecciones: facilita much\u00edsimo la creaci\u00f3n de colecciones no modificables.\r\n\tAPI Streams: una estupenda adici\u00f3n a la API para colecciones, y es genial verla evolucionar desde Java 8. Los flujos paralelos supusieron un nuevo modo de utilizar el hardware moderno.\r\n\tExpresiones lambda: especialmente \u00fatiles con la API Streams, pero muy pr\u00e1cticas por s\u00ed mismas.\r\n\tOptional: un buen modo de expresar que un m\u00e9todo podr\u00eda no darle algo (y evitar que tengamos que proteger frente a NullPointerExceptions). Tambi\u00e9n es genial ver cada mejora en Opcional desde Java 8.\r\n\tjava.time: la \u00faltima API para trabajar con fecha y hora es una mejora muy bienvenida\r\n\tExcepciones comprobadas: la gente est\u00e1 dividida entre excepciones comprobadas vs. de tiempo de ejecuci\u00f3n, pero al menos las excepciones marcadas est\u00e1n ah\u00ed para quienes deseen usarlas.\r\n\tAnotaciones: las anotaciones (entre otras cosas) son como documentaci\u00f3n que el compilador puede comprobar, o notas para que un marco de trabajo haga trabajo duro.\r\n\tJShell: ahora podemos jugar con Java en un REPL\r\n\tvar: la inferencia de tipo ayuda a reducir el ruido de c\u00f3digo si se usa de forma sensata\r\n\tModificadores de acceso y modularidad: Java facilita (incluso m\u00e1s desde Java 9) el ser expl\u00edcito acerca de qu\u00e9 c\u00f3digo puede acceder a qu\u00e9 campos, m\u00e9todos, clases y m\u00f3dulos.\r\n\tExpresiones Switch: \u00a1ahora ya no es tan feo usar Switch!\r\n\tPr\u00e1cticas NullPointerExceptions: \u00bfa qui\u00e9n no le encanta una NullPointerException? Ahora las excepciones dan a los desarrolladores informaci\u00f3n mucho m\u00e1s \u00fatil acerca de lo que era nulo.\r\n\tFuncionalidades de vista previa: \u00a1nos encantan las funciones de vista previa! Nos entusiasman las Registros; Reconocimiento de patrones para instanceof; y bloques de texto.\r\n\r\nEl futuro\r\nObtenemos nuevas funcionalidades cada seis meses, y cada uno de los lanzamientos de LTS suele suponer un mejor rendimiento desde el principio para cualquier aplicaci\u00f3n que ejecute. Java 15 (septiembre de 2020) deber\u00eda contar con: clases ocultas, bloques de texto (ya no en vista previa); vistas previas actualizadas par registros, reconocimiento de patrones para instanceof y una vista previa de clases selladas.\r\n\r\nY ya en un futuro m\u00e1s lejano tambi\u00e9n esperamos ver: concurrencia ligera y f\u00e1cil de usar con Project Loom; Inline Types de Project Valhalla; m\u00e1s cambios de lenguaje desde Project Amber, como restos de lambda;  Project Panama facilitar\u00e1 a los programadores el acceso a API extranjeras, tiempos de inicializaci\u00f3n m\u00e1s breves gracias a Project Leydon; m\u00e1s mejoras en varios recopiladores de memoria, y much\u00edsimo m\u00e1s.\r\n\r\n\u00a1Java tiene un futuro brillante!","protected":false},"excerpt":{"rendered":"\u00a1A JetBrains le encantan todos los lenguajes de programaci\u00f3n y todo tipo de desarrolladores! En mayo de 2020 \u00a1Java cumple 25 a\u00f1os! Por eso queremos hacerle un homenaje y hablar de 25 cosas que adoramo","protected":false},"author":{"name":"JetBrains","link":"https:\/\/blog.jetbrains.com\/es\/author\/jetbrains"},"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[],"tags":[5336,155],"cross-post-tag":[],"acf":[],"featured_image":null,"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/posts\/35434"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/users\/1152"},{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/users\/1152"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/comments?post=35434"}],"version-history":[{"count":0,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/posts\/35434\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/media?parent=35434"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/categories?post=35434"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/tags?post=35434"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/es\/wp-json\/wp\/v2\/cross-post-tag?post=35434"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}