domingo, 8 de diciembre de 2019

Framework vs Librería

Framework

Un framework, entorno de trabajo o marco de trabajo es un conjunto estandarizado de conceptos, prácticas y criterios para enfocar un tipo de problemática particular que sirve como referencia, para enfrentar y resolver nuevos problemas de índole similar.
En el desarrollo de software, un entorno de trabajo es una estructura conceptual y tecnológica de asistencia definida, normalmente, con artefactos o módulos concretos de software, que puede servir de base para la organización y desarrollo de software. Típicamente, puede incluir soporte de programas, APIs, bibliotecas, y un lenguaje interpretado, entre otras herramientas, para así ayudar a desarrollar y unir los diferentes componentes de un proyecto.

Se dice que los framework son la base sobre la cual los desarrolladores crean programas para plataformas específicas. Estos están diseñados para disminuir la cantidad de problemas que enfrenta un programador de computadoras durante el desarrollo, otro de sus objetivos es el de unificar todos los componentes de un proyecto.

Los framework pueden tener funciones y objetos definidos o no definidos que el programador puede usar o sobrescribir para crear una aplicación. La tarea principal de un framework es proporcionar un código estandarizado que se pueda aplicar a una variedad de proyectos de aplicaciones, por lo que se puede decir que tienen un alcance más amplio e incluyen casi todo lo necesario para hacer una aplicación de usuario personalizada. 




    Cuadro comparativo de Framework            



Librería

Una biblioteca o librería es un conjunto de implementaciones funcionales, codificadas en un lenguaje de programación, que ofrece una interfaz bien definida para la funcionalidad que se invoca.


Una biblioteca suele centrarse en un ámbito estrecho. Proporciona un conjunto de funciones de ayuda, métodos, entre otros; a los que pueden llamar en un proyecto para lograr una funcionalidad específica. Básicamente es una colección de definiciones de clase que se escribe principalmente para promover la reutilización del código. No hay necesidad de empezar de cero cada vez, se pueden usar fácilmente escritos realizados por otros para ahorrar tiempo y energía.

Una biblioteca es un conjunto de elementos (funciones, clases, tipos predefinidos, constantes, variables globales, entre otros) que es posible utilizar en un programa para facilitar la implementación de ese programa. Además simplifica las funciones y expresiones y condensa muchas líneas de código en líneas individuales, palabras clave, etc. Este es un código escrito previamente, ya utilizado por otros desarrolladores, listo para que lo use y le haga la vida más fácil y su trabajo más rápido.






Cuadro comparativo de librerías 



jQuery
jQuery UI
Dojo Toolkit
React
Zepto
CreateJS
Año de publicación
2006
2007
2005
2013
2010
2012
Mantenimiento
JS Foundation
JS Foundation
Dojo Foundation
Facebook
Thomas Fuchs
gskinner.com
Licencia
MIT
MIT
BSD/AFL
MIT
MIT
MIT
Colaboradores en GitHub
270 aprox.
300 aprox.
100 aprox.
1.100 aprox.
180 aprox.
40 aprox.
Particularidades
Biblioteca más popular
Foco de atención en GUI
Foco de atención en aplicaciones web
DOM virtual
Minimalista
Integración en Adobe Animate



Comparación y diferencias entre un framework y las librerías  
 

Þ    Funcionalidad y compatibilidad

Un framework ya incluye todas las herramientas que se necesitan para resolver problemas comunes como validación de formularios, conexión a bases de datos, etc. Esta integración asegura que no se tendrán problemas de compatibilidad entre las distintas funcionalidades.

Se pueden incluir en un proyecto tantas librerías como se necesiten, pero debe asegurarse que ninguna interfiera con el código de la otra o se tendrán serios problemas.

Þ    Forma de trabajo

Un framework ya tiene definido la forma en que se debe desarrollar el proyecto, el código debe respetar las normas establecidas. Gracias a esto cualquier programador que sepa usar el framework podrá integrarse rápidamente a dicho proyecto. Si se busca control total sobre la estructura del proyecto, se puede optar por trabajar con librerías. El programador decide cual es la manera más conveniente de usarlas.

