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
|
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.
ResponderBorrarConociendo 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.
ResponderBorrarBuenas 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 ?
ResponderBorrarLo 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.
BorrarDesacuerdo 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?
ResponderBorrarUn 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.
BorrarPero en realidad todo depende de lo que se tenga pensado realizar, en base a ello vamos a decidir con cual trabajar.
BorrarA 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.
ResponderBorrarUno 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.
ResponderBorrarTenemos 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?
ResponderBorrarNo, 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.
BorrarPodemos 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.
ResponderBorrarTeniendo en cuenta los beneficios de estos, ¿Que Framework recomendarían usar para el desarrollo web y aplicaciones de escritorio?
ResponderBorrarExisten 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.
BorrarCon 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¿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?
ResponderBorrarEso 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.
BorrarEntendiendo 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¿Para nuestros proyectos en las areas de grado de ciencia en la computación, cual seria su recomendación y por que?
ResponderBorrarEn 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
ResponderBorrarCuando 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?.
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¿Es posible utilizar librerías dentro de un framework?
ResponderBorrarSí, 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.
BorrarAmbas 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.
ResponderBorrarLos proyectos front end son muy conocidos actualmente, ¿puedes mencionar una de las tantas que se utilizan para estos?
ResponderBorrarSuponiendo 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.
BorrarLos 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