martes, 15 de junio de 2010

Portales en Java

Una aplicación web es relativamente fácil de hacer... pero si nuestro cliente quiere que le hagamos un portal para que sea Intranet, Extranet, administración de contenidos, gestor de archivos, foros, chat, wiki y 50 etc. más, podemos decir "sí se puede", y a medida que avanza el proyecto pensamos que se podría vender a otro cliente, tratamos de hacer lo más estándar posible.... y nunca terminamos.

Estos sistemas web que permiten administrar contenidos se llaman Sistemas de Gestión de Contenidos (En inglés Content Management System - CMS) Estos ya tienen todo, o al menos todo el soporte necesario para gestionar contenidos web. Es una plataforma, y nosotros deberíamos unicamente anexarle las partes que faltan y lo que nuestro cliente necesita.

Los más conocidos en PHP son Joomla, PHPNuke, Drupal.  Estos se encuentran en los hosting que se alquila por US$20 al año. Son simples, y funcionan para todos tipos de usuarios.

Pero ¿y Java?

No pretendo menospreciar a PHP: es rápido, fácil de programar, y todas las cualidades de PHP.
Pero quizás nuestro cliente quiere algo que sea fuera de lo común, que sea seguro y que inspire confianza, además que PHP todos los tienen y nuestro cliente es algo exquisito.

En Java se hizo (hace mucho tiempo) CMS parecidos al PHPNuke, pero más parecían PHP convertidos a JSP. Otros (como Apache) trataron de hacer algo más ordenado (JetSpeed fue el primero). Esto tendía a que hayan varios "estándares" de CMS, como cuando salieron al inicio los JSP+Servlet sin un esquema ordenado de MVC.

Así que se solicitó al JCP un estándar de contenidos web incrustados, al que llamaron JSR 167 - Java Porlet. Un portal es un gran espacio donde se incrustan elementos pequeños de diferentes lugares, así como el http://my.yahoo.com o www.google.com/ig. Pues bien, cada elemento pequeño se denominó Portlet (Portal pequeño). Ese es el estándar, y deberían existir Servidores de Portlet. Estos Servidores serían la plataforma web, y nosotros deberíamos unicamente crear nuestro portlet que correría sobre él.

Actualmente existe la versión 2.0 de Java Portlet - JSR 286.

Y ¿habría que conseguir otro servidor web que no sea Tomcat, WebLogic, GlassFish o Jetty, para implementar nuestros portlets?

Afortunadamente, no.

Cualquier servidor Java web se configura para que sea un Contenedor de Portlets, el gestor de contenidos es un módulo web (war) que se instala en el Servidor Java Web, y los portlets son otros módulos web (war) con algunos cambios y archivos de despliegue adicionales que se instalan sobre el Servidor java Web, y listo... el portlet ya es visible desde el gestor de contenidos.

Algunos de estos contenedores de portlets son los siguientes (sin un orden en especial):
  • Jakarta Pluto
  • Gridsphere
  • OpenPortal
  • Jamecs
  • Jetspeed
  • Liferay
(más de estos en http://java-source.net/open-source/portals)

Personalmente me gusta Liferay. He probado varios y este es el que más se ajusta a las necesidades de donde trabajo.  Tiene la versión comercial y la versión comunidad. Esta última se puede descargar empaquetada en diferentes servidores: en Tomcat, GlassFish (v2 y v3), Jetty, Resin, JOnAS (con Tomcat o Jetty), Geronimo + Tomcat y JBoss + Tomcat. Y si ya tenemos en producción un servidor web como Tomcat, Jetty, Resin o GlassFish, también se puede descargar el .war, previa configuración del servidor web, se instala el .war y listo... nuestro servidor web se convierte en un Portlet Container sin perder las configuraciones previas. Sus manuales están bien explicados.


Existe un plugin para NetBeans llamado Portal Pack que permite desarrollar Portlets. Este plugin funciona en NetBeans 6.8, y espero que lo adapten para NetBeans 6.9.

Así que, en vez de preocuparnos de la administración de contenidos, permisos, acceso, etc en un portal, mejor desarrollamos un portlet, lo instalamos en el Contenedor de Porlets, y listo... no más preocupaciones.

Mas adelante (ya son varios artículos pendientes) haré un post que explique cómo hacer un portlet. Pero puedes revisar los artículos publicados aquí: http://contrib.netbeans.org/portalpack/docs.html

Actualización: El PortalPack sí es compatible con la versión 6.9 de NetBeans IDE. Los .nbm que están incluidos en el PortalPack son compatibles con la versión 6.9 excepto los relacionados a WebSinergy, CMS y SAW.


5 comentarios:

  1. Interesante el post; desconocia los "portlet" a pesar de que soy un usuario de ellos en varios sitios.

    Saludos desde México.

    ResponderEliminar
  2. Gracias por los comentarios :)
    Saludos

    ResponderEliminar
  3. interesante el post, esperamos mas noticias sobre estos "portlet" y como desarrollarlos; saludos desde Perú

    ResponderEliminar
  4. Exelente post, y buenisnimo eso de "...(y el scrum) lo permiten" forme parte de un equipo de desarrollo y utilizabamos scrum y si no se definen bien los roles de los miembros puede ser un enorme dolor de cabeza

    ResponderEliminar
  5. hola, son nueva en esto. Me puedes explicar con que herramienta se desarrollan los portlet?? segun entiendo el contenedor de portlets puede ser Liferay. Que seria el Jboss?? o Glassfish??? quiero comprender bien este asunto.

    Gracias de antemano por la ayuda

    ResponderEliminar

Si quieres hacer una pregunta más específica, hazla en los foros que tenemos habilitados en Google Groups


Ah! solo se permiten comentarios de usuarios registrados. Si tienes OpenID, bienvenido! Puedes obtener su OpenID, aquí: http://openid.net/