Si hablamos de Javascript pero tenemos que hablar de los inicios antes.
En un comienzo, las páginas web se conformaban por archivos de texto que eran principalmente contenido y enlaces, lo cual era suficiente para la época, ya que a inicio de los 90’s la mayoría de los usuarios se conectaban a Internet con módems que tenían como capacidad máxima de conexión 28.8 kbps.
Pero la web fue evolucionando, lo que implicó por ejemplo, tener que separar HTML del diseño a través de CSS. Pero faltaba algo más y era dotar a los sitios web de interactividad. Es por ello que en 1995, se creó LiveScript, que posteriormente fue llamado JavaScript para hacer competencia a Java, lenguaje que era muy popular, aunque ambos a pesar de tener una sintaxis similar, son muy diferentes. Fue una estrategia de marketing para que desarrolladores de Java entre otros, quisieran aprender JavaScript.
En 1997 se produjo un movimiento para la estandarización del lenguaje, que acabo en la creación de ECMAScript, lo que ha permitido homogenizar JavaScript, la que continúa evolucionando hasta la fecha. La especificación del estándar más revolucionaria ha sido ECMAScript 6 o simplemente ES6, lo que ha permitido incorporar la orientación a objetos, añadiendo clases y objetos a JavaScript.
Se hablaba de Client-Side o del lado del cliente en la arquitectura cliente-servidor, por lo que los navegadores que incluyen un motor de JavaScript, permiten ejecutar código directamente en ellos. Aunque después con la llegada de NodeJS, es posible ejecutar código JavaScript en el lado del servidor.
JavaScript tiene algunas limitantes. Por ejemplo, no se puede conocer la estructura de datos del lado del servidor ni ser utilizado para aplicaciones de red por sí solo. La limitante más importante es que JavaScript no tiene capacidad multihilo o de correr múltiples procesos de forma simultánea. JavaScript puede ejecutar solo un proceso secuencial a la vez, lo que se conoce como proceso síncrono. Aunque JavaScript no es multitarea, puede delegar ciertas funciones a otros procesos. Este modelo de concurrencia se llama “Event Loop”. Si hay algún procedimiento o función que se ejecute en base al tiempo o se ejecute fuera del hilo principal, cae a un stack de funciones o pila de ejecución llamada callstack, efectuando la llamada a las funciones según el orden de ejecución del programa. Entonces cuando el stack está vacío o termina, continúa con la siguiente función que esté esperando ser invocada.
Inicialmente JavaScript permite desarrollar proyectos de menor cantidad de líneas de código, no fue diseñado para crear aplicaciones de mediana o de gran escala. Pero con el tiempo, al ver la necesidad de hacer manipulaciones en el HTML antes de enviar la información al servidor, surgieron frameworks y librerías como Angular, React y Vue.
Angular
Fue creado por Google, es un Framework que implementa el modelo MVC (Modelo-Vista-Controlador). Utiliza Typescript para potenciar a JavaScript. Usa HTML y directivas para insertar la lógica a través de templates. Trabaja con “Two way data binding”, lo que significa que si cambian los datos en la interfaz, cambian en el modelo (estado).
React
Fue creado por Facebook en el año 2013 y a diferencia de Angular que es un framework, React es una librería, solo es la vista en el modelo MVC. Usa como base JavaScript. Utiliza un componente llamado JSX (JavaScript eXtension) que permite juntar la lógica y el marcado en el mismo componente. React junta HTML, CSS y JavaScript en un solo paquete llamado componente para poder reutilizar el código en diferentes lugares de la aplicación. Su mecanismo es “One way data binding”, lo que significa que si cambian los datos en el estado, cambian en la interfaz pero no al revés.
Vue
Es un framework progresivo que tiene soporte por una comunidad de desarrolladores. Utiliza JavaScript y tiene una curva de aprendizaje muy rápida. Soporta templates y JSX. Al igual que Angular, trabaja con “Two way data binding”.
¿Cuál es la diferencia entre un framework y una librería?
Un framework es un conjunto de herramientas que trabajan en un proyecto completo bajo ciertas reglas. Tiene funcionalidades integradas para no requerir librerías externas. La compatibilidad de sus funciones está asegurada. El framework define la forma en la que se debe desarrollar el proyecto.
Una librería es una herramienta con una utilidad específica. Se puede usar las librerías que se requieran en la estructura que se necesite. Se debe controlar la compatibilidad de cada librería con las demás y se pueden usar varias librerías según nuestras propias necesidades.
De momento hemos hablado del desarrollo de programas por el lado del cliente (Frontend) pero JavaScript también permite el desarrollo de aplicaciones por el lado del servidor (Backend), aquí es donde entra en juego NodeJS.
NodeJS es un entorno JavaScript de lado de servidor creado en el año 2009, que utiliza un modelo asíncrono, con entrada y salida de datos E/S en una arquitectura orientada a eventos y se basa en el motor V8 de Google, uno de los más potentes en la actualidad. Soporta protocolos TCP, DNS y HTTP. Uno de sus puntos fuertes es su capacidad de mantener muchas conexiones abiertas y esperando, manejando peticiones de forma simultánea.
¿Qué puedo hacer con NodeJS?
– Uso de sockets para una comunicación real Cliente-Servidor
– Manejo de archivos en FileSystem
– Servidores locales y remotos con información en tiempo real
– Conexiones a bases de datos
– Creación de servicios REST en segundos
¿Y qué ocurre con el uso de JavaScript en aplicaciones para dispositivos móviles?
Si utilizas Angular para el desarrollo de aplicaciones, la recomendación es usar IONIC ya que tiene capacidad de despliegue tanto en IOS como en Android gracias a Apache Cordova. Por otro lado si tienes conocimiento en React, puedes usar React Native para el desarrollo de aplicaciones que corran de forma nativa en el dispositivo móvil, independiente de su sistema operativo. Para desarrollar aplicaciones con React Native, es recomendable tener conocimiento en Redux ya que permite el manejo de datos a nivel global.
¿Cuál es el futuro de JavaScript?
Con el paso del tiempo, ha demostrado ser una tecnología robusta que se ha ido moldeando con el paso de los años, incorporando distintas librerías y siendo utilizada por diversos frameworks que permiten el desarrollo de aplicaciones complejas, tanto para aplicaciones de escritorio como para dispositivos móviles. El hecho de que exista un organismo como ECMAScript para su estandarización, permite que sea usado en diferentes navegadores e incluso en distintos sistemas operativos.
Es una tecnología que llegó para quedarse y que sigue en una mejora continua. Conociendo cual es el problema que deseas solucionar, JavaScript es una potente herramienta que sin lugar a dudas será de gran ayuda para desarrollar proyectos a gran escala.