26 mayo 2007

Frameworks

En mi empresa estamos trabajando internamente en el desarrollo de un framework j2ee. Es un proyecto que pronto será opensource, ya lo comentaré cuando sea realidad.

Qué es un framework? Un framework es un conjunto de librerías, tecnologías y metodologías de programación con el objetivo de simplificar el desarrollo de un proyecto web.

Existen muchos frameworks en el mercado, desde sencillos frameworks MVC como struts o tapestry, u otros más generalistas, como Spring o Jboss Seam.

Por qué entonces nos ponemos a hacer otro framework? No es una pérdida de dinero? Puede parecerlo, pero creemos que es una apuesta a largo plazo para nuestro departamento, y que sin tener una visibilidad de algo tangible desde fuera del equipo de desarrollo, lo que si obtendremos es un mayor éxito en nuestros proyectos y un menor coste al realizarlos.

Por un lado no hemos empezado desde cero a programar el framework. Nuestro framework está basado en Spring, por lo que el core lo tenemos cubierto. Lo que hemos hecho es integrar otras tecnologías, que Spring no llega a cubrir por su orientación generalista, y que para nuestro negocio son bastante imprescindibles: un workflow engine, un gestor documental, un gestor de auditorias para Oracle... Todo lo intentamos hacer de acuerdo a las especificaciones JSR, para nunca depender de un producto en concreto.

Pero porqué hacemos esto? Porque los proyectos J2EE cada día son más grandes, el mundo del J2EE evoluciona rápidamente y el conocimiento tecnológico que se necesita es mayor. En un mercado laboral como el de los informáticos la rotación es muy alta y la incorporación de gente joven también. El conocimiento muchas veces se pierde, por lo que el esfuerzo de incorporar gente nueva es grande.

Lo que tratamos es reducir al mínimo el conocimiento de tecnologías J2EE, que son muy duras y caras de encontrar, proporcionando herramientas (wizards, plugins e integraciones) que permitan realizar módulos complejos de forma ágil. Además facilitar los servicios que habitualmente utilizamos de una forma homogénea, evitándole al programador tener que empezar de cero algo que anteriormente ya ha sido utilizado. Además, todo esto permite dedicar los esfuerzos de nuestro arquitecto a temas más delicados, en vez de dar soporte a los mismos problemas de siempre.

Y por último, y muy importante y muchas veces menospreciado, pretendemos crear una forma de trabajo estándar, que cualquiera pueda cambiar de proyecto y el coste de su incorporación sea mínimo. Para ello utilizamos tecnologías como maven2, continuum, wikis o trac.