ICE Faces

RECU-0103 (Recurso Ficha Técnica)

Descripción

Es un framework de código abierto para construir aplicaciones web con AJAX tipo RIA (Rich Internet Application).

Permite al programador incluir una serie de Ajax-tags en sus JSP o xhtml de tal manera que el código Ajax es generado por el propio framework automáticamente.

ICEFaces aisla completamente al desarrollador de AJAX. No hacen falta etiquetas especiales: se ponen los controles en la pantalla e ICEFaces se encarga de enviar sólo la información necesaria entre cliente y servidor. Es decir, ya no se envían los formularios a la antigua usanza, en un POST de HTTP, sino que sólo se envían los cambios que ha hecho el usuario del cliente al servidor, y los cambios en la pantalla del servidor al cliente. Además, con la inclusión de la librería Scriptaculous en ICEFaces, se dispone de arrastrar+soltar y de efectos (fundidos, parpadeos, apariciones, ...) para los controles.

Ventajas e inconvenientes

Las ventajas del uso de ICEfaces para enriquecer las aplicaciones web de escritorio son numerosas. Debido a la cantidad de frameworks existentes, se procede a mostrar una serie de características diferenciadoras respecto a otros frameworks:

  • Experiencia de usuario enriquecedora: crea una experiencia de usuario superior además de utilizar las ventajas de aplicaciones Java EE. Esto se consigue gracias a los componentes que vienen incluidos dentro de la distribución de ICEfaces.
  • Está basado en código abierto: ICEfaces es un framework basado en Ajax bajo licencia de código abierto. La comunidad de desarrolladores de ICEfaces incluye cerca de 20.000 desarrolladores en 36 países.
  • Basado en estándares: ICEfaces es una solución basada en Java, así que los desarrolladores pueden continuar trabajando de la misma forma que lo hacen. Hay multitud de plugins desarrollados para que ICEfaces sea integrado con multitud de IDEs Java.
  • El Ajax es transparente: ICEfaces aporta a los programadores un desarrollo con mínimo esfuerzo en la sección JSF.
  • Compatibilidad: ICEfaces soporta todos los servidores de aplicaciones, aporta plugins para los distintos IDEs y efectos javascript de librerías de cualquier empresa que haya desarrollado Ajax del mercado.
  • Seguridad: ICEfaces es una de las soluciones Ajax más seguras del mercado. Es compatible con SSL, previene los scripts de cross-site, inyección de código malicioso. Es una solución Ajax basada en servidor, la cual no utiliza datos de usuarios, además es especialmente efectivo en la prevención de fallos en los submits de los formularios y el ataque SQL por inyección.
  • Escalabilidad y clustering: El servidor asíncrono HTTP (AHS) aporta una alta escalabilidad para aplicaciones ICEfaces y pueden ser utilizadas por un gran número de usuarios concurrentes, además aporta despliegue en clúster (un requisito crítico que algunas soluciones no aportan).
  • Carga de páginas incremental con edición de secciones y sin recargas de página completas.
  • Se preserva el contexto del usuario durante la actualización de la pagina, incluyendo posición del foco y scroll.
  • En aplicaciones de tiempo real, las recargas de páginas son asíncronas.

En una comparativa con un producto similar, se opta por compararlo con Rich Faces. Es la competencia de Rich Faces, tiene tantos o más componentes que ésta y visualmente tiene la misma calidad. La documentación posiblemente es peor que la de RichFaces. El modo en que RichFaces hace funcionar Ajax permite interactuar con otras librerías e incluso añadirle Ajax a componentes que no lo tuvieran, mientras que ICEfaces limita a trabajar con sólo aquellos componentes para los que da soporte.

Requisitos e incompatibilidades

Requisitos

A continuación identificamos las plataformas que soportan el desarrollo basado en ICEfaces.

Integración con IDEs

ICEfaces aporta integración básica con una alto número de interfaces de desarrollo adaptados por la comunidad de desarrolladores. Destacamos los siguientes:

  • Eclipse (Web Tools Platform + JSF tools).
  • Sun NetBeans.
  • MyEclipse Enterprise Workbench.
  • BEA Workshop Studio 3, Workshop Studio for JSF.
  • Oracle JDeveloper 10g Studio Edition.

Servidores de aplicaciones

ICEfaces proporciona integración con los siguientes servidores de aplicaciones J2EE:

  • Apache Tomcat.
  • BEA Weblogic Server.
  • JBoss Application Server.
  • IBM Websphere Application Server.
  • Oracle Application Server Container for J2EE (OC4J).
  • SAP NetWeaver.
  • Sun GlassFish.
  • Sun Java System Application Server.
  • Webtide Jetty.

Portales y frameworks Java EE

ICEfaces soporta los siguientes portales y frameworks de desarrollo JEE:

  • Liferay Portal 4.3.
  • JBoss Seam 1.3.
  • JavaServer Faces (JSF) 1.1, 1.2.
  • Facelets.
  • Spring Web Flow.

Se ha comprobado la compatibilidad de ICEfaces en los siguientes navegadores:

  • Internet Explorer 6, 7
  • Firefox 1.x, 2.0
  • Mozilla 1.7.x and Netscape 7.x
  • Safari 1.3
  • Opera 9.x

Incompatibilidades

En este punto describiremos los errores más comunes detectados en la release que se recomienda en MADEJA.

  • La conexión asíncrona entre el navegador y el servidor se pierde debido a una interrupción de la conexión, la recarga de la página restablece el estado previo de la aplicación.
  • La inclusión en ICEfaces de contenido desde JSP no es compatible con MyFaces.
  • Los intentos de recuperar un parámetro de la Request usando la siguiente sintaxis no está soportado (devuelve nulo):
// Ejemplo
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(paramName);

Una alternativa puede ser usar la sintaxis siguiente:

// Ejemplo
((HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest()).getParameter(paramName);
  • Si se especifica el parámetro de configuración com.icesoft.faces.connectionLostRedirectURI en el fichero web.xml y no se coloca una comilla simple a la URL, el resultado es una cadena de conexión corrupta.

Versiones

La versión más estable lanzada por la empresa propietaria de ICEfaces (IceSoft) es la versión 1.6 del framework. No obstante, ya se encuentra una nueva versión ICEfaces v1.7.0 con un conjunto de mejoras y arreglos (nuevo popup contextual, google maps, soporte para funciones adicionales...) aunque actualmente se encuentra en fase de pruebas y debe ser considerada no apta para su uso en producción.