Al comenzar en el mundo de la programación, descubrimos HTML, CSS, PHP, JavaScript ... Pero, también escuchamos hablar de Symfony, Spring, Laravel, Angular... Estos no son lenguajes de programación, sino frameworks. ¡En este artículo, descubriremos lo que esto significa!
¿Cuál es la definición de framework?
Literalmente, significa «marco de trabajo». Se trata de un conjunto de herramientas sofisticadas que hacen posible que los desarrolladores sean más eficientes en el diseño web, entre otras cosas. Ofrece una arquitectura y componentes de software listos para usar y reutilizables. De aquí en adelante para hacer referencia a los frameworks también utilizaremos la expresión marcos de trabajo.
Podríamos comparar un framework con una fábrica de automóviles. El automóvil sería el producto final y el framework sería la fábrica. En esa fábrica, ya tenemos todo lo que necesitamos en stock: robots, estaciones de trabajo, componentes de los automóviles (como volantes o ruedas), etc. Entre los componentes, buscaremos aquellos que necesitemos para reutilizarlos.
Una vez que se ha creado este boceto de aplicación o interfaz, ya otros desarrolladores no necesitan reinventar la rueda cada vez que comiencen un nuevo proyecto. En particular, podemos profundizar en el concepto DRY: Don't Repeat Yourself, en español «No te repitas». DRY es una filosofía de programación en informática para evitar la redundancia de código dentro de una aplicación y facilitar así su mantenimiento, pruebas, depuración y actualizaciones.
Los marcos de trabajo normalmente son diseñados por una comunidad de desarrolladores. Funcionan utilizando el lenguaje de programación y permiten el desarrollo de todo tipo de medios: aplicaciones móviles, software ofimático, plataformas web, videojuegos, etc. Pero también es posible crear su propio framework.
Los marcos de trabajo cuentan con diferentes partes. Podemos citar, por ejemplo, las herramientas de autenticación, la gestión de base de datos, y la visualización o la interacción del usuario.
Hay que tener en cuenta que satisfacen una necesidad específica. Y para elegir el que más se adapte a ti, resulta imprescindible definir de manera efectiva nuestras necesidades con antelación.
¿Por qué utilizarlos?
¿Cuáles son sus ventajas?
Ahorrar tiempo
¡Te permiten ahorrar tiempo! De hecho, evitan que el programador tenga que desarrollar todo, es decir, reescribir o reinventar cada línea de código (concepto DRY). Gracias a los marcos de trabajo, los desarrolladores pueden concentrarse en lograr características específicas para su proyecto en lugar de dedicar tiempo a cosas que se repiten en cada proyecto, como la arquitectura, la seguridad básica de aplicaciones, etc.
Tener un ambiente de trabajo claro y organizado
Proporcionan una jerarquía de archivos y carpetas optimizadas. Gracias a esta diferenciación y clasificación de archivos, la interfaz es más clara y su uso más simple, para quienes saben cómo usarlo. Si se respetan las pautas del marco de trabajo, obtenemos una estructura y una unidad acorde con el código con el objetivo de mejorar su calidad.
Ser más eficiente y optimizar el trabajo en equipo
Los frameworks de desarrollo proporcionan varias arquitecturas formalizadas de acuerdo con las necesidades para las que se utiliza. Se facilita así el desarrollo en equipo y la distribución de tareas, ya que cada miembro tiene su «zona» de trabajo.
Además, cuando un desarrollador empieza a trabajar en un equipo que utiliza un marco de trabajo ya establecido y que ya controla, lo gestionará fácil y rápidamente. Podríamos comparar esto con un vehículo, la dificultad aquí sería la de aprender a conducir, pero una vez hecho, pasar de un vehículo a otro es «pan comido». Lo mismo ocurre con el framework, una vez lo sabes manipular, el paso de una aplicación basada en él la otra se simplifica, puesto que la estructura permanece sin cambios.
Garantizar un mantenimiento y desarrollo óptimos
Los frameworks, desarrollados por una comunidad de desarrolladores o por un organismo privado, cuentan con un mantenimiento y desarrollo adecuados. Además de disponer de actualizaciones con frecuencia.
Al utilizar esta herramienta, ya no es necesario preocuparse por los últimos estándares web, nuevas compatibilidades entre servicios, etc. La comunidad se encarga de «todo» y actualiza la herramienta. El desarrollador, por tanto, se beneficia de estas actualizaciones, lo mismo ocurre con el equipo de desarrollo web, que puede así dedicar el tiempo ahorrado a la búsqueda de valor añadido y al desarrollo del proyecto en sí.
Aumentar y optimizar la seguridad
La mayoría de las veces cubren y ofrecen protección contra gran parte de los fallos de seguridad encontrados al diseñar una aplicación.
No obstante, esto no impide que el desarrollador intervenga y optimice la seguridad y el rendimiento de su aplicación sobrecargando las funcionalidades preestablecidas, si fuera necesario.
Una comunidad de usuarios «infinita»
Es muy raro que solo una persona utilice un marco de trabajo específico. Si te surge un problema, error o tienes preguntas específicas, la comunidad de usuarios está para ayudarte. Con una búsqueda eficiente en Stack Overflow (entre otros), obtendrás la solución fácilmente.
Para que te hagas una idea, Symfony o React son marcos de trabajos utilizados por más de un millón de programadores, todas estas personas podrán ayudarte cuando lo necesites.
¿Cuáles son las desventajas?
Diferentes curvas de aprendizaje
¡Dominar un framework lleva su tiempo y no es nada fácil! No obstante, cada uno de ellos tiene su propia curva de aprendizaje : algunos permiten al programador desarrollar habilidades rápidamente mientras que otros requieren un tiempo de aprendizaje más prolongado.
Conocimiento de los conceptos generales requeridos
Para comprender e interpretar correctamente los principios básicos y tomar decisiones técnicas acertadas, es fundamental dominar al menos los conceptos generales de funcionamiento interno, comprender las buenas prácticas y, por supuesto, tener un conocimiento adecuado del lenguaje y del concepto de programación utilizados.
Límites en funciones complejas
Como indica su nombre y hemos comentado con anterioridad, un framework es un marco de trabajo. Por lo tanto, presenta ciertos límites de uso, por ejemplo: a menudo nos impone sus propias elecciones en la arquitectura de nuestro código. Cuando un desarrollador web desea acceder a funciones del lenguaje que no son gestionadas por el framework, pueden surgir problemas. El consejo que le podemos dar a un desarrollador que quiera utilizar esta herramienta es que se deje guiar por la interfaz.
¡Son demasiado tentadores!
Da la impresión de que todo es más fácil gracias a ellos, ¡pero nada más lejos de la realidad! Un framework impone una arquitectura pesada y compleja a las aplicaciones, cuando a veces no la necesitan.
¡Satisfacen necesidades específicas y avanzadas! Es inútil usar un Ferrari para ir a comprar el pan, ya que hay más riesgo de dañarlo que de cualquier otra cosa. Lo mismo ocurre con los frameworks: si quieres crear un sitio estático con pocas páginas, complican la tarea más de lo que te la simplifica. En ese caso, ¡los lenguajes básicos de HTML / CSS y JS serán suficientes!
Ten en cuenta una cosa: antes de embarcarte en el desarrollo a través de un marco de trabajo, es necesario que definas de manera efectiva tu necesidad con el fin de establecer la necesidad real del uso de un marco de trabajo específico.
¿Qué tipos de frameworks existen?
A continuación, mostramos algunos ejemplos:
En primer lugar, es importante saber que no compiten entre sí. Recuerda lo que dijimos anteriormente: cada uno de ellos responde a una necesidad específica.
En PHP destacan dos: Symfony y Laravel
Symfony, lanzado en 2005 por Fabien Potencier y actualmente mantenido por SensioLabs, es un framework de renombre mundial, aunque utilizado principalmente por una comunidad francófona. Echa un vistazo a las muchas aplicaciones que utilizan o se basan en el proyecto Symfony.
Laravel, lanzado en 2011 por Taylor Otwell, es uno de los frameworks más utilizados en el mundo. Como anécdota: algunas partes de Laravel están basadas en Symfony.
Si deseas obtener más información sobre los frameworks PHP, ¡haz clic aquí!
En JS: NodeJs, VueJs, Angular y React
Podemos hacer especial mención a NodeJs, Angular o React; ¡pero espera a leer hasta el final!
- NodeJs, con alto rendimiento y utilizable en muchas situaciones, ha posibilitado un gran avance en el mundo de JavaScript. Fundado en 2009 por Ryan Dahl, rompió las barreras entre el front-end y el back-end. Este lenguaje hizo posible la creación de aplicaciones back-end en JavaScript. En particular, NodeJs ayuda a las empresas a elaborar aplicaciones escalables y capaces de manejar conexiones simultáneas a alta velocidad. Por ejemplo, empresas como Google o PayPal utilizan NodeJ en algunas partes de sus aplicaciones.
- VueJs, creado por Evan You en 2014, es un marco de trabajo progresivo basado en JavaScript cuyo enfoque está orientado a componentes. Generalmente se usa para la parte front-end. Tiene una curva de aprendizaje progresiva, lo que hace que sea «fácil» de manejar. Su ligero peso (30 kb) y muy buen rendimiento lo convierten en uno de los frameworks JavaScript más rápidos. Podemos citar algunas páginas web que hacen uso de VueJs: Adobe, Alibaba e incluso Nintendo.
- Angular es el marco front-end oficial de Google y desarrollado por esta compañía. Nacido en 2016, ofrece soluciones listas para usar y permite crear componentes en JavaScript. Se trata de un muy buen marco de trabajo para desarrollar aplicaciones web altamente interactivas. Orientado a componentes, aporta una base de código sólida. No obstante, presenta cierta complejidad en su curva de aprendizaje, y el desarrollo de una aplicación en Angular implica necesariamente su uso de principio a fin. No es posible cambiar el marco de trabajo entretanto. ¡Asimismo tendrás que pasar por TypeScript para usar Angular!
- React no es un marco de trabajo, esta es la razón por la que te invitábamos a leer hasta el final. En su lugar, se denomina «biblioteca front-end». Creada en 2013 y desarrollada por Facebook, cuenta con una gran comunidad Open Source (que se basa en métodos de desarrollos colaborativos y descentralizados). A pesar de su curva de aprendizaje relativamente rápida, su uso a largo plazo se vuelve un poco más complejo. Al tratarse de una biblioteca, React proporciona componentes reutilizables, pero se aleja de la arquitectura del software.
¡No se consigue nada sin dar nada a cambio! El desarrollo es emocionante y accesible para todos, y algunos marcos de trabajo son muy fáciles de usar al principio, pero se vuelven complejos a medida que la aplicación crece. Por el contrario, otros requieren un aprendizaje más prolongado al comienzo, pero las facilidades aparecen una vez manejas la aplicación. Es una elección que debe hacerse en función del proyecto y de tus métodos.
De cualquier modo, el uso de un framework requiere conocer el lenguaje en el que este está desarrollado. Para poder usar Symfony, Laravel y muchos otros, necesitas estar cómodo con PHP y OOP (Programación Orientada a Objetos). Con respecto a React, Angular y NodeJS, el conocimiento de JavaScript es obligatorio.
Por último, existen muchos otros marcos de desarrollo web, ¡suficientes para satisfacer todas tus ganas de aprender!
Si estás interesado en el desarrollo web, descubre la profesión de desarrollador en nuestra página. Y si tienes alguna pregunta, no dudes en ponerte en contacto conmigo a través de mi cuenta de LinkedIn.
