Perfil WebSe publicó el borrador público de la especificación de la plataforma Java EE 6 (JSR-316), el cual quedará abierto para revisión pública y debate hasta el 23 de febrero de este año. Quizás la parte más notable de este borrador es el Perfil Web, el cual tiene el honor de convertirse en el primer perfil en la historia de Java EE.

Tecnologías

Roberto Chinnici, líder de la especificación, nos cuenta que el grupo de expertos se decidió por un Perfil Web con las siguientes tecnologias (parecido a la opción B del anticipo de Java EE 6):

  • Servlet 3.0
  • JSP 2.2
  • EL 1.2
  • Debugging support for other languages (JSR-45) 1.0
  • JSTL 1.2
  • JSF 2.0
  • JSR-250 1.1
  • EJB 3.1 Lite
  • JTA 1.1
  • JPA 2.0

La explicación del Perfil Web

El Perfil Web está pensado para desarrolladores de aplicaciones web modernas.

Con el término "moderno" se intenta destacar el hecho de que el mundo de las aplicaciones web progresó mucho desde la aparición de la primera especificación de Servlet. Inevitablemente, la cantidad de tecnologías que se usan para crear hasta la más simple aplicación web creció exponencialmente. De hecho, hoy en día hay muy pocas aplicaciones web que se escriben usando directamente el API de Servlet: la mayoría de las aplicaciones usan librerías y frameworks estándares o de terceros, en general de Software Libre, los cuales a su vez usan los servicios del contendedor de servlets.

Además de manejar las itercciones HTTP, la mayoría de las aplicaciones web tiene requerimientos importantes en el área de gestión de transacciones, seguridad y persistencia. Estos requerimientos pueden solucionarse con tecnologías que forman parte de la plataforma Java EE desde hace un tiempo, como ser EJB 3.x y Java Persistence API, pero que no suelen estar soportadas en contenedores de servlets "planos". Al incorporar varios de estos API, el Perfil Web apunta a aumentar el conjunto de tecnologías básicas para el desarrollo de aplicaciones web usando la plataforma Java.

Entonces, enfocarse en las aplicaciones web "modernas" implica ofrecer un conjunto de tecnologías razonablemente completo, compuesto de APIs estándar, y capaces de atender las necesidades de la mayoría de las aplicaciones web. Más aún, este conjunto debe ser facilmente extensible, para poder resolver cualquier otra necesidad de desarrollo.

Como una fuerza contraria a esta "completitud", se debe también balancear el deseo de limitar el tamaño de los contenedores web, tanto de forma física como en términos conceptuales. Desde el punto de vista de un desarrollador que está aprendiendo el Perfil Web, es más valioso tener un perfil pequeño y enfocado, con muy poco solapamiento entre las tecnologías, en vez de contar con un perfil más potente pero muy complejo, con APIs redundantes.

Al definir el Perfil Web se intentó encontrar un punto medio entre estos dos requerimientos.

En términos de completitud, el Perfil Web ofrece un tecnologías que resuelven la presentación y la gestión de estados (JavaServer Faces, JavaServer Pages), funcionalidad básica del contendor web (Servlet), lógica de negocio (EJB Lite), transacciones (Java Transaction API), persistencia (Java Persistence API) y más.

En términos de simpleza, el Perfil Web deja de lado varias API que forman parte de la plataforma Java EE. También utiliza la nueva característica de plugins de los Servlet que permite que las aplicaciones usen librerías que extienden al contenedor de servlets, con una mínima configuración. Por ejemplo, la tecnología Java API for Restful Web Services (JAX-RS), que es parte de Java EE pero no del Perfil Web, puede ser agregada como un plugin al contenedor web sin realizar ningún cambio al descriptor web.xml de la aplicación.

Por último, es bueno recordar que los productos que cumplan con el Perfil Web pueden tener más tecnologías que las requeridas. Seguramente los productos van a ofrecer alternativas al momento de la instalación entre distintas configuraciones, extensiones más ricas, o incluso una personalización completa más allá de las tecnologías básicas requeridas (una instalación "a la carta").

¿Y los Web Beans?

Una sorpresa es que los Web Beans no forman parte ni del Perfil Web ni de la plataforma completa, aunque están siendo considerados para incorporar (sección EE 6.29 de la especificación). El grupo de expertos está solicitando opiniones y feedback de la comunidad sobre este tema.

Por otro lado, la especificación de Web Beans (en borrador) tuvo grandes actualizaciones en los últimos días. Gavin King explicó en detalle los cambios, que surgieron de sugerencias del grupo de expertos de JSR-316. Entre los cambios más grandes, desaparece el mismo término "Web Beans". Esto significa que se une la funcionalidad provista por Web Beans con los conceptos ya establecidos de Java EE ("contenedores" y "componentes"). El resultado final es un "Web Beans" más usable, mejor integrado y facil de aprender, que ahora brinda soporte contextual e inyección de dependencia para toda la plataforma Java EE.

Leer más en Java EE Platform Draft Published, en el blog de Roberto Chinnici, y en el blog de Gavin King.

Inspiración.

"Si tú tienes una manzana y yo tengo una manzana e intercambiamos las manzanas, entonces tanto tú como yo seguiremos teniendo una manzana cada uno. Pero si tú tienes una idea y yo tengo una idea, e intercambiamos las ideas, entonces ambos tendremos dos ideas"

Bernard Shaw