Sin duda el espacio reservado a los frameworks web en Java está abarrotado. Los hay de todos los tipos, desde el tradicional Model2 (Spring MVC) al basado en componentes (Wicket). Tenemos alternativas que se ejecutan completamente en servidor (Seam) a algunas que trasladan gran parte de la lógica a Javascript procesándose en la máquina cliente (DWR). Tenemos librerías especializadas en aplicaciones CRUD (OpenXava), con su propio lenguaje dinámico (Grails), patrocinadas por fundaciones o empresas potentes, orientadas a entornos móviles y más. Todas ellos facilitan el desarrollo y en general están orientados al desarrollador. La pregunta es, ¿entonces por qué IWebMvc?
La respuesta es simple, una vez evaluadas todas las alternativas y decida la mejor para una aplicación concreta es muy posible que encontrar que lo ideal es un framework para la lógica de negocio, otro para la capa de web, componentes ricos para el cliente, integración de la comunicación cliente servidor, una capa de abstracción para el acceso a datos, seguridad y más.. Esto es lo que se denomina "full stack", es decir, un entorno. Seam, por ejemplo, provee uno basado en EJB3 y JSF. Pero ¿y si no interesa una aproximación basada completamente en servidor? Pues la lista se acorta a pasos agigantados. Ante esta situación existe una alternativa como Appfuse que integra muchos frameworks distintos pero ofrece muy poca funcionalidad añadida. O realizar la labor de integración individualmente, lo cual requiere un plus de esfuerzo. IWebMvc ofrece una plataforma completa perfectamente configurada basada en los, bajo una opinión personal, productos más interesantes y potentes en el entorno Open Source en Java que son:
- SpringUn contexto de inyección de dependencias específicamente diseñado para funcionar como middleware ofreciendo la misma capacidad que un servidor de aplicaciones pero de forma modular. Sus extensiones para web (MVC, Webflow) y seguridad son reconocidas como de lo mejor del mercado. Y es prácticamente ubicuo en el desarrollo de Java empresarial.
- JPA/HibernateEl estándar para el acceso a base de datos con la capacidad de un ORM muy potente que además extiende la base con posibilidaddes como la cache de segundo nivel o la búsqueda por texto libre.
- DWRLa herramienta más sencilla para eliminar la barrera entre las diferentes metodologías a la hora de programar código cliente y código servidor.
- dojoNo existe una alternativa con una licencia OSS equivalente y que aporte tanto soporte al desarrollo en Javascript como una librería de componentes AJAX tan completa.
- GroovyDe manera que se pueda prototipar rápidamente código con un lenguaje dinámico.
- Y más...Como, por ejemplo, JAWR, una librería dedicada a la distribución de JS/CSS de manera inteligente (¡que además esta desarrollada por otro español!), The Legion of Bouncy Castle para criptografía, Ant+Ivy para la gestión transitiva de dependencias o JasperReports para los informes.
Pero IWebMvc va un paso más allá e incluye un soporte CRUD completo basado en AJAX (como todo en el resto del proyecto). Es decir, sin haber codificado una línea de código, el desarrollador obtiene un entorno configurado y la gestión de cualquier tipo de entidad persistida en una tabla de la base de datos. Y además todo esto construido mediante widgets reutilizables de manera que es posible gestionar la creación de nuevas pantallas en base a la paleta existente así como extender ésta mediante nuevos tags.
Para terminar este primer artículo conviene repasar aunque sea de una manera somera parte de la lista de componentes de la plataforma. Las capturas son del tema por defecto e idioma inglés pero, por supuesto, esto cambia a voluntad del usuario.
- Básicos
- Avanzados
- Tabla paginadaEl componente de tabla paginada es la base sobre la que se desarrollan un número importante de los componentes más complejos. Entre sus funcionalidades destacan la carga vía AJAX, la paginación, la ordenación, la recolocación de columnas, la ocultación dinámica de columnas, el menu contextual o la selección múltiple. Una tabla paginada tiene una correspondencia uno a uno con una entidad de la base de datos. El desarrollador sólo necesita indicar cual.

- SeguridadCAPTCHA, identificación o desconexión son funcionalidades ofrecidas por defecto. Como siempre, todo por AJAX.

- LocalizadorConstruido sobre la base de la tabla filtrada (una capacidad extra de la tabla base) permite referenciar el objeto actual con otras entidades de la base de datos. Estaríamos hablando del lado izquierdo en una relación 1-N (o una clave externa o foreign key).

- ColecciónPara tratar las relaciones 1-N desde el punto de vista contrario

- DireccionesAlgunas entidades comunes que acaban por incluirse en todas las aplicaciones como puede ser pais, provincia, direccion o sexo vienen predefinidas y con sus widgets particulares. ¡Integrados con las APIs AJAX de Google!

- CRUDFinalmente, el widget mas complejo de la plataforma permite trabajar con una entidad listándola (con filtros o búsquedas estilo Google), creando informes, trabajando en modos de vista o edición, modificando los registros, generando nuevos objetos o eliminando filas existentes. ¡Incluyendo entidades anidadas!

En el próximo artículo explicaré como configurar una aplicación con IWebMvc 2.0 y como generar una página como la de este vídeo en cinco líneas de código. Para ir abriendo boca la aplicación de demonstración está disponible en el repositorio.



0 comentarios:
Publicar un comentario en la entrada