Nuevos tipos de servidores

Hasta ahora, los servidores de aplicaciones java podían clasificarse en dos grandes grupos: contenedores de servlets (como puede ser Tomcat o Jetty) y servidores J2EE (JBoss, Weblogic o GlassFish entre otros). Hasta ahora, siempre pensábamos en los primeros como servidores ligeros, rápidos al arrancar, con poco overload… y en los segundos como servidores mas pesados, complejos y mas lentos en arrancar. Poco a poco, todo esto ha ido cambiando: como se pudo ver en el post donde analizaba los tiempos de arranque de las diferentes versiones de JBoss, estos tiempos se han ido reduciendo de forma constante.

Con la última versión de J2EE, la versión 6, esta clasificación ha cambiado. Siguen existiendo los contenedores de servlets pequeños y eficientes, pero los servidores J2EE propiamente dichos se han dividido en dos categorías: por un lado los Java EE 6 Full Profile y por otro los Java EE 6 Web Profile. Los servidores Web Profile implementan un subconjunto de características de los Full Profile: básicamente una parte de la especificación de los EJB, JPA y JTA. Estos los situaría en un punto intermedio de la clasificación que comentaba un poco mas arriba, entre los contenedores de servlets y los servidores J2EE.

¿Tiene sentido esta división?

En mi opinión, si. Hasta ahora, muchos desarrolladores eran reacios a utilizar servidores J2EE. Por un lado, su consumo de recursos es mayor. Por otro lado, para versiones de J2EE anteriores a la 6, la programación resultaba compleja. Para soslayar estos problemas, lo que han venido haciendo es utilizar un contenedor de servlets añadiendo librerías/frameworks de terceros (principalmente Spring e Hibernate) para conseguir esas funcionalidades que necesitaban. Este hueco es el que viene a llenar el Web Profile.

¿Como afectará esta nueva categoría al ecosistema?

Esto dependerá de como acepte la comunidad de desarrolladores la versión 6 de J2EE. Si buscáis en Google “J2EE6 versus Spring” veréis que hay una guerra abierta. Nos os perdáis los comentarios del post que aparece como primer resultado: “Why is Java EE 6 better than Spring ? (Arun Gupta, Miles to go …)” que ademas pertenece a un blog oficial de Oracle. En el caso de que mayoritariamente los desarrolladores continúen usando Spring (junto con otras librerías) veremos pocos cambios. Pero si el empleo de servidores Web Profile se extiende, creo que iremos viendo a los contenedores de servlets ir desapareciendo, salvo aquellos (como Tomcat) que se empleen embebidos en otros paquetes software.

¿Y entonces que hago?

Si trabajas en una empresa grande, muévete por el edificio y pregunta en desarrollo. Si te dicen que están dejando de usar Spring porque no quieren usar librerías para cosas que ya vienen incluidas en el servidor, empieza a mirar manuales de instalación de servidores Web Profile. Si trabajas en una empresa pequeña, tampoco te hará mal irlos mirando. En cualquier caso, permanece atento a este blog pues en próximas entradas seguiré ampliando el tema.