Buscar
Social
Ofertas laborales ES
domingo
nov302008

Características JSF 2.0 (opinión publicada en Solo Programadores)

Características JSF 2.0 (opinión publicada en Solo Programadores)

Leonardo Vargas Sandoval, desarrollador de sistemas en Evertect Latinoamérica.

 

JSF 2.0 presentará novedades en cuatro áreas principales: facilidad de desarrollo, desempeño, adopción y nuevas características. Seguidamente un resumen de éstas.

 

  • Facilidad de desarrollo: esta área permitirá la creación de componentes por medio de agregación, reducirá la configuración por medio de descriptores, remplazándola por un uso extensivo de anotaciones las cuales se usarán al desarrollar componentes, navigation rules etc. Por último se eliminará el desarrollo de Tag Handlers gracias a la integración con facelets. 

 

  • Nuevas características: entre las nuevas características se puede ver una expansión del ciclo de vida del request para brindar soporte a peticiones Ajax, además se ofrecerá soporte de primera clase para el manejo de los recursos utilizados por los componentes JSF.

 

  • Desempeño: se propone renderizar deltas de los componentes JSF según se necesite en lugar de un renderizado completo de los componentes, se mejorará el manejo de eventos mediante PhaseListener y los componentes serán sin estado por defecto.

 

  • Adopción: para tener una mejor adopción JSF pretende mejorar la interoperabilidad entre librerías de diferentes vendedores, se agregará soporte para JSR 311,  Skinning o Themeing entre otros.

 

Finalmente surgen las preguntas: ¿JSF facilitará el desarrollo como lo hacen Wicket, GWT o Tapestry?, ¿Logrará una integración entre librerías?, ¿Será aceptado? Lo anterior depende del rumbo que tome la especificación y de la ayuda que brinde la comunidad desarrolladora.

domingo
nov302008

Más motivos para no usar Flex (esta vez más serios)

De un modo similar a otra entrada en un weblog que criticaba Flex, Bozhidar Bozhanov ha decidido escribir su propia opinión sobre el framework RIA de Adobe después de haberlo usado en un proyecto de envergadura pequeña-mediana. En esta ocasión, las críticas que se realizan en contra de Flex me parecen más serias y bien fundadas.

Entre estas críticas, se encuentran lo primitivo del mecanismo de gestión de excepciones que básicamente se basa en códigos de error, la carencia de soporte para multithreading (para el programador, porque internamente Flex sí usa varios thread), fallos en el carácter dinámico de ActionScript que, en ciertas ocasiones, le llevan a no determinar de modo adecuado el tipo de los objetos, varias deficiencias en el modelo de gestión de eventos, etc.


Como resultado de su experiencia, el autor concluye que Flex y ActionScript están todavía poco maduros y que en el próximo proyecto tipo RIA que tenga que abordar empleará GWT.

domingo
nov302008

JavaHispano Podcast - 025 - Noticias Diciembre 2008 (a)

En el siguiente número hablaremos de las últimas noticias correspondientes al portal. Presentado por Abraham Otero y Jorge Rubira. Las noticias que comentaremos son:

miércoles
nov262008

¿Están lloviendo de nuevo Cometas e Hilos?

He publicado un nuevo artículo en CometDaily.com. El artículo inicialmente revisa la técnica usada en ItsNat para proporcionar Comet en la forma long-polling. Dicha técnica está basada en el estándar servlet un hilo por petición. A lo largo del artículo se revisa la falsa creencia de que los sistemas basados en múltiples hilos (IO) son lentos y no escalables respecto a las técnicas modernas de muy pocos hilos basándose en NIO.

En los últimos años se ha estado apostado por la técnica de comunicaciones asíncronas (no bloqueantes), por ejemplo en servidores de aplicaciones, en contra de la técnica basada en hilos o síncrona (hilo por conexión, en donde los hilos se bloquean cuando no pueden leer o escribir).

Como justificación se partía de la idea de que la técnica de comunicación asíncrona es superior tanto en rendimiento y en escalabilidad a la técnica clásica síncrona. Dicha idea se basó inicialmente en el proyecto SEDA basado a su vez en la tesis doctoral de Matt Welsh en torno a 2001. En el ámbito Java se ha concretado en el predominio del uso de NIO en vez de IO (el proyecto SEDA está también basado en Java).