Þ    Inversión de control

Cuando se llama a una función o un método desde una biblioteca, se tiene el control. Pero en el otro caso, el framework llama al código y, por lo tanto, el control se invierte. En la mayoría de los casos, el framework solo proporciona el concepto. El trabajo de la aplicación es definir mejor la funcionalidad para los usuarios finales.

Por lo tanto, se dice que en el caso de las librerías, se accede al código de los programadores a través de la interfaz de programación de un software. Sin embargo, los frameworks llevan a cabo una inversión del control: el código se integra en estructuras fijas del framework y se visualiza cuando es requerido.



Cuadro comparativo de Framework y Librerías


Framework

Librerías

Crean pautas para el programa.

Son solicitadas por el programa.

Grandes

Pequeñas

Tienen todo lo necesario para construir todo un sistema

Un solo cometido

Hay que adaptarse a su forma de hacer las cosas

Libertad de usarlas como se quiera

Menor tiempo de desarrollo

Mayor tiempo de desarrollo

Proporciona un esqueleto donde los programadores definen el contenido de la aplicación de la operación.

Realiza una operación específica o bien definida.

El framework es quien esta al mando y el código debe encajarse en su estructura y normas.

El código es el que está al mando y utiliza las funciones de la librería cuando y como quiere.

Ayudan a centrarse en el desarrollo en lugar de los problemas.

Ayudan a los programadores a reutilizar el código escrito por otros.



En el siguiente video se explica un resumen del contenido descrito anteriormente:





¿Qué framework o librería aprender?

Ninguno es mejor que el otro, todo depende de las necesidades del proyecto. Estas son algunos de los frameworks y librerías de más demanda en el mercado.

Þ   Laravel: es un framework de PHP simple, potente y actualmente uno de los más populares. La ventaja de Laravel es su sencillez para aprenderlo, una sintaxis refinada, evita el "código espagueti" y permite la integración de librerías.

Þ  React.js: es una librería frontend para construir interfaces web, con ella están construidas las dos redes sociales más grandes: Facebook e Instagram. En su última encuesta Stack Overflow revelo que React.js es la tecnología más amada por los programadores y más buscada por las empresas.

También se encuentra la librería jQuery y el framewrk  Angular, las cuales se describen a continuación:


jQuery vs Angular





ÞjQuery: es la mas utilizada de todas las librerías JavaScript, esto se debe entre otras razones, a que posibilita la escritura de código jQuery en cualquier tipo de de navegador y que para ello existen numerosos plugins. La librería de código abierto está incluida en numerosos sistemas de gestión de contenidos como Wordpress, Drupal, o Joomla!. 

Ventajas
Inconvenientes
Asistencia de Ajax
En comparación con CSS puede ser muy lenta
Muy popular
Tiende al código espagueti
Biblioteca extensa
Se vuelve algo superflua con las nuevas funciones de JavaScript
Fácil de usar


Gran cantidad de plugins



Þ Angular: a menudo también llamado Angular 2, es el sucesor de AngularJS. Este framework de JavaScript está orientado principalmente al desarrollo de aplicaciones web de una sola página, aunque Google ha realizado cambios muy importantes en la segunda versión. La mayor diferencia es, en este sentido, que ya no se utiliza JavaScript para programar, sino TypeScript. Dado que el lenguaje de scripts de Microsoft se basa en JavaScript y es compatible con él, no se dan restricciones directas en el desarrollo de JS. Asimismo, Angular se adapta de tal manera que el desarrollo de aplicaciones en diversas plataformas (escritorio, móvil, tablet) no supone ningún problema. 

Ventajas
Inconvenientes
Comunidad muy amplia extensa
Hoy ya reemplazado por Angular
Forma parte del conjunto de sistemas MEAN Stack
Notables dificultades iniciales

