Oracle acaba de anunciar la disponibilidad de Java 20, 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 20.
Índice de temas
¿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)
- Java SE 20 (22 de marzo de 2023)
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 20
Ahora, Oracle ha anunciado la disponibilidad de su última versión, Java 20. Esta versión, también denominada Oracle JDK 20, ofrece miles de mejoras de rendimiento, estabilidad y seguridad, incluido el perfeccionamiento de la plataforma que ayudará a los desarrolladores a incrementar la productividad e impulsar la innovación y el crecimiento en sus organizaciones.
“Durante más de 25 años, Java ha brindado herramientas a los desarrolladores para diseñar y crear la próxima generación de aplicaciones sólidas, escalables y seguras”, señala Georges Saab, vicepresidente sénior de desarrollo, plataforma y presidente de Java y del consejo de administración OpenJDK de Oracle. La última versión de Java Development Kit (JDK) proporciona actualizaciones y responde a siete propuestas de mejora (JEP). La mayoría de las actualizaciones son funciones de seguimiento que mejoran la funcionalidad introducida en versiones anteriores.
Oracle entrega nuevas funciones de Java cada seis meses, siguiendo un calendario regular de lanzamiento de versiones
JDK 20 ofrece mejoras de lenguaje del proyecto Amber OpenJDK (patrones de registro y correspondencia de patrones para expresiones y declaraciones “switch”); mejoras del proyecto Panamá OpenJDK para interconectar Java Virtual Machine (JVM) y el código nativo (API de memoria y función extranjera y la API vectorial); y funciones relacionadas con el proyecto Loom (valores de ámbito, threads virtuales y simultaneidad estructurada), que simplificarán drásticamente el proceso de escritura, mantenimiento y observación de aplicaciones concurrentes de alto rendimiento.
“Las organizaciones actuales se enfrentan a una presión cada vez mayor para utilizar sus recursos de la forma más inteligente y eficiente posible, lo que requiere que los desarrolladores busquen herramientas que optimicen el desarrollo de aplicaciones, al tiempo que ayudan a garantizar que sus organizaciones alcancen sus objetivos de seguridad y cumplimiento de TI”, afirma Jay Lyman, analista de investigación senior en S&P Global Market Intelligence. “Los líderes de transformación digital señalan que están más centrados en mejorar el tiempo de comercialización y la agilidad1 que se obtiene con unas mejores herramientas que permiten acelerar las iniciativas de desarrollo de aplicaciones de su organización”.
Oracle entrega nuevas funciones de Java cada seis meses, siguiendo un calendario regular 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 de los más diversos sectores.
Las actualizaciones más significativas que aporta Java 20 son:
Actualizaciones y mejoras del lenguaje
JEP 432: Patrones de registro (segunda vista previa): Mejora el lenguaje Java al permitir que los usuarios aniden patrones de registro y de tipo para crear un método potente, declarativo y componible de navegación y procesamiento de datos. Esto ayuda a aumentar la productividad de los desarrolladores al permitirles ampliar la coincidencia de patrones para permitir consultas de datos compuestas y más sofisticadas.
JEP 433: Correspondencia de patrones a las expresiones “switch” (cuarta vista previa): La ampliación de la correspondencia de patrones a las expresiones switch permite que una expresión se pruebe con una serie de patrones, cada uno con una acción específica, de modo que las consultas complejas orientadas a datos se puedan expresar de forma concisa y segura. La ampliación de la expresividad y aplicabilidad de expresiones y sentencias “switch” ayuda a aumentar la productividad de los desarrolladores.
Funciones del proyecto Loom en vista previa/incubación
JEP 429: Valores de ámbito (incubación): activa el uso compartido de datos inmutables en threads individuales y entre distintos threads, que son preferibles a las variables locales de threads, especialmente cuando se utilizan grandes números de threads virtuales. De esta forma, se incrementa la facilidad de uso, la comprensión, la solidez y el rendimiento.
JEP 436: Threads virtuales (segunda vista previa): Optimiza significativamente el proceso de escritura, mantenimiento y observación de aplicaciones concurrentes de alto rendimiento mediante la introducción de threads virtuales ligeros en la plataforma Java. Al permitir que los desarrolladores solucionen problemas, depuren y perfilen fácilmente aplicaciones concurrentes con las herramientas y técnicas actuales de JDK, los threads virtuales aceleran el desarrollo de aplicaciones.
JEP 437:Concurrencia estructurada (segunda incubación): Simplifica la programación multithread al tratar varias tareas que se ejecutan en diferentes threads como una única unidad de trabajo. De esta manera, los equipos de desarrollo optimizan la gestión y la cancelación de errores, mejoran la fiabilidad e incrementan la observabilidad.
Funciones de vista previa del proyecto Panamá
JEP 434: API de memoria y funciones externas (segunda vista previa): permite que los programas Java interoperen con código y datos fuera del tiempo de ejecución de Java. Al invocar de forma eficaz funciones externas (esto es, código ajeno a Java Virtual Machine, o JVM) y mediante el acceso seguro a memoria externa (es decir, no gestionada por JVM), la API permite a los programas Java llamar a bibliotecas nativas y procesar datos nativos sin necesidad de utilizar Java Native Interface. Así, se logra aumentar la facilidad de uso, el rendimiento y la seguridad.
JEP 438: API de vector (quinta incubación): Expresa cálculos de vector que recopilan de forma fiable en tiempo de ejecución instrucciones de vector en arquitecturas de CPU soportadas. Esto aumenta el rendimiento en comparación con los cálculos escalares equivalentes.
Java 20 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 OpenJDK y del Java Community Process (JCP). A estas nuevas mejoras se suma la compatibilidad de Java 20 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.
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.