Kamlov
19Feb/112

ICEfaces 2.0 – AJAX Push

Posted by Jadisha Yarif

Ajax Push permite crear aplicaciones colaborativas multiusuarios.  Ésta es una característica que ha estado presente en ICEfaces desde versiones anteriores, sigue el siguiente enlace para que tengas una idea previa de cómo trabaja el Ajax Push Server:

Ajax Push Server en ICEfaceshttp://www.kamlov.site90.net/?p=803

Con Ajax Push, ante cualquier cambio de estado de la aplicación, todos los usuarios pueden estas informados, ante la actualización de las páginas de un grupo de usuarios.  Estas actualizaciones son enviadas a los navegadores de un grupo de clientes, gracias al Ajax Automático, otra característica de ICEfaces 2.0.

En ICEfaces 2.0, las APIS que utilizaba el Ajax Push han sido simplificadas para añadir fácilmente capacidades de colaboración en aplicaciones RIA.  Asimismo, se utiliza ahora un mecanismo de notificación asíncrona llamada ICEPush.

Este mecanismo utiliza un long polling para proveer notificaciones asíncronas sobre el estándar HTTP.  Y ¿qué es un long polling?, éste es una variación del polling (operaciones de consultas constantes para establecer una actividad síncrona) que básicamente emula información de un servidor a un cliente.  Sin embargo, cuando el servidor no dispone de información para enviar a un cliente, éste guarda la petición, hasta disponer de información y mandar una respuesta completa y satisfactoria al cliente, en lugar de mandar una respuesta vacía.

A continuación, se muestra la secuencia de los eventos con Ajax Push:

1. Esta secuencia inicia cuando se refleja un cambio en el estado de la aplicación, lo que genera un evento Ajax Push.

2. Luego, las notificaciones ICEpush son enviadas al navegador del Cliente, a través de una conexión ICEpush (ICEpush Bridge).

3. Estas notificaciones del navegador del Cliente generan una petición Ajax, lo cual implicará la ejecución del ciclo de vida JSF en el servidor.

4. Finalmente, el mecanismo de renderizado calculará las diferencias del nuevo y antiguo estado del Cliente y enviará las actualizaciones de la página, a través del JSF Ajax Bridge, al Navegador del Cliente para que se refresque.

Nota: Los paso 3 y 4 son parte del Ajax Automático, para más información seguir el siguiente enlace: Ajax Automático.

Además, esta tecnología funciona con cualquier aplicación Java, no necesariamente JSF, sino que también se puede utilizar con JQuery, GWT, JSP, Spring MVC, Wicket, Prototype, Grails, JavaScript y otros frameworks para Java.  Para ello, sólo es necesario importar a tu aplicación Java la librería icepush.jar.

De la misma manera, el uso de este característica es muy simple, ya que si se desea enviar una notificación a todo un grupo, se debe agregar la siguiente línea de código:

PushRenderer.render("miGrupo");

Si se desea enviar las actualizaciones en la sesión del usuario, se utiliza:

PushRenderer.addCurrentSession("miGrupo");

Y si se Si se desea enviar las actualizaciones a todas las vistas del usuario, se agrega:

PushRenderer.addCurrentView("miGrupo");

Ahora es mucho más fácil construir aplicaciones colaborativas con ICEfaces 2.0!

Archivado en: ICEfaces 2 Comentarios
19Feb/110

ICEfaces 2.0 – AJAX Autom@tico

Posted by Jadisha Yarif

Hasta antes de JSF 2.0, se tenía que utilizar controles como <f:ajax> para controlar las actualizaciones de los componentes en la interfaz del usuario final.  Esto degradaba el rendimiento de los desarrolladores y mucho más aún el mantenimiento se tornaba tedioso, complicado e inmanejable, puesto que si se necesitaba una gran cantidad de controles a actualizar, todo la página de presentación iba a tener tantos <f:ajax> como componentes a actualizar.  Por lo tanto, muchas veces teníamos como resultado una aplicación no escalable.

Sin embargo, con ICEfaces 2.0 y las capacidades de JSF 2.0, ya no se necesita más agregar el tag <f:ajax> a nuestros componentes, puesto que el Ajax Automático, utilizando la tecnología de renderizado Direct 2 DOM (D2D), se encarga de calcular eficientemente las diferencias entre una página y la siguiente.  Y así, utilizando el mecanismo de actualización incremental de página de JSF, se producen los cambios en el DOM del navegador Web del Cliente.

A continuación, se muestra un ejemplo de un campo de entrada, que cuando el usuario ingresa data alguna, se genera un campo de salida:

