Artículo 12 JavaEE 7, JavaEE 8 y EE4J

Victor Orozco

Egresado de Ingeniería en Ciencias y Sistemas - USAC
Palabras Clave: Java, Enterprise, Estándar.

La palabra enterprise es un término genérico utilizado para denominar a todo aquello que está destinado/enfocado/personalizado a satisfacer las necesidades de la mediana y gran empresa. En materia de software una aplicación enterprise generalmente debe cumplir los siguientes requisitos:

  • Respuesta hacia alta demanda de información
  • Tiempos cortos de desarrollo
  • Estabilidad y soporte a largo plazo
  • Disponibilidad de recurso humano
  • Constante innovación

En esta línea y de acuerdo a varios rankings -e.g TIOBE, RedMonk, IEEE - Java continua siendo una de las plataformas elegidas para la creación de aplicaciones, existiendo dos tipos de abordajes para su construcción, los cuales en palabras de Erick Raymond serian:

  • Abordaje catedral: Donde se utiliza un conjunto de bibliotecas "curadas" para interactuar entre sí, siendo los grandes en este escenario JavaEE y Spring.

  • Abordaje bazar: Donde se utiliza un conjunto de bibliotecas independientes para conformar una arquitectura de desarrollo personalizada.

Java Enterprise Edition

Uno de los conceptos peor entendidos por estudiantes y profesionales es el papel de Java Enterprise Edition. Durante workshops (talleres) tanto a nivel de Guatemala como en el exterior comúnmente obtengo las siguientes respuestas a la pregunta ¿Qué es Java EE?:

  • Es un framework
  • Es la versión anterior de J2EE
  • Oracle Weblogic
  • El servidor que no es Tomcat

De forma similar, al preguntar si alguna vez han utilizado Java EE la respuesta suele ser:

  • No, nosotros usamos Weblogic
  • Si, usamos Tomcat
  • No, usamos J2EE

Formalmente JavaEE es una serie de estándares creados originalmente por Sun Microsystems con el objetivo de popularizar Java en lo que sería la era 1.0 de la web, poco antes de la burbuja .com.

De forma análoga a estándares como IEEE o ISO, el objetivo del entonces J2EE fue establecer estándares para la creación de software enterprise en Java Luego, cualquier proveedor de software podía implementar su propia versión.

Algunos de los participantes históricos que crearon su propia versión fueron:

  • Borland (Borland App Server)
  • Sun Microsystems (Sun One, Glassfish)
  • BEA Systems (BEA Weblogic)
  • Red Hat (JBoss)
  • Oracle (OC4J)
  • Fujitsu (Interstage)
  • Hitachi (Cosminexus)
  • IBM (WebSphere)
  • SAP (NetWeaver)
  • Caucho (Resin)
  • NEC (WebOTX)
  • Y muchos más ...

Y lo más importante, si la aplicación se programaba únicamente utilizando APIs estándar, se podría ejecutar en cualquier servidor de aplicaciones. Promesa que fue cumplida a cabalidad a partir de J2EE 1.4 y que hoy en día es una realidad.

Con el pasar de los años el "2" fue eliminado de nombre en los productos "Java" por lo que hoy en día tenemos Java SE como el kit base de desarrollo y Java EE como los estándares para "el enterprise". Coordinando todos los esfuerzos de creación y actualización de estándares mediante el Java Community Process en el cual Oracle funge como un líder y coordina los esfuerzos con colaboraciones de empresas como Red Hat, Twitter, IBM, Goldman Sachs entre otros.

Java Enterprise Edition 7

La versión 7 de acuerdo con ZeroTurnarround es actualmente la más extendida entre los desarrolladores. Publicada en junio 2014 fue la demostración de que Java EE aún tiene mucho por crear, incluyendo entre otras características:

  • Soporte a WebSockets
  • Soporte a JSON y REST
  • Soporte a HTML5
  • Mejoras a CDI

Al publicarse Java EE 7, la mayoría de los servidores de aplicaciones se adaptaron a la época, proveyendo entornos de ejecución modulares que solo cargan a memoria los módulos necesarios. Algunos autores conocidos en el mundo Java incluso se atreven a afirmar que JavaEE es uno de los stacks (pilas) de ejecución más ligeros.

Java Enterprise Edition 7 La rebelión de los microservicios

Con la popularización de los microservicios, y dado que Oracle como principal líder de los estándares no presentaba actualizaciones a la velocidad que los desarrolladores las demandaban, en los últimos 4 años fueron crearon dos grandes grupos de interés dentro del mundo JavaEE:

  • JavaEE Guardians: Liderados por Reza Rahman ex-evangelista de Oracle, es un grupo independiente dedicado a promover y acelerar el desarrollo de JavaEE mediante esfuerzos coordinados en presentaciones, conferencias y contribuciones de código.

  • MicroProfile: Conformados por IBM, Red Hat, Payara, Tomitribe, Fujitsu, SmartBear, Hazelcast, KumuluzEE, SouJava y London Java Community, es un grupo de interés que creó su propio estándar o perfil para microservicios fuera del JCP.

En esta línea encontramos que existen esfuerzos independientes y con software listo para su ejecución en producción que permite crear microservicios, tales como:

  • Payara Micro
  • Wildfly Swarm
  • KumuluzEE
  • WebSphere Liberty
  • Dropwizard
  • TomEE

A su vez estos frameworks son fieles al principio enterprise: Si se respetan los estándares virtualmente podemos crear aplicaciones con conocimiento JavaEE en cualquiera de las plataformas.

Java Enterprise Edition 8

A partir de las acciones de desarrolladores, fanáticos y promotores independientes, y de la misma forma gracias al trabajo arduo de la comunidad Java, vimos como en septiembre de 2017 Java EE 8 fue publicado, siendo sus principales contribuciones:

  • Mejor integración entre CDI con el resto del stack

  • JSON-B como alternativa a JSON-P

  • Nuevo estándar de seguridad y muchas mejoras en sus entrañas.

Siendo este el estado actual de las principales implementaciones:

  • Glassfish - 100% compatible con JavaEE 8

  • Wildfly(JBoss) - Inician los trabajos para JavaEE 8, se esperan para Wildfly 12

  • OpenLiberty Fase beta de soporte

  • Payara Fase beta de soporte

  • TomEE - Inician los trabajos para JavaEE 8

EE4J, mirando hacia el futuro

En una decisión más que esperada, durante Java One 2017 Oracle anunció que ha decidido transferir el liderazgo de los estándares hacia la fundación Eclipse que entre otras cosas gestiona proyectos como:

  • Eclipse IDE
  • Eclipse DeepLearning4j
  • Eclipse Collections
  • Eclipse Jetty
  • Eclipse Vert.x
  • Eclipse OpenJ9

Siendo así, podemos decir que JavaEE 8 será el último gran JavaEE y EE4J será la casa de los nuevos estándares para continuar el legado de JavaEE.

Grandes tiempos para ser un desarrollador Java Enterprise Edition :).