28 comentarios:

  1. Hoy en día existe alguna clase de confusión entre los términos librería y framework, después de analizar toda la información expuesta, puedo concluir que una librería es algo a lo que llamamos y nos proporciona una respuesta. Mientras que el framework es el esqueleto que proporciona una arquitectura básica sobre el cual se construye una aplicación. O en otras palabras, cuando usamos una librería el programador es el que tiene el control del flujo del programa mientras que al hacer uso de un framework es éste el que impone dicho flujo.

    ResponderBorrar
  2. Conociendo bien los conceptos de cada uno es más sencillo poder distinguir sus diferencias. Entonces, podríamos concluir que un framework tiene un margen más amplio para resolver problemas y son más versátiles en cuanto a su utilización, ya que precisamente estos pueden tener varias librerías, mientras que por otra parte, las librerías cuentan con herramientas que solo sirven para determinadas ocasiones.

    ResponderBorrar
  3. Buenas Joselis, que criterios debería tener en cuenta como desarrollador, para implementar un framework o una librería en el desarrollo de una aplicación ?

    ResponderBorrar
    Respuestas
    1. Lo primero es tener una idea clara de lo que quieres hacer exactamente, partiendo de eso, considerar que lenguaje utilizarás, además de evaluar los beneficios y desventajas que presenta cada framework y librería, como por ejemplo, la seguridad, que te sean fácil de usar(debido a que la idea es que te brinden ayuda y no que acarreen problemas), que exista información sobre ellas, ya que te puede servir de ayuda a la hora de que se te presente un inconveniente. Existen muchos framework y librerías que sirven de ayuda, esa es su finalidad, solo hay que elegir la más apropiada para el proyecto que se tenga pensado.

      Borrar
  4. Desacuerdo con las definiciones presentes y las diferencia entre librerías vs framerwork ¿ en que tipo de proyectos utilizarías una librería y en cuales un Framerwork?

    ResponderBorrar
    Respuestas
    1. Un ejemplo puede ser que en caso de que sólo necesite generar la fecha para un programa; en ese caso utilizaría una librería; ya que es más pequeña y lo que requiero es algo sencillo, por lo que al utilizar una librería lo haría de forma rápida por así decir; y no tengo que estar instalando un framework que puede llevarme más tiempo, si lo que tengo que hacer es algo sencillo como dije. en cambio si lo que quiero hacer es mucho más complejo y debo trabajar en grupo, en ese caso utilizaría un framework; ya que todos los que participen se le hará fácil incorporarse y entender en lo que se está trabajando, ya que los framework son plantillas; y quien los utilice debe ajustarse a su forma de trabajo y reglas, la cual es igual para todos los que los utilicen.

      Borrar
    2. Pero en realidad todo depende de lo que se tenga pensado realizar, en base a ello vamos a decidir con cual trabajar.

      Borrar
  5. A grandes rasgos, una librería es código que usas para un determinado fin. Por ejemplo supongamos que trabajando en PHP necesito usar una base de datos y quiero hacerlo de manera fácil y sin complicarme con SQL. Hay una librería que se llama Eloquent que me permitirá hacer precisamente eso. Uso la librería y la adapto a mi forma de trabajar. Por otra parte, un framework es un conjunto de librerías y utilidades que se usan para obtener resultados de manera rápida. Por ejemplo Laravel, un framework de PHP, usa Eloquent y muchas más. Pero esta vez no puedes hacer las cosas de la manera que quieras, tienes que trabajar de la manera en que el framework funciona, tienes que crear controladores, rutas y modelos de la forma apropiada para que se ejecuten como está previsto. Pero lo haces en mucho menos tiempo.

    ResponderBorrar
  6. Uno de los mejores aportes al mundo del desarrollo de codigo han sido los frameworks y las librerias, usadas de forma correcta, estas herramientas pueden llegar a facilitar infinitamente el trabajo, de la misma manera, usarlas de manera incorrecta traera un sin fin de dolores de cabeza.

    ResponderBorrar
  7. Tenemos claro que un framework es una plantilla que nos permite ahorrar tiempo al momento de escribir parte del código de nuestro programa, mientras que las librerías son un conjunto de información que permiten la validación de ciertos métodos u operaciones, entonces mi pregunta es ¿Necesito alguna librería para poner en funcionamiento un framework?

    ResponderBorrar
    Respuestas
    1. No, un framework no necesariamente necesita de una librería, puede implementarse solo; aunque si puede trabajar con ellas, pero no es dependiente de ellas, como también puede hacer uso de APIs y herramientas de depuración, pero no es algo obligatorio, eso depende de tí, de como quieras trabajar y de que otros implementos quieras incluir, en lo que concierne a todo lo demás, debes apegarte a las reglas que ellos tienen y a su forma de trabajo.

      Borrar
  8. Podemos decir que ambos son útiles e importantes a la hora de programar, ya sea para obtener una respuesta o aceptación de una operación o para introducir líneas de códigos bases que permitirán también implementar objetos propios de ello o reescribirlos, de acuerdo sea la finalidad que le vayamos a dar. Sin duda son herramientas que debemos saber agregar e implementar en nuestros proyectos.

    ResponderBorrar
  9. Teniendo en cuenta los beneficios de estos, ¿Que Framework recomendarían usar para el desarrollo web y aplicaciones de escritorio?

    ResponderBorrar
    Respuestas
    1. Existen infinidades de framework, para el desarrollo web los más recomendados o populares por el momento son Laravel, Django, Meteor y Angular, ya que tienen bastante información, esto según lo que leí mediante mi investigación, son muy bueno, ofrecen muchas ventajas, pero también tienen ciertos inconvenientes, y referente a los que se utilizan para aplicaciones de escritorio se encuentran Electron, las aplicaciones de escritorio Electron se comportan como aplicaciones web, pero pueden leer y escribir datos en el filesystem del ordenador, también se encuentran NW.js anteriormente conocido como node-webkit; además puedes utilizar también meteor Meteor, el cual se anuncia como "la forma más rápida de crear aplicaciones JavaScript", una "plataforma de código abierto para web, móvil y escritorio". Este framework multiplataforma escrito en Node.js puede utilizarse para crear aplicaciones web, móviles y de escritorio. Pero en ocasiones no te puedes dejar llevar por recomendaciones, todo depende sus características, de lo que te brinde, de con cual te sientas más cómodo a la hora de trabajar y de los conocimientos que tengas, lo que para otros puede parecer fácil; para ti puede resultar difícil y así sucesivamente.

      Borrar
  10. Con mas seguridad se puede afirmar que el uso de los Frameworks y las librerías se ha vuelto casi indispensables para los programadores. La versatilidad de estas herramientas ha causado un gran impacto en el mundo de la programación por la facilidad de uso y las efectividad que prestan, es por ello que se recomienda siempre su aplicación a la hora de desarrollar un software.

    ResponderBorrar
  11. ¿Por qué los programadores dudan entre elegir un framework o una librería? En el contenido de esta entrada pude apreciar sus diferencias pero, ¿existe alguna similitud entre ellos que dé base a la duda?

    ResponderBorrar
    Respuestas
    1. Eso puede deberse a que en ocasiones se piensa que un framework es muy complejo de utilizar, en comparación con las librerías y por lo tanto que no es necesario utilizar un framework, cuando pueden hacer el mismo trabajo utilizando librerías, pero esto no es cierto en todas las ocasiones, ya que si lo que se necesita realizar es muy complejo, entonces al utilizar librerías me llevará más tiempo de lo necesario, cuando en realidad puedo realizarlo en menor tiempo y mucho mejor utilizando framework, por otro lado se tiene que quizás el programador no sepa como usar un framework y obviamente se irán por la opción de trabajar con lo que ya conocen. en relación a las similitudes, ambos son de vital importancia en el desarrollo de software.

      Borrar
  12. Entendiendo el concepto y funcionamiento de estas herramientas podría decir que son esenciales para los desarrolladores ya que es posible encontrarse con diversos problemas que puedan resultar comunes, siendo allí donde implementaríamos estas herramientas, porque lo más probable es que ya tengan una respuesta establecida para solucionar un problema en específico.

    ResponderBorrar
  13. ¿Para nuestros proyectos en las areas de grado de ciencia en la computación, cual seria su recomendación y por que?

    ResponderBorrar
    Respuestas
    1. En realidad todo depende de lo que se trate el proyecto de cada uno, en mi caso, como lo que quiero es una aplicación web, entonces me iría por el uso de los framework para desarrollo web, considerando lo que caracteriza a cada uno y de cual me agrade más o con cual creo que me pueda sentir más cómoda trabajar y cual me pueda dar resultados óptimos en menor tiempo, en caso de los que quieren aplicaciones de escritorio, entonces deben elegir entre los que se aplican para ello.

      Borrar

  14. Cuando explicaste jQuery dijiste que uno de sus inconveniente es que tiende al código espagueti y en el framework Laravel hiciste mención de que este lo evita ¿podrias decir a que se refiere este codigo?.

    ResponderBorrar
    Respuestas
    1. El código espagueti es un término despectivo para los programas que tienen una estructura de control de flujo compleja e incomprensible. Su nombre deriva del hecho que este tipo de código parece asemejarse a un plato de espaguetis, es decir, un montón de hilos intrincados y anudados. Tradicionalmente suele asociarse este estilo de programación con lenguajes básicos y antiguos, donde el flujo de el flujo se controlaba mediante sentencias de control muy primitivas como Goto y utilizando números de línea. Ahora bien, el GOTO es una instrucción que pertenece a los primeros lenguajes de programación como el famoso BASIC y su propósito es transferir el control a un punto determinado del código donde debe continuar la ejecución. Uno de los síntomas que se debe observar, es cuando se comienza a tener código espagueti orientado a objeto, es ese tipo de código que puede estar en un controlador y tiene muchas condiciones y ciclos operando los resultados de un objeto, sin mencionar que el código se vuelve legible a simple vista.

      Borrar
  15. ¿Es posible utilizar librerías dentro de un framework?

    ResponderBorrar
    Respuestas
    1. Sí, es completamente posible la utilización de librerías dentro de un framework. Usar un framework no te impide utilizar librerías, es mas,un ejemplo es que puedes utilizar React(es considerado como framework, pero en realidad es una librería) dentro de Angular como librería para renderizar las vistas. En múltiples ocasiones, usando un framework utilizarás librerías externas pero si no están adaptadas a tu framework, deberás de integrarlas tu y para ello debes de conocer muy bien las utilidades de tu framework por un lado, y por otro lidiar con las posibles incompatibilidades que tenga la librería en cuestión, que pueden ser muchas o puede ser ninguna. en conclusin, puedes utilizar librerías dentro de un framework siempre y cuando te funcione.

      Borrar
  16. Ambas son herramientas útiles para un programador a la hora de realizar un nuevo proyecto, una son conjunto de implementos funcionales y la otra son xunjuntos de elementos que se usan en un programa para facilitar su implementación. Claramente observamos que uno no es igual que el otro, por ende depende netamente de la necesidad del proyecto.

    ResponderBorrar
  17. Los proyectos front end son muy conocidos actualmente, ¿puedes mencionar una de las tantas que se utilizan para estos?

    ResponderBorrar
    Respuestas
    1. Suponiendo que te refieres a las librerías que se pueden utilizar para estos. En lo que se refiere a las librerías que se pueden utilizar a la hora de crear un proyecto Front End, como opción tendríamos a React (y muchas otras), que es una librería desarrollada por Facebook que se encarga de renderizar las vistas de aplicación. A partir de eso, utilizaríamos otras librerías a nuestro gusto y necesidades para complementarla para realizar peticiones http, manejar el estado de la aplicación, utilizar animaciones, etc. Es importante ser conscientes que de esta manera el programador es el que controla que quiere usar, cuando quiere usarlo y como quiere usarlo en función de las necesidades del proyecto. La esencia de este enfoque es utilizar pequeñas librerías que resuelvan problemas concretos y orientar tu proyecto a módulos independientes que permitan escalar tu aplicación.

      Borrar
  18. Los framework son la base sólida y principal del programa, donde vaciaremos y completaremos con códigos. Pueden estar constituidos por varias librerías, estas últimas hacen referencia a una función en específico, el cual son llamadas por dichos códigos. Por otro lado, se pueden describir las librerías como accesorios importantes y puntuales que se requieren para la culminación del programa. Ambas son importantes pero cada una tiene sus condiciones de operación y como se pueden aplicar según sea el caso correspondiente.

    ResponderBorrar