<h:form>
    <icecore:singleSubmit>
        <h:panelGrid columns="1">
            <h:inputText id="miInputText" value=""/>
            <h:outputText id="miOutputText" value=""/>
        </panelGrid>
    </icecore:singleSubmit>
</h:form>

La secuencia de actualización de los componentes de una página, se muestra en la siguiente figura:

1. Esta secuencia inicia con la Interacción del Usuario, cuando termina de ingresar data en el campo de texto.

2. Una vez que el usuario ya no tiene como objetivo el campo de texto, se dispara un Evento Ajax.

3. Se realiza una Petición Ajax, a través del puente estándar JSF (JSF Ajax Bridge).

4. El ciclo de vida JSF se ejecuta sólo en el componente de texto (imputText), pues se ha utilizado Single Submit en éste, actualizándose el modelo.

5. En el servidor, se construye el modelo, en donde se compara las diferencias entre el modelo anterior y el siguiente, a nivel de árboles, con el motor Direct 2 DOM (D2D).  Así, se construyen las actualizaciones necesarias automáticamente.

6. Las actualizaciones de página se envían al Cliente.

7. La actualización DOM se aplica para refrescar el navegador del Cliente.

Como se mostró en el ejemplo anterior, se utilizó una característica del Ajax Automático, que es el Single Submit, el cual permite básicamente especificar qué componentes se actualizarán, esto se utiliza para no tener actualizaciones de componentes no deseados.  A diferencia del Partial Submit, que permite que todos los componentes comprendidos en un formulario se actualicen, si sólo han pasado todos sus componentes por los validadores (validators), mostrando FacesMessages para componentes que el usuario muchas veces no ha interactuado aún.  En cambio, con Single Submit se garantiza que el componente se actualice si la data de entrada es la correcta; y sin causar FacesMessages erróneos.

En conclusión, esta característica trae simplicidad para el desarrollo, fácil mantenimiento, escalabilidad, menor costo de desarrollo.  Asimismo, ya no es necesario que el desarrollador se preocupe por las actualizaciones de página, puesto que con Ajax Automático y D2D se encargan de realizar esa tarea.

Archivado en: ICEfaces Sin comentarios
19Feb/110

ICEfaces 2.0

Posted by Jadisha Yarif

ICEfaces 2.0 es un framework RIA basado en JSF 2 (Java Server Faces), que permite desarrollar aplicaciones amigables e interactivas para el usuario bajo la plataforma Java2EE.

Las versiones anteriores de este framework estuvieron basadas en JSF 1.1 y 1.2, estableciendo así características como Ajax Automático y Ajax Push.  Ahora, con JSF 2, estas características han mejorado notablemente.  Esto se debe a que AJAX está integrado en el núcleo de la arquitectura de JSF, lo cual permite que el procesamiento de las peticiones y actualizaciones de la interfaz de usuario se integren al ciclo de vida de JSF 2.0.

De la misma manera, otra de las novedades es que existe un soporte de desarrollo con Portlets en ICEfaces 2.0.  Esto se debe a Portletfaces Bridge, el cual ha sido adaptado para la versión JSF 2.0 y para el fácil desarrollo de Portlets con la tecnología ICEfaces.

Ahora, ICEfaces 2.0 ofrece más de 100 componentes RIA, incluyendo los componentes estándares de JSF 2.0.  Todos estos vienen integrados con Ajax Automático, lo cual significa que no se tendrá que usar más el control <f:ajax> de JSF para especificar cuáles de nuestros componentes se deben refrescar o actualizar; pues esta característica ahora utiliza la tecnología de Direct 2 DOM (D2D), con lo cual se logra calcular automáticamente qué componentes son necesarios de actualizar, siguiendo los estándares de JSF 2.0.  Todos estos componentes vienen divididos en 3 suites:

ICEfaces Components, el cual incluye todos los componentes de ICEfaces 1.8 y una capa de compatibilidad que permite el funcionamiento con ICEfaces 2.0 y por ende con JSF 2.0.  Todo ello, permite la fácil migración de ICEfaces 1.8 a una versión más reciente del framework.

ICEfaces Advanced Components, son los componentes que se basan en Advanced Component Environment (ACE), que básicamente son controles automatizados y optimizados, que tratan de cumplir con la funcionalidad de tareas de comunes y que el desarrollador utilice componentes JavaScript, sin la necesidad de aprender o usar directamente JavaScript.

ICEfaces Enterprise Components, son los componentes exclusivos de ICEfaces 2.0, que derivan de la versión de ICEfaces 1.8.  Sin embargo, sólo se pueden usar con la última versión, pues fueron adaptados a la nueva arquitectura de JSF 2.0.  Estos componentes disminuyen el tiempo de implementación.

