jueves, 9 de diciembre de 2010

¿Qué es un framework de desarrollo web?

 ¿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.

Frameworks de Desarrollo Web - Tecnología Java

Tecnología Java


1.    Frameworks existentes

A continuación se enumeran los principales frameworks existentes para la tecnología Java JEE

·         Apache Struts
·         Spring
·         Java Server Faces
·         Vaadin
·         Barracuda MVC

2.    Comparación de características

  Se muestra un cuadro comparativo con las características más relevantes de los frameworks.

Framework
ORM
AJAX
MVC
Push/Pull
Versión Java
Tipo Licencia
Current Release
Apache Struts
Si
Si
Push & Pull
1.5
Apache
2.2.1
Spring
A través de Hibernate
Si
Push & Pull
1.5
Apache
3.0.4
Java Server Faces
-
Si
-
1.5, 1.6
JDL
2.0
Vaadin
Si
GWT
Pull
1.5
Apache
6.4.4
Barracuda MVC
Si
Si
Push & Pull
1.4, 1.5
GLGPL
2.1


martes, 5 de octubre de 2010

Frameworks de Desarrollo Web - Tecnología PHP





Tecnología PHP

1. Frameworks existentes

A continuación se enumeran los principales frameworks existentes para la tecnología PHP

·         CakePHP
·         Zend Framework
·         CodeIgniter
·         eZ Components
·         Kohana
·         Qcodo
·         Prado
·         Seagull
·         Solar
·         Symfony

2. Cuadro comparativo
       Se muestra un cuadro comparativo con las características más relevantes de los frameworks.

Framework
Lenguaje
Ajax
MVC
ORM
Seguridad
Cake PHP
PHP4, 5
Prototype/script.aculo.us, JQuery
Si
Si
ACL
CodeIgniter
PHP4, 5
Prototype/script.aculo.us, JQuery
Si
Si
Si
eZ Components
PHP5

Si

Si
Kohana
PHP5
Si
Si
Si

Qcodo
PHP5
Built-in
Si
Si

Symfony
PHP5
Prototype, script.aculo.us
Si
Si
plugin
Zend Framework
PHP5 (5.2.4)
Toolkit-independent
Si
Si
ACL

sábado, 25 de septiembre de 2010

Frameworks de Desarrollo Web

Existen muchos frameworks de desarrollo web que facilitan un desarrollo rápido y simplificado de aplicaciones, los cuales los presentamos agrupados de acuerdo a las tecnologías más importantes que existen.

Frameworks en las diferentes Tecnologías de Desarrollo

Tecnología PHP

  • CakePHP
  • Zend Framework
  • Symfony
  • CodeIgniter
  • Seagull
  • Prado
  • Solar
  • eZ Components
  • Kohana

Tecnología Java

  • Struts
  • Hibernate
  • JavaServer Faces
  • Spring
  • Apache Wicket
  • Play
  • Stripes
Tecnología ASP.net

  • ASP.net MVC Framework
Forma parte del framework de aplicación web ASP.net. Permite utilizar las herramientas de .NET para construir aplicaciones que siguen el modelo MVC.


  • DotNetNuke
Es la principal plataforma de administración de contenido web para Microsoft .NET. Esta herramienta puede ser usada como CMS (Content Managment System) para construir web sites simples, o también puede ser usada como framework de desarrollo de aplicaciones web


  • MonoRail
  • Vici MVC
Tecnología Ruby

  • Ruby on Rails
Es un framework open source  popular debido a la facilidad de uso y a su código bastante simple.


  • Merb
  • Ramaze
  • Halcyon
  • Sinatra
  • Webby
  • Sass

Tecnología Python

  • Django


  • Pylons
  • Grok
  • TurboGears
  • Web2py
  • CherryPy
Tecnología Perl

  • Catalyst