Uno de los últimos hitos en el mundo del desarrollo de software es la nueva dimensión que ha adquirido JavaScript. Antes, todo el desarrollo en este lenguaje de programación venía del lado del navegador, centrado casi en exclusiva en el diseño del front-end de proyectos web. Pero hoy en día ya no es así. Los desarrolladores aplican sus ventajas también a servidores y bases de datos.
¿Y por qué este aspecto es tan revolucionario? Por una sencilla razón. Ahora, un desarrollador que sepa JavaScript puede programar una aplicación web desde cero y hasta el final solo con sus conocimientos en esta sintaxis, sin limitarse únicamente a los aspectos de desarrollo y diseño del front-end. Es un ejemplo perfecto del mito del desarrollador full-stack o rock-star, perfil técnico por el que un único desarrollador se puede encargar de todo el desarrollo web.
Un profesional que domine JavaScript puede poner en práctica el desarrollo MEAN, siglas que aluden al cuarteto mágico para la creación de aplicaciones web: MongoDB (servicio de gestión de bases de datos), AngularJS (marco de desarrollo de front-end), Node.js (entorno de desarrollo en la capa del servidor) y Express (framework para el desarrollo de back-end). Un todo en uno con JavaScript.
Una simple búsqueda en Google Trends muestra cómo las tecnologías que forman este paquete de desarrollo tienen cada vez más popularidad en la comunidad:
Características del cuarteto MEAN
1.- MongoDB
MongoDB es una de las bases de datos NoSQL más utilizadas del mercado. En concreto es un sistema de gestión de bases de datos multiplataforma orientado a documentos (conjunto de registros o de datos) y de esquema totalmente libre (no debe estar predefinido). Eso quiere decir que cada documento (información sobre productos o clientes, por ejemplo) puede tener atributos distintos al resto.
Algunas de sus características técnicas más importantes son:
– Almacena datos estructurados, semiestructurados y no estructurados.
– Sistema de gestión de base de datos preparado para ofrecer escalabilidad, rendimiento y gran disponibilidad de grandes volúmenes de datos.
– Ágil tanto en procesos de lectura como escritura, bajo un protocolo de computación en memoria. Esto permite que cualquier empresa pueda crecer rápido en el número de aplicaciones y proyectos sin que eso suponga un aumento del tiempo de desarrollo y por tanto un crecimiento del coste.
– Tiene un sistema de consulta muy sencillo, basado en JavaScript (concretamente en documentos JSON), con todas las ventajas de los sistemas de bases de datos relacionales pero con mejor rendimiento.
– Dispone de replicación nativa y tolerancia a fallos, elemento clave si el proyecto exige unos parámetros elevados de fiabilidad y seguridad.
– Existen drivers en la mayoría de lenguajes de programación: C#, C, C++, PHP, Python, Ruby, Java, Perl…
– Funciona en sistemas operativos Windows, Mac OS X y Linux.
– Es de código abierto, bajo una licencia GNU AGPL v.3.0.
2.- AngularJS:
AngularJS es un framework de JavaScript de código abierto y totalmente libre, que permite el desarrollo de aplicaciones web en el lado del cliente y utiliza un patrón Modelo-Vista-Controlador (MVC), aunque no lo hace de una forma tradicional: más bien es un patrón de desarrollo del tipo Modelo-Vista-Modelo de Vista.
Detrás de su lanzamiento y mantenimiento se encuentra Google, por lo que es una solución bastante sólida para la comunidad. Su objetivo es optimizar tanto el desarrollo como el testeo de las pruebas en el proceso de diseño.
Este framework está diseñado fundamentalmente para el desarrollo de aplicaciones web de una sola página (SPAs), es decir, el usuario navega por las diferentes vistas de la app sin que exista una navegación tradicional por URLs. Esto mejora mucho la experiencia de usuario en dos sentidos: los tiempos de espera y latencia en la navegación se reducen. Las aplicaciones son más rápidas y fluidas.
Las características fundamentales de AngularJS son:
– Sistema bidireccional de data-binding. El Modelo y la Vista siempre se actualizan de forma sincronizada con cualquier cambio en los datos. Esto tiene mucho sentido para un desarrollador porque le evita tener que escribir código de forma repetitiva. Cualquier cambio en el DOM modifica el Modelo y cualquier modificación en el Modelo transforma el DOM. Que esto sea automático es un alivio cuando una aplicación crece en volumen.
– Tiene patrón de Inyección de Dependencias, lo que permite la creación de objetos de una forma más útil y sencilla para los programadores. Este patrón permite la separación del código por responsabilidades y la creación de objetos en una estructura independiente del resto de objetos.
– Cualquier aplicación desarrollada en AngularJS es compatible con varios navegadores a la vez. El JavaScript se adapta a cada uno de ellos.
3.- Node.js
Node.js es un intérprete JavaScript por el lado del servidor. Su objetivo fundamental es que un programador sea capaz de desarrollar una aplicación con altos niveles de escalabilidad en una única máquina, aunque las peticiones de usuarios y clientes no dejen de aumentar con el tiempo. Si una empresa lanza una app que en un periodo de dos años crece un 100% su número de usuarios y clientes, lo lógico es que eso lleve asociado un crecimiento proporcional en el número de servidores. Más clientes, más coste. Node.js rompe esa ecuación.
En el funcionamiento tradicional, cada nueva conexión con el servidor va asociada al consumo de 2 MB de memoria. En un sistema habitual de 8 GB de memoria RAM, el límite para esa aplicación estaría en las 4.000 conexiones simultáneas de usuarios. Ese escenario con Node.js cambia por completo. Cada máquina podría llegar a soportar por encima del millón de conexiones al mismo tiempo.
¿De dónde sale Node.js? Google utiliza el motor V8 de JavaScript para su navegador Chrome. Para ello, el buscador desarrolló un intérprete JavaScript que cualquiera puede descargar e integrar en una aplicación. Node.js usa ese intérprete con un propósito totalmente distinto: utilizarlo por el lado del servidor.
Algunas de sus características fundamentales:
– Programación asincrónica.
– Programación orientada a eventos.
– Admite la integración de módulos de terceros que pueden extender las funcionalidades de Node.js en el desarrollo de aplicaciones web.
4.- Express:
Express es un framework en el lado del servidor para el desarrollo de aplicaciones web con Node.js. Está inspirado en Sinatra. Es un marco de desarrollo rápido, flexible y con una gran comunidad detrás, lo cual siempre es importante por el volumen de documentación existente para el desarrollo de proyectos.
Algunas de sus características son:
– Usa Jade como framework base, pero el desarrollador puede incorporar jQuery o Backbone para aumentar las funcionalidades en el desarrollo.
– Ofrece Router de URL.
– Creación accesible de APIs.
Síguenos en @BBVAAPIMarket