Por otro lado, ICEfaces 2.0 introduce el término de "Window", el cual permitirá que cada ventana del explorador o pestaña tenga su propio ciclo de vida, como si se manejara una sesión diferente.

Asimismo, en esta versión del framework se están incluyendo nuevas anotaciones para el manejo de los Beans, pues en todos los casos el comportamiento de estos Beans no pueden ser intuitivos.  Ante ello, se agregan estas anotaciones que tienen como objetivo controlar el comportamiento de los Beans.

También, existe un Registro de los Recursos utilizados, el cual permite registrar instancias javax.faces.application.Resource en ejecución.  De esa manera, cada recurso es registrado en un ámbito diferente, como aplicación, sesión, vista, flash, ventana, entre otros.  Así, el garbage collector puede recolectar estos recursos cuando su ámbito expire.

Si deseas saber más sobre el funcionamiento de esta tecnología, revisa los siguientes enlaces:

Archivado en: ICEfaces Sin comentarios
8Ago/106

Configurando el Entorno de Desarrollo de Android

Posted by Jadisha Yarif

Para iniciar a desarrollar Aplicaciones en Android es necesario configurar nuestro entorno de trabajo.  Ante ello,

disponemos de un plugin, el cual lo podemos integrar fácilmente a nuestro IDE Eclipse.  Éste es el Android Development Tools (ADT), el cual nos permitirá crear proyectos Android, agregar componentes a nuestras interfaces, exportar nuestra aplicación para su distribución, entre otras características.  Si no tenemos este IDE, lo podemos descargar libremente en el siguiente enlace: Descargas del IDE Eclipse.

Nota: El plugin es compatible con las versiones 3.4 y 3.5 del IDE Eclipse.  Todavía existen algunos errores con la versión 3.6 del IDE.

Instalación del Plugin ADT en Eclipse

Eclipse 3.4 o Eclipse Ganymede Eclipse 3.5 o Eclipse Galileo
Nos dirigimos a la opción Help->Software Updates Nos vamos a la opción Help->Install New Software...
En el tab de Available Software, hacer clic en el botón Add Site... Hacer clic en el botón Add...
Ingresar en el campo Location, el siguiente URL: http://dl-ssl.google.com/android/eclipse/. Ingresar en el campo Name, un nombre como Android; y en el campo Location, el siguiente URL: http://dl-ssl.google.com/android/eclipse/.
Y hacer clic en el botón OK.

Seleccionamos el campo Developer Tools y hacermos clic en el botón Install...

Seleccionamos el campo Developer Tools y hacemos clic en el botón Next.
En la siguiente ventana, se mostrará una lista con Android DDMS y Android Development Tools, las cuales deben estar marcadas.  Y hacer clic en el botón Next.
Leer y aceptar el acuerdo de licencia y hacer clic en el botón Finish.
Ahora debemos de reiniciar el IDE Eclipse.

Archivado en: Sin categoría Continúa leyendo
5Ago/104

Comenzando con Android

Posted by Jadisha Yarif

Android es un Sistema Operativo orientado para teléfonos móviles.  Éste permite el desarrollo de aplicaciones, a través de un SDK, el cual brinda una serie de herramientas y APIs necesarios para comenzar a desarrollar aplicaciones, utilizando el lenguaje Java, con un poco de XML.

Nota: Muy pronto se lanzarán netbooks HP con el Sistema Operativo Android.

Entre las características que más destacan de este software son las siguientes:

  • Un Framework de Aplicaciones, que permiten las reutilización y reemplazo de los componentes.
  • Soporta diversos formatos de archivos multimedia (audio, video, imágenes): MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF.
  • Utiliza SQLite para el almacenamiento de datos.
  • Posee Gráficos Optimizados por el uso de librerías de gráficos 2D, 3D, basados en la especificación de OpenGL ES 1.0.
  • Dispone de Bluetooth, EDGE, 3G, y WiFi, dependiendo del Hardware.
  • Posee Cámara, GPS, brújula y acelerómetro, dependiendo del Hardware.
  • Brinda un Entorno Amigable de Desarrollo, pues cuenta con Emuladores del Dispositivo Móvil para las diferentes versiones del Software; herramientas para depurar y testear; y perfiles de memoria y performance.
  • Tiene un plugin para el IDE Eclipse.

Lo primero que necesitamos para comenzar a crear Aplicaciones Android, es instalar el SDK, a continuación te mostramos los enlaces de descarga para tu plataforma operativa:

Archivado en: Sin categoría Continúa leyendo
21Jul/100

Hyperlinks en JavaFX

Posted by Jadisha Yarif

