¿Qué es un framework de desarrollo web?
En general, con el término framework, nos estamos refiriendo a una estructura software compuesta de componentes personalizables e intercambiables para el desarrollo de una aplicación. Es decir, un framework se puede considerar como una aplicación genérica incompleta y configurable a la que podemos añadirle las últimas piezas para construir una aplicación concreta.
Entre los objetivos principales de un framework tenemos: acelerar el proceso de desarrollo, reutilizar código ya existente y promover buenas prácticas de desarrollo como el uso de patrones.
Entonces podemos definirá a un framework Web, como un conjunto de componentes (por ejemplo clases en java y descriptores y archivos de configuración en XML) que componen un diseño reutilizable que facilita y agiliza el desarrollo de sistemas web.
El propósito de un Framework es ayudar y facilitar el proceso de desarrollo de aplicaciones. Debe permitir desarrollar la aplicación rápido y fácilmente y debe resultar en una aplicación superior finalizada.
Frameworks, en resumen, proveen una poderosa caja de herramientas. Las herramientas en esta caja ayudan en muchas áreas diferentes del desarrollo de aplicaciones. Proveen patrones de diseño esenciales y estructura al proyecto de desarrollo de la aplicación, y también provee el esqueleto y contenedor para los componentes que se crean para operar la aplicación.
Los Frameworks son importantes en todas las fases de desarrollo, desde el diseño hasta el desarrollo y quizá más en el mantenimiento continúo.
¿Que no es un Framework?
· Un Framework no es un contenedor de Servlets ni un servidor de aplicaciones, sin embargo un Framework y las aplicaciones desarrolladas con él, son siempre diseñadas para ser desarrolladas en un servidor de aplicaciones o un contenedor de servlets. El Framework no es contenedor por sí mismo, sin embargo los mejores Frameworks evitan ser vinculados con cualquier servidor de aplicaciones, lo que permite la portabilidad de aplicaciones finalizadas.
· Un Framework no es un API. Sin embargo debe existir una API que especifique la interface hacia varios componentes que son proveídos por el framework. El Framework es más que un API, el nombre implica una implementación específica, y un nivel superior de estructura que un API. A menudo un framework provee un número de API’s, pero es más que un API.
· Un Framework no es un generador de código. Es posible para un Framework realizar generación de código, pero esta es sólo una técnica para proveer servicios de aplicación. Más importante que el arranque del código físico es la estructura subyacente y los servicios proveídos por el framework.
· Un Framework no es una aplicación finalizada, sin embargo puede ser provista por una o más aplicaciones ejemplos. De la misma manera como una API no debe implicar o limitarse a una implementación, un framework no debe ser indisociable de una sola aplicación. Es frecuente el caso, sin embargo, donde un framework en particular está destinado para ser utilizado en la creación de un tipo concreto de aplicación: por ejemplo, el proyecto y framework IBM de San Francisco está diseñado para construir aplicaciones financieras. Este es un tipo más específico de framework que por ejemplo, el framework Apache Struts que se usa para crear una amplia variedad de aplicaciones.
· Un Framework no es IDE, ni un entorno de desarrollo, aunque la mayoría de los frameworks pueden ser utilizados en entornos de desarrollo integrados y otras herramientas de desarrollo. Algunos frameworks son incluso específicos para una herramienta de desarrollo única. Al igual que muchos desarrolladores, he encontrado que las herramientas de desarrollo o IDE que utilizo han cambiado muchas veces en los últimos años, a veces como resultado de un proyecto específico y, a veces como resultado de una mejor herramienta que viene junto. Lo ideal es que uno no se vea restringido a un entorno de desarrollo específico cuando se comprometa a un framework en particular, y ciertamente no estar estrechamente vinculados a un solo IDE.
· Un Framework no es un componente. Por lo general, los frameworks modernos proporcionan la base para un entorno de ejecución y el esqueleto para los componentes. Los frameworks son a menudo compuestos por un conjunto de componentes; de ahí que el término “biblioteca de componentes” se aplica a algunos frameworks. Un framework de verdad, sin embargo, es más que un grupo de componentes, debe proveer mecanismos que soporten el desarrollo de nuevos componentes también.
· Un framework no es un 4GL (Lenguaje de Cuarta generación), aunque puede proporcionar muchos de los mismos beneficios en el proceso de desarrollo. 4GL implica dependencia de un proveedor comercial y a veces sufren de una falta de extensibilidad. A menudo es difícil extender sus características para llevar a cabo nuevas tareas, e incluso, cuando se puede, se tiene que cambiar el lenguaje (de 4GL a un “nivel inferior” de lenguaje) para hacer la extensión.
Para poder entender cómo trabajan los frameworks web existentes es imprescindible conocer el patrón MVC.