El mundo de las aplicaciones Web en Java

Desde hace unos días he notado que muchas personas en mi entorno están entrando al mundo de las aplicaciones web, pero no únicamente sitios web comunes, sino que estamos hablando de verdaderos sistemas web que utilizan tecnologías un poco más avanzadas que simples páginas web.

Con lo anterior me refiero a trabajar utilizando tecnologias o frameworks de desarrollo, los cuales en el mundo java pueden encontrarse en diferentes estilos, tamaños, colores y sabores.

Decidí hacer este post, porque la mayoría de veces no se sabe por dónde empezar, y a veces se suele cometer errores al intentar escoger el servidor de aplicaciones correcto, o que mejor se ajuste a las necesidades. durante una serie de post hablare un poco de los más comunes del mundo java.

TOMCAT

Tomcat es quizás el más famoso servidor web multiplataforma, me atrevería a decir que la mayoría que tiene conocimiento web a escuchado alguna vez en su vida sobre este servidor.

Si pusieron atención a como empecé a hablar de tomcat, habrán notado que dije “servidor web” y no servidor de aplicaciones. Tomcat no es un servidor de aplicaciones y hay varias cosas que marcan la diferencia para delimitar el porqué Tomcat no alcanza ese rango.

Tomcat carece de algo que un verdadero servidor de aplicaciones java posee

  • Capacidad para poder incluir Jars del estándar Java EE 5
  • Inyección de dependencias
  • Contenedor gestionado transacciones (EJB)
  • Mejoras de Entidades de OpenJPA
  • En servidores virtuales Cada host puede escuchar desde una combinación de puertos arbitraria

Tomcat posee soporte principalmente para trabajar con servlets y jsp’s comunes (exacto las que ocupan los tan criticados y famosos scriptlets <% %>) la mayoría de las veces se presenta de la mano de apache aunque puede trabajar por si mismo actualmente está en la versión 7 de desarrollo.

Tomcat es recomendado ampliamente para trabajar con Struts o con JSF de manera básica o haciendo uso  de la programación de servlets (que únicamente necesitan soporte HTTP sin nada complicado) y con propósito puramente WEB (webs con logica del lado del server), no se recomienda para aplicaciones empresariales o altamente transaccionales donde sea recomendado proteger servlets arios aspectos críticos de las transacciones.

GLASSFISH

Quizás una de las últimas obras de arte que Sun nos dejo antes de su desaparición y futura absorción por parte de Oracle, El hecho que Glassfish sea obra de Sun Microsystems  hace que se lleve muy bien con las aplicaciones java, este servidor de aplicaciones posee todo lo que antes mencione que tomcat no posee, lanzado por primera ocasión en junio de 2005 está actualmente en su versión 3 de desarrollo.

GlassFish está basado en el código fuente donado por Sun y Oracle Corporation, éste último proporcionó el módulo de persistencia TopLink. GlassFish tiene como base al servidor Sun Java System Application Server de Sun Microsystems, un derivado de Apache Tomcat, y que usa un componente adicional llamado Grizzly que usa Java NIO para escalabilidad y velocidad.

La siguiente tabla muestra un poco más las diferencias entre Tomcat y Glassfish

Pri Standard features Tomcat Glassfish Comment
1 Adoption levels high low Glassfish is new
2 Scalable ok yes Glassfish has grizzly
3 Includes Java EE 5 jars no yes
3 Dependency injection no yes
3 Container managed transactions no yes
3 OpenJPA entities enhanced automatically no yes
4 JDBC authentication yes yes In Glassfish 1.0.1
Virtual server features
1 Support for virtual hosting yes yes
1 Deploy same webapp to multiple hosts yes yes
1 Configure same webapp differently yes no Possible in Tomcat’scontext.xml orserver.xml
2 Per virtual host logging ok yes Tomcat’s JULI is a bit buggy [1], [2]
2 Each host has their own authentication realm yes no
3 Each host has their own deployment dir yes no
4 Each host has a jailed manager yes no
4 Each host can listen on a different port ok yes Tomcat requires an additional <Service>containers [3]
5 Each host can listen on an arbitrary combination of ports no yes For Tomcat, a host in one<Service> cannot share ports with a host in another<Service> [4]

Mi primera oportunidad de utilizar Glassfish hace mucho tiempo fue gracias a mi IDE favorito Netbeans, dado que siempre trae una version de glassfish para trabajar, a la fecha trae la version 3.

Glassfish puede hacer uso mas avanzado de frameworks y tecnologias que tomcat no puede (hasta la fecha con lo unico que no tengo conocimiento si funciona es con ADF de ORACLE) se pueden utilizar inclusive frameworks como richfaces que son de JBoss Community y EJB3

JBOSS

Este es quizás el servidor de aplicaciones más completo, pero a la vez complicado de todos, creado completamente utilizando el lenguaje java, es uno de los que más recursos puede llegar a consumir debido a la gran cantidad de features que contiene dado que JBOSS implementa todo el paquete de servicios de J2EE., es también multiplataforma al igual que los tomcat y que glassfish.

Pero para no hacer más larga este post, dejaremos a JBOSS para la siguiente entrega, endonde tambien hablaremos de Webphere de IBM.