Muchas veces nos vemos en la necesidad de invocar a direcciones web, desde nuestros Aplicativos Web, Escritorio, Móvil, entre otros.   Y esto es sencillo utilizando el componente Hyperlink de JavaFX.  Sin embargo, capaz no tenga sentido hablar de algo tan trivial como esto, pues su inserción en nuestro Aplicativo no es cosa del otro mundo.  No obstante, lo que resulta complicado de este componente es su implementación, pues es necesario considerar diversos factores como la versión de Java, el modo de despliegue de la Aplicación (Web, Escritorio, Móvil, etc.).

Acá te planteo algunas soluciones a usar para tus Applets de JavaFX, Aplicaciones WebStart, y otros.

AppletStageExtension

Éste te permite abrir un URL desde tus Applets y Aplicaciones WebStart.  Para el segundo caso, siempre y cuando se especifique que el destino es en una página en blanco.   Esto se puede configurar con la opción target (objetivo), que posee los mismos valores que en HTML.  A continuación se detallan:

Archivado en: Sin categoría Continúa leyendo
16Jul/102

Transiciones en JavaFX

Posted by Jadisha Yarif

JavaFX nos brinda la posibilidad de agregar efectos a nuestros objetos, controles, nodos, imágenes, figuras, formas, entre otros, de una manera más sencilla.  Esto es posible gracias a las animaciones de la clase Transitions, contenida en el paquete javafx.animation.transition.Transition de JavaFX.  Esta clase nos ofrece un framework para incorporar diversas transiciones; que a la vez nos permitirá componer los efectos de éstas de forma paralela o secuencial.

En esta clase, encontramos diferentes tipos de transiciones como Fade (desvanecer gradualmente), Rotate (rotar), Translate (trasladar) , Scale (agrandar), Pause, Parallel, Sequential y Path.

Cualquiera de estos tipos lo puedes agregar, arrastrándolo desde tu paleta de opciones JavaFX.

Archivado en: Sin categoría Continúa leyendo
14Jul/100

Kamlov Ganador del Blog Contest ICEfaces 2010

Posted by Jadisha Yarif

Hace unos meses, nuestro blog Kamlov fue inscrito en el 2do Concurso Anual de Blogs de ICEfaces.  Y, desde ya, teníamos la certeza de ser uno de los ganadores, pues éramos uno de los candidatos calificados por ICEfaces para ganar premios adicionales.  Es así que, el día de hoy, anunciaron a los ganadores del Concurso, con 6 días de retraso, pues estábamos esperando la respuesta ansiosamente desde el 9 de Julio.  Como premio a nuestro esfuerzo, ganamos un iPad Apple de 16 GB.  Ahora, esperamos que ICEfaces no se demore en enviarnos nuestro premio a Perú :-) wiii!.

Archivado en: Sin categoría Continúa leyendo
5Jul/104

ICEfaces: Dual List

Posted by Jadisha Yarif


Muchas veces, en nuestras aplicaciones, necesitamos de un componente, control o widget que nos permita seleccionar uno o más elementos de una lista y transferirlos a otra.   En la actualidad, no existe un nombre estándar para éste.  En Struts2, este componente es conocido con el nombre de optionTransferSelect.  En OpenFaces, recibe el nombre de TwoListSelection.  Y en ICEfaces, se le conoce como DualList.  Sin embargo, todos presentan funcionalidades semejantes.  A continuación, te presentamos una imagen de este componente.

En este post, te enseñaremos cómo crear este componente y configurar los eventos de cada botón, para que todos los elementos se transfieran a la derecha o izquierda o únicamente los elementos seleccionados.

Archivado en: ICEfaces Continúa leyendo
5Jul/103

Ajax Push Server en ICEfaces

Posted by Larry Martin

Una característica de ICEfaces que me gustaría contarte es sobre el Ajax Push Server. La tecnología Push se basa en que las peticiones ahora se dan de lado del servidor, no como en los casos comunes donde la petición la hace el usuario.

De esa forma, un usuario puede observar como la web cambia de forma dinámica y presenta un gran atractivo para si mismo, en otras palabras, puedo apreciar una aplicación mucho más interactiva para el usuario.

Cuando varios usuarios están interactuando con los mismos datos, el Ajax Push habilita las funciones de colaboración en tiempo real, porque todo el mundo puede ser consciente de cada instante las acciones de otros. Ajax Push es una capacidad fundamental del marco ICEfaces, disponible en el primer lanzamiento

ICEfaces te permite que hagas uso de algunos demos. Te dejo el enlace a continuación:

Las conferencias sincronizadas y la mensajería instantánea son ejemplos típicos de los servicios tipo 'push'. Los mensajes de chat y, en ocasiones archivos, son enviados al usuario tan pronto estos son recibidos por el sistema de mensajería.

Archivado en: ICEfaces Continúa leyendo