Skip to content

Instantly share code, notes, and snippets.

@tuxtor
Last active November 4, 2017 05:09
Show Gist options
  • Save tuxtor/b1322b738b1784b0b41eea38414f5510 to your computer and use it in GitHub Desktop.
Save tuxtor/b1322b738b1784b0b41eea38414f5510 to your computer and use it in GitHub Desktop.
JavaEE el estado del arte

JavaEE 7, JavaEE 8 y EE4J

Enterprise

La palabra enterprise es un termino genérico utilizado para denominar a todo aquello que esta 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 si, 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

JavaEE Uno de los conceptos peor entendidos por estudiantes y profesionales por igual es realmente cual es el papel de Java Enterprise Edition. Durante workshops tanto a nivel de Guatemala como en el exterior comúnmente obtengo las siguientes respuestas a la pregunta ¿Que 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 estandares creados originalmente por Sun Microsystems con el objetivo de popularizar Java en lo que seria 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 standard, 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" con lo que hoy en día tenemos Java SE como el kit base de desarrollo y Java EE como los estandares para "el enterprise". Coordinando todos los esfuerzos de creación y actualización de estandares mediante el Java Community Process en el cual Oracle funge como un lider y coordina los esfuerzos con colaboraciones de empresas como Red Hat, Twitter, IBM, Goldman Sachs entre otros.

Java Enterprise Edition 7

Java EE 7 La versión 7 de acuerdo a ZeroTurnarround es actualmente la más extendida entre los desarrolladores. Publicada en junio 2014 fue la demostración de que Java EE aun 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 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 JavaEE es uno de los stacks de ejecución más ligeros.

Java Enterprise Edition 7 - La rebelión de los microservicios

Java EE 7

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 developers 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 interes que creó su propio estandard 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:

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

Java EE 8 A partir de las acciones de developers, fanáticos y promotores independientes por igual, 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 estandard de seguridad y muchas mejoras en sus entrañas.

Siendo este el estado actual de las principales implementaciones:

EE4J, mirando hacia el futuro

EE4j En una decisión más que esperada, durante Java One 2017 Oracle anuncio 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 ultimo gran JavaEE y EE4J sera la casa de los nuevos estandares para continuar el legado de JavaEE.

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment