Como vimos en el artículo ¿Por qué Java? Java es un lenguaje de programación muy atractivo para desarrollar aplicaciones. En este artículo veremos las versiones de Java disponibles y sus funcionalidades.
Mediante el uso de versiones se van añadiendo nuevas funcionalidades al estándar del lenguaje de programación Java. La primera versión nació, y Java como lenguaje de programación, el 23 de febrero de 1996. Hasta la versión 8 las versiones están más espaciadas en el tiempo y a partir de Java 9 se liberan versiones de Java cada año e incluso las últimas dos veces al año.
De java 1 a Java 7
Para ilustrarlo, veamos todas las versiones de Java hasta la 7, con su año de publicación y características más importantes:
Versión | Año | Características |
J2SE 1.0 | 1996 | Introducción de Java como lenguaje de programación. Máquina virtual (JVM). Clases core. Librería gráfica AWT. |
J2SE 1.1 (o Java 1) | 1997 | Reorganización del modelo de eventos de la librería gráfica AWT. Clases internas (inner classes). JavaBeans.JDBC. RMI y serialización. Reflexión (reflection). Otros como Internacionalización, Readers/Writers, Calendar y Bundles. |
J2SE 1.2 (o Java 2) | 1998 | Librería gráfica Swing. Framework de Colecciones (Collections). Java IDL. Java applets. Compilador JIT (Just In Time) para la JVM de Sun. |
J2SE 1.3 (o Java 3) | 2000 | JNDI (Java Naming and Directory Interface). JPDA (Java Plataform Debugger Architecture). HotSpot JVM. Librería JavaSound. Clases proxy sintéticas. |
J2SE 1.4 (o Java 4) | 2002 | Librería de Logging. Librería NIO para leer y escribir datos de varias fuentes. Librería Java Image I/O para leer y modificar imágenes de diferentes formatos. Librería JAXP (Java API for XML Processing) con un procesador y parser XML. Librería Preferences. Extensiones de seguridad y criptografía JCE (Java Cryptography Extension), JSSE (Java Secure Socket Extension) y JAAS (Java Authentication and Authorization Service). Inclusión de las expresiones regulares (regex). Nueva palabra reservada assert. Encadenamiento de excepciones que permite relanzar excepciones. Soporte para IPv6. Java Web Start que permite descargar y ejecutar aplicaciones Java desde la Web. Mejoras en el recolector de basura (garbage collector) y en el compilador JIT. |
J2SE 5.0 (o Java 5) | 2004 | Librería de genénericos (Generics) que permite la seguridad de datos en tiempo de compilación. Inclusión de metadatos mediante anotaciones (Annotations). Inclusión de enumerados (Enumerations). Conversión entre tipos primitivos y clases wrappers de tipos primitivos (Autoboxing/unboxing). El último argumento de un método puede ser un array de tamaño indefinido (Varargs). Bucle for each mejorado. Imports estáticos para variables y métodos estáticos (Static imports). Nuevas herramientas de concurrencia (Concurrency utilities). Nueva clase para parseo de datos (Scanner class). Generación automática del stub para objetos RMI. Nuevo look and feel para Swing llamado synth. |
Java SE 6 | 2006 | Mejora de soporte a servicios Web (JAX-WS). Nueva versión JDBC (JDBC 4.0). Librería para invocar un compilador específico Java programáticamente (Java Compiler API). Nueva versión de la librería JAXB (JAXB 2.0), junto con el parser StAX. Librería genérica para lenguajes de script (Scripting Language Support). Mejoras de rendimiento en core y librería gráfica Swing. Nuevas anotaciones enchufables (Pluggable annotations). Mejoras en la JVM: mejora del rendimiento, nuevos algoritmos en el recolector de basura, etc. |
Java SE 7 | 2011 | Nuevas utilidades de concurrencia (ForkJoin). Nueva versión de la librería NIO (NIO 2.0). Se modifica el algoritmo de ordenación de las colecciones y arrays, pasando de Mergesort a Timesort. Pequeñas mejoras del lenguaje: – Soporte de Strings en la instrucción switch. – Manejo de recursos automático: try-with-resources statement. – Operador diamante para la creación de instancias genéricas. – Declaración de varargs simplificada. – Literales enteros binarios. – Guiones bajos en literales numéricos. – Mejora en el manejo de excepciones. Soporte para lenguajes dinámicos en la JVM. Punteros comprimidos de 64-bit. Nueva librería para características gráficas. Soporte para nuevos protocolos de red como SCTP y Sockets Direct Protocol. |
Conclusiones
Como podemos ver la evolución de Java ha sido muy rápida, añadiendo en cada versión nuevas características y mejoras importante. Así Java se ha convertido en uno de los lenguajes de programación más usados. Se han añadido algunos enlaces a las páginas oficiales de Oracle a modo de documentación. Algunas hacen referencia a Java 8, ya que de versiones antiguas apenas se pueden encontrar las páginas oficiales, cuando aún Java pertenecía a Sun Microsystems.
Desde J2SE 1.4 se utilizan JSRs (Java Specification Requests) para proponer y especificar los cambios en Java mediante el proceso JCP (Java Community Process). El lenguaje como tal se especifíca en el JLS (Java Lenguage Specification)
En una segunda parte del artículo veremos las siguientes versiones de Java, de la versión 8 en adelante.