Oracle anunció en el otoño de 2022 la disponibilidad de Java 19, la última versión de uno de los lenguajes de programación y plataformas de desarrollo más usadas en el mundo. Sin embargo, hasta llegar aquí, Java ha recorrido un largo camino. En este post vamos a hacer un poco de historia. Daremos cuenta de las versiones lanzadas hasta la fecha, de las diferencias con Python, el otro lenguaje de programación más extendido del mundo, y hablaremos de las novedades de Java 19.
¿Qué es Java? Un poco de historia
Java se empezó a comercializar en 1995 por Sun Microsystems, una compañía que luego fue comprada por Oracle, la firma que actual mantiene este lenguaje de programación. Originalmente Java fue desarrollador por James Gosling, de Sun Microsystems. Esta herramienta se concibió para ser usada en un proyecto pequeño en el que estaban 13 personas, y originalmente se llamó Oak, por un roble que había fuera de la oficina de Gosling. Luego, el nombre de Java se impuso y se cree que se refería a un tipo de café que servían en una cafetería cercana, de ahí el icono original de la taza de café humeante. Su sintaxis es una derivada en gran medida de otros lenguajes como C y C++. Las aplicaciones desarrolladas en Java pueden ejercutarse en cualquier sistema gracias a la máquina virtual Java (JVM). De hecho, la promesa inicial de Gosling era "escríbelo una vez, ejecútalo en cualquier lugar". Eso pasaba por dar con un lenguaje popular hecho para un entorno de ejecución ligero y gratuito. Con el tiempo, Java se hizo uno de los lenguajes de programación más populares del mundo y hasta hoy ha tenido 17 versiones.
Versiones de Java hasta hoy
- JDK 1.0 (23 de enero de 1996)
- JDK 1.1 (19 de febrero de 1997)
- J2SE 1.2 (8 de diciembre de 1998)
- J2SE 1.3 (8 de mayo de 2000)
- J2SE 1.4 (6 de febrero de 2002)
- J2SE 5.0 (30 de septiembre de 2004)
- Java SE 6 (11 de diciembre de 2006)
- Java SE 7 (julio de 2011)
- Java SE 8 (marzo de 2014)
- Java SE 9 (21 de septiembre del 2017)
- Java SE 10 (20 de marzo de 2018)
- Java SE 11 (25 de septiembre de 2018)
- Java SE 12 (19 de marzo de 2019)
- Java SE 15 (15 de septiembre de 2020)
- Java SE 16 (18 de marzo de 2021)?
- Java SE 17 (14 de septiembre de 2021)
- Java SE 18 (22 de marzo de 2022)?
- Java SE 19 (22 de septiembre de 2022)
Diferencias entre Java y phyton: ¿cuál es mejor?
En los últimos años, Python se ha vuelto incluso más popular incluso que Java. La gran ventaja de Python es que es muy fácil de escribir y entender. Mientras que Java es más rápido para ejecutar y también es más fácil de depurar. Python, que fue creado allá por 1991, es indicado para programadores nuevos y para despliegues rápidos. Se le considera el Lego de los lenguajes de programación porque tiene una extensa biblioteca que permite reutilizar código ya escrito. Se suele usar en proyectos de machine learning, análisis de datros y creación de algoritmos. Por su parte, Java se usa sobre todo para desarrollo web.
No es fácil decir cuál es el mejor. Cada uno tiene sus cualidades, áreas de especialización y comunidades de desarrolladores, que además son muy extensas. Además, muchos programadores aprenden los dos.
Las novedades de Java 19
La última versión de Java es Java 19 (Oracle JDK 19), que se dio a conocer en el otoño de 2022 e incluye miles de mejoras en el rendimiento, la estabilidad y la seguridad, que ayudarán a los desarrolladores a mejorar su productividad e impulsar la innovación en todos los ámbitos empresariales. Oracle presentó las últimas funcionalidades de Java 19 en JavaOne 2022, que tuvo lugar del 17 al 20 de octubre en Las Vegas.
El último Java Development Kit (JDK) proporciona actualizaciones y responde a siete propuestas de mejora. La mayoría de estas actualizaciones se entregarán como funciones adicionales de seguimiento en previsualización que afianzan funcionalidades introducidas en versiones anteriores.
Oracle entrega nuevas funciones de Java cada seis meses, siguiendo un calendario predecible de lanzamiento de versiones
JDK 19 incluye mejoras del lenguaje dentro del proyecto Amber de OpenJDK (patrones de registro y correspondencia de patrones para expresiones y declaraciones "switch"); mejoras en la biblioteca para la interoperabilidad con código ajeno a Java (API de memoria y funciones externas) y para aprovechar instrucciones vectoriales (API Vector) en el marco del proyecto Panama de OpenJDK, así como las primeras previsualizaciones del proyecto Loom (threads virtuales y concurrencia estructurada), que reducirán drásticamente el esfuerzo necesario para escribir y mantener aplicaciones concurrentes de alto rendimiento en Java.
Oracle entrega nuevas funciones de Java cada seis meses, siguiendo un calendario predecible de lanzamiento de versiones. Esta cadencia proporciona un flujo constante de innovaciones, al tiempo que brinda mejoras continuas en el rendimiento, la estabilidad y la seguridad de la plataforma, lo que ayuda a aumentar la presencia de Java en organizaciones de todos los tamaños y sectores.
Las actualizaciones más importantes incluidas en Java 19 son las siguientes:
Actualizaciones y mejoras del lenguaje
JEP 405: Patrones de registro (vista previa): permite a los usuarios anidar patrones de registro y de tipo para impulsar una forma potente, declarativa y modulable de navegación y procesamiento de datos. Esto amplía las posibilidades de la coincidencia de patrones, con el fin de permitir consultas de datos más sofisticadas y modulables.
JEP 427: Coincidencia de patrones para expresiones y declaraciones "switch" (tercera vista previa): permite la coincidencia de patrones para expresiones y declaraciones de cambio ("switch") al facilitar que estas se prueben con varios patrones. De este modo, los usuarios pueden expresar consultas de datos complejas con concisión y seguridad.
Herramientas de biblioteca
JEP 424: API de memoria y funciones externas (vista previa): permite a los programas Java interoperar más fácilmente con código y datos externos fuera del tiempo de ejecución de Java. Al llamar de forma eficaz a funciones externas (esto es, código ajeno a Java Virtual Machine o JVM) y acceder de forma segura a memoria externa (es decir, no gestionada por JVM), la API permite a los programas Java llamar a bibliotecas nativas y procesar datos nativos mediante un modelo de desarrollo basado únicamente en Java. Esto se traduce en una mayor facilidad de uso y un incremento del rendimiento, la flexibilidad y la seguridad.
JEP 426: API Vector (cuarta incubación): permite un rendimiento superior al de cálculos escalares equivalentes al expresar cálculos vectoriales que compilan de forma fiable en tiempo de ejecución instrucciones vectoriales en arquitecturas de CPU soportadas.
Puertos
JEP 422: Puerto Linux/RISC-V: la integración de este puerto al repositorio principal de JDK abre la vía a implementaciones más sencillas de Linux/RISC-V.
Funciones del proyecto Loom en vista previa/incubación
JEP 425: Threads virtuales (vista previa): reduce drásticamente el esfuerzo de escritura, mantenimiento y observación de aplicaciones concurrentes de alto rendimiento mediante la introducción de threads virtuales ligeros en la plataforma Java. El uso de threads virtuales permite a los desarrolladores solucionar problemas, depurar y perfilar fácilmente aplicaciones concurrentes con las herramientas y técnicas de JDK existentes.
JEP 428: Concurrencia estructurada (incubación): optimiza el manejo y la cancelación de errores, mejora la fiabilidad y la observabilidad, al simplificar la programación multi-hilo y tratar múltiples tareas que se ejecutan en diferentes threads como una única unidad de trabajo.
Impulsar la innovación de Java en la nube
Java 19 es el resultado de una amplia colaboración entre ingenieros de Oracle y otros miembros de la comunidad mundial de desarrolladores de Java a través del proyecto OpenJDK y del Java Community Process (JCP). A estas nuevas mejoras se suma la compatibilidad de Java 19 con Java Management Service, un servicio nativo de Oracle Cloud Infrastructure (OCI) que proporciona un único panel para ayudar a las organizaciones a gestionar los tiempos de ejecución y aplicaciones Java en entornos locales o en cualquier nube.
Soporte para clientes de Java
Oracle Java SE Subscription es una oferta de pago por consumo predecible que proporciona a los clientes el mejor soporte posible, derecho a utilizar GraalVM Enterprise, acceso a Java Management Service y flexibilidad para actualizar al ritmo de su negocio. Esto ayuda a las organizaciones de TI a desafiar la complejidad, limitar los costes y mitigar los riesgos de seguridad. Además, Java SE y GraalVM Enterprise se ofrecen de forma gratuita en OCI, lo que permite a los desarrolladores crear y desplegar aplicaciones que se ejecutan más rápido, mejor y con una relación coste-rendimiento inmejorable en Oracle Cloud.
Cómo aprender Java
Hay muchos centros educativos que impanten formación sobre programación en Java. En el ámbito de la educación reglada, la Formación Profesional (FP) en España ofrece la especialidad de DAW (Ciclo Superior de Desarrollo de Aplicaciones Web), y en este ciclo Java es una de las materias que tienen que abordar los estudiantes. Además, hay cursos y másters de muy variada duración, para aprender lo básico sobre esta plataforma o tener un conocimiento más profundo. Uno de ellos es el curso online de programación Java de Tokio School, que prepara a los alumnos para sacarse la certificación OCP.
El futuro de Java
Java es uno de los lenguajes de programación más onmipresentes. Los desarrollos en Java están en todas partes, desde los teléfonos móviles a los grandes ordenadores y servidores de empresa, pasando por los sistemas personales. Además, hay que tener en cuenta que Java es mucho más que un lenguaje para la creación de páginas web, aplicaciones o programas. En realidad es toda una plataforma para la creación de contenidos y software, con un amplio conjunto de bibliotecas para resolver problemas difíciles.
Se puede decir que el futuro de Java es prometedor por la cantidad de desarrolladores que lo usan (según datos de 2021 eran 9,4 millones en todo el mundo, solo por detrás de JavaScript y Python) y por las ventajas que tiene para el creador de código.
Recursos adicionales
Descarga Oracle JDK 19
Blog técnico de Java 19