El artículo plantea que la tesis de Welsh era válida en aquella época sobre todo en sistemas Linux basados en el kernel 2.4 o anteriores y máquinas virtuales Java antiguas.

A pesar del paso del tiempo, que ha conllevado una drástica mejora en la gestión de hilos que introdujo el kernel 2.6 (Linux NTPL), la disminución del "coste" de la sincronización de hilos en las máquinas virtuales modernas y la normalización de los sistemas multi-núcleo (lo que hace nada práctico el modelo SEDA puro de un sólo hilo), la idea de que la técnica NIO es superior en rendimiento y escalabilidad a IO, ha seguido prevaleciendo aunque sin datos modernos que lo justificaran.

El artículo cuestiona esta creencia a partir de las investigaciones de Paul Tyma, ingeniero software en Google, en donde a través de varios tests da la vuelta a las asunciones típicas de este terreno tal y como que NIO tiene mayor rendimiento que IO para una sola conexión o que en la gestión de muchas conexiones concurrentes la solución IO o basada en muchos hilos (hilo por conexión) no es escalable porque la gestión de muchos hilos tiene un alto coste de tiempo (cuantas más conexiones, más hilos, más degradación). Paul concluye por tanto que IO no sólo es más rápido que NIO en una sola conexión, además la escalabilidad no se ve prácticamente en nada afectada por el aumento de hilos (los tests de Tyma abarcan hasta 1000 conexiones-hilos).


El estudio de Paul Tyma finalmente plantea que a fin de cuentas la gestión de conexiones y gestión de datos (estado o contexto) de dichas conexiones en NIO es básicamente lo mismo que ocurre en el kernel del sistema operativo en la gestión de hilos, pues en realidad los procesadores (más exactamente cores) son en general monohilo, y por tanto la conmutación de hilos es básicamente un problema de software similar al de la conmutación entre conexiones, en ambos casos para hacernos creer que existe un verdadero paralelismo.

Finalmente el artículo concluye que el estudio de Paul Tyma al haberse realizado en el nivel de conexión (sockets), no puede extrapolarse directamente a un nivel de servlet al existir más capas y un protocolo concreto (HTTP). Lo que ciertamente determinan los tests de Tyma es que ya no puede afirmarse con rotundidad la superioridad incuestionable de NIO frente a IO, diferentes escenarios pueden dar ligeras ventajas a uno u otro pero difícilmente una técnica será ampliamente superior
en rendimiento y escalabilidad a la otra pues en cierto modo ambas técnicas son esencialmente similares e IO tiene la ventaja de su mayor facilidad de programación.

 

miércoles
nov262008

Loom 1.0: desarrollo web apegado a estándares y buenas prácticas

Extrema Sistemas ha publicado la versión 1.0 de su framework web Loom, un framework ligero y apegado a las mejores prácticas y estándares web. Hace unos meses le dedicamos un podcast en donde Ignacio Coloma (el líder del proyecto) nos habló de las funcionalidades y motivaciones de Loom. Un punto a destacar es el énfasis que le han puesto a este framework para cumplir con las mejores prácticas de la web y enfocarlo a los estándares de usabilidad existentes. Así que out-of-the-box tienes soporte para caché de CSS, de archivos javascript, documentos HTML bien formados, validaciones, CDN's, etc.

Esta versión 1.0 viene con bastantes novedades entre las que destaca una herramienta para hacer scaffolding que utiliza Gradle (ivy + Groovy) y genera proyectos Loom desde cero. Otras características:

 

  • Tus CSS y javascript son concatenados, minificados (Usando YUICompressor o JSMIn) y comprimidos de forma automática. Además se usa una técnica de cache agresivo basado en MD5.
  • Soporte parcial para JAX-RS, la nueva especificación para servicios REST en Java.
  • Componentes para paginación.
  • Soporte para addons.

 

Por último, cabe señalar que Loom por detrás usa Spring y JPA con la implementación de Hibernate, además de JSP y componentes en forma de custom tags. Enhorabuena a Ignacio Coloma y a todo el equipo de Loom, quienes después de 2 años de trabajo y uso en sus desarrollos día a día nos han entregado un framework de esta calidad.