jueves, 25 de septiembre de 2014

Diferencia entre librería y framework

Una entrada corta para aclarar un par de conceptos que parece que mucha gente confunde: librería (o biblioteca) y framework.

He encontrado en multitud de sitios referencias a jQuery como un framework y esto es un error, jQuery es una librería. Por si tenemos alguna duda, en la própia página de jQuery nos lo aclaran:

What is jQuery?
jQuery is a fast, small, and feature-rich JavaScript library.

Una librería normalmente proporciona una serie de funciones/métodos muy concretos para simplificar tareas complejas. Podemos utilizarlas desde nuestro código respetando el API que proporcionan pero sin necesidad de adaptar/modificar nuestra estructura de aplicación.

Un ejemplo podría ser una librería matemática que ofrezca funciones avanzadas para cálculos estadísticos. JQuery es otro ejemplo, es una librería que proporciona funciones sencillas para manejo del DOM, para comunicación AJAX y algunas otras utilidades.

Un framework aporta una estructura completa en la que nosotros "encajamos" nuestro código, implementando la lógica concreta de la aplicación. Es mucho más que una librería. Impone unas condiciones a nuestra aplicación e incluso puede definir su arquitectura. Es un marco (framework) en el que nosotros vamos a definir piezas. El marco define las reglas del juego a las que nos tenemos que atener.

Un ejemplo serían los frameworks MVC (o MV*). La mayoría definen la forma en que tenemos que estructurar nuestra aplicación y la forma en la que los elementos de esta estructura se comunican. Deberemos crear modulos, modelos, vistas, etc, siguiendo unos patrones concretos y escuchar eventos predefinidos que marcan el flujo global en el que debe integrarse nuestra aplicación.

A veces un framework condiciona sólo una parte de nuestro programa, por ejemplo la parte gráfica en el caso de Bootstrap.

Simplificando mucho podríamos decir que nuestro código llama a las funciones de una librería mientras que un framework llamará a nuestro código, que sería algo así como piezas integradas en su estructura.

En una librería tu código es el que está al mando y utiliza las funciones de la librería cuando y como quiere. En un framework, éste es el que está al mando y tu código debe encajarse en su estructura y normas.

En cierto modo la diferencia principal es que un framework implica una forma de inversión de control porque nuestro código será invocado por él, que actua como coordinador de la actividad de nuestro programa.

14 comentarios: