Java EE, pasado, presente y futuro con Jakarta EE y NoSQL

Por Otavio Santana Java Champion Groundbreaker Ambassador
Publicado en Febrero 2019

Revisado por Alexis Lopez




Java EE es una plataforma cuyo objetivo es facilitar la creación de programas para entornos corporativos utilizando Java. Tiene en cuenta puntos importantes y especificaciones que permiten la elección de diferentes proveedores, compatibilidad con versiones anteriores, además de una comunidad fuerte y vibrante. En este momento, el proyecto está pasando por diversos cambios, entre ellos la migración hacia la Fundación Eclipse con el nuevo nombre, Jakarta EE, y una nueva estructura de trabajo. Descubre en este artículo un poco de la historia de Java EE, su estado actual, además de su futuro como Jakarta EE.



Las generaciones de Java EE


El mundo de Java EE puede dividirse en cuatro generaciones:

  • Primera generación: En este primer paso de la tecnología, la mayor característica se da por el hecho de que los componentes como JAX-WS están embebidos en el JDK. Estos módulos son los mismos que se han eliminado en la versión 11 del JDK;

  • Segunda generación: La segunda generación se caracteriza por la nueva nomenclatura, el J2EE además de una plataforma específica es la primera interacción de Java EE fuera del JDK. Se inició con el J2EE 1.2 en diciembre de 1999 y fue hasta la versión J2EE 1.4 en noviembre de 2003;

  • La tercera generación: En esa época existían dos puntos principales, el primero fue la nueva nomenclatura de Java EE, JEE sin el '2', además de la transición de Sun a Oracle. Se inició con Java EE 5 en mayo de 2006 y se fue desarrollando hasta el 31 de agosto de 2017 con Java EE 8.

  • Cuarta generación: Actualmente nos encontramos en la cuarta generación que se caracteriza por la donación de Oracle a la Fundación Eclipse. Con esto, todo el código, especificación y TCK se envían a la Fundación Eclipse, se define una nueva estructura organizativa y el proyecto tiene un nuevo nombre, Jakarta EE, y un nuevo logo, ambos seleccionados de manera transparente y con la contribución de la comunidad.



Que es NoSQL?


La base de datos no relacional es un nuevo concepto de persistencia que proporciona un mecanismo de modelado que va más allá de la tecnología relacional. Este tipo de base de datos tiene velocidad y alta escalabilidad. Una de las maneras de categorizarlo es por los tipos, cuyos más famosos son: clave-valor, familia de columna, documentos y grafos. Esta tecnología de persistencia se está volviendo cada vez más relevante en diversos tipos de aplicaciones, que incluyen las financieras, por ejemplo, en el ranking del DB-Engines cuatro de las diez bases de datos más populares son NoSQL y hoy existen aproximadamente doscientos veinticinco bases de datos no relacionales.




Java EE y NoSQL


Como consecuencia de esa relevancia y de esa popularidad, varias discusiones se iniciaron de una manera de estandarizar las llamadas de las bases de datos NoSQL. Una API para NoSQL, que incluso fue objeto de propuesta para Java EE 9 por Oracle, los puntos planteados en esta propuesta fueron:

  • El JPA no está diseñado para NoSQL; JPA para NoSQL implica el uso inconsistente de anotaciones;

  • Un grupo de API no es adecuado para todos los tipos de bases de datos; La diversidad de NoSQL es una característica importante y preponderante para esta tecnología.

Sin embargo, al igual que Java EE 9, esta propuesta no ha finalizado.

Con el objetivo de ocupar esa laguna dejada por la propuesta de Java EE 9 para el NoSQL algunas implementaciones de JPA iniciaron extensiones que permiten el uso de NoSQL con el JPA como es el caso de Hibernate OGM y de Eclipse Link NoSQL.




Jakarta EE y NoSQL


Con el objetivo de traer novedades para la plataforma y facilidades en el desarrollo, el tema Java y NoSQL volvió a ser foco de atención, esta vez, como la primera especificación dentro del Jakarta EE. El Jakarta EE utilizará el Eclipse JNoSQL cuyo enfoque será el suporte a las bases de datos NoSQL de tipo llave-valor, familia de columnas, documentos y grafos;

  • Posee una capa de comunicación, como el JDBC, para cada tipo mencionado con excepción del Grafo, el cual utilizará el Apache TinkerPop;

  • Existe una capa de Mapeo, como el JPA, para cada tipo soportado, siendo necesario un gran esfuerzo para compartir las mismas anotaciones entre los tipos;

  • Las API tanto de comunicación y de asignación serán extensibles lo suficiente para soportar comportamientos específicos de diferentes vendedores. 



El objetivo de este artículo es hablar un poco sobre el historial de Java EE y su relevancia en el mercado para los desarrolladores Java, ahora en manos de Jakarta EE, demuestra un futuro cada vez más vibrante mirando las nuevas necesidades dentro del mundo Java . Con el crecimiento en la adopción de NoSQL en el mundo corporativo, la elección de una nueva especificación para facilitar este desafío, seguramente, será muy bien recibida por la comunidad.




Otavio Santana es un ingeniero de software centrado en la tecnología Java. Tiene experiencia principalmente en aplicaciones de alto rendimiento en finanzas, gobiernos, redes sociales y comercio electrónico. El conocimiento y la experiencia de Otavio se encuentran en Java SE, Java EE, Spring y Google App Engine (GAE). También trabaja con varias bases de datos tanto SQL como NoSQL. Orador, vicepresidente de SouJava, Otavio es miembro de varios grupos de expertos de JSR, miembro ejecutivo de JCP y colaborador de JBoss Weld, Hibernate, Apache Commons. Ha recibido un Premio a la Excelencia JCP, un Premio Dukes Choice y un Premio Java Champion. twitter: @otaviojava

Este artículo ha sido revisado por el equipo de productos Oracle y se encuentra en cumplimiento de las normas y prácticas para el uso de los productos Oracle.