viernes, octubre 07, 2005

Struts, ¿buscas trabajo?


Como os podreis imaginar, no le estoy preguntando a un señor llamado struts si está buscando trabajo. La verdad es que en España, Struts está de moda. Es el MVC orientado a la web más utilizado en el mundo javero.
¿Y qué es eso de MVC? Estas siglas responden a Model-View-Controller (modelo, vista, controlador), que es uno de los famosos patrones de diseño del Gang of Four.
Un patrón de diseño es una solución elegante a un problema recurrente. Ante determinados problemas que siempre están presentes en el desarrollo de un programa y gracias a la experiencia de haberse enfrentado una y otra vez a los mismos se consiguen soluciones lo suficientemente abstractas como para ser usadas en muchos desarrollos. Ejemplos de este tipo de soluciones son el patrón Iterator, Facade, Singleton, MVC, etc...
Existen distintos tipos de patrones de diseño según su objetivo. Así tenemos patrones de diseño de creación, estructurales y comportamiento
En el caso del MVC, se trata de un patrón de comportamiento compuesto por tres partes diferenciadas:
- Modelo: son los datos de negocio. Un ejemplo sencillo, tenemos una aplicación web de registro de usuarios. La clase que se encarga de representar los datos del usuario así como las clases que sirven para tratar esos datos, son el modelo.
- Vista: La vista, como indica su nombre, son las clases que se encargan de mostrar en pantalla los datos, formularios y demás elementos para que el usuario trate con la aplicación.
- Controlador: el controlador es el que se encarga de gestionar las entradas del usuario, actuar con el modelo y seleccionar la vista adecuada al usuario en cada momento.Como ya he dicho antes, Struts es un framework basado en ese patrón. Como en todos los frameworks, en Struts hay muchas cosas ya hechas, pero no todas... Para poder desarrollar una aplicación en Struts vamos a tener que tocar en medidas diferentes los tres componentes del patrón.
En el caso de la vista, el trabajo es completamente nuestro. Podemos hacer uso de sistemas de plantillas para facilitarnos la vida (los tiles ya están incluidos en struts por defecto). Por lo general, la vista contará con un montón de páginas jsp, taglibs, html, etc...El modelo también es trabajo completamente nuestro. De nosotros depende tener un modelo limpio que nos permita conectarlo al controlador sin ensuciar su lógica. En general el modelo suelen ser JavaBeans, clases de acceso a la fuente de datos (DAOs, EJBs, etc...).
Y, por último está el controlador, que es lo que nos dan casi completamente hecho. El controlador en Struts se basa en archivos de configuración xml (struts-config.xml, validator.xml, tiles-def.xml, etc...) que cuanto mejor conozcamos más trabajo nos ahorrarán. Pero no todo es xml en el controlador de Struts, hay también que programar. En los casos más sencillos tendremos que programar un clase que herede de org.apache.struts.action.Action y después deberemos añadirla al archivo de configuración de struts-config.xml). En casos en los que los formularios sean lo suficientemente complejos (y no podamos usar los fantásticos DynaActionForm) también tendremos que programar una clase que herede de org.apache.struts.action.ActionForm.
Por lo general, esto será todo el trabajo que tengamos que hacer en una aplicación de struts más o menos sencilla. Aunque Struts tiene mucha más potencia, le puedes añadir plugins, tiene su propia gestión de excepciones, ofrece librerias de etiquetas muy útiles, un framework de validación (validator) y un largo etceterá.
Struts es útil para hacer el trabajo al que está destinado. Pero no podemos olvidarnos de que hay tecnologías emergiendo con fuerza y que serán posibles rivales de Struts (o quizás se puedan complementar, he visto por ahí un plugin de Spring para struts), como puede ser Spring o directamente las nuevas Java Server Faces desarrolladas en gran parte por el propio creador de Struts.

No hay comentarios: