Buena parte de los programadores web experimentados, desde hace ya algunos años han venido asumiendo como una norma la utilización en combinación del servidor web Apche y el lenguaje PHP para la capa de programación del lado del servidor y el gestor de bases de datos MySQL en lo que respecta a la capa de almacenamiento. Muestra de ello es que las distribuciones de servidor local más populares como WAMP Server, XAMPP y LAMP, así como los CMS más utilizados como lo son WordPress, Joomla, Drupal, PrestaShop y Magento, fundan sus bases sobre la combinación Apache-PHP-MySQL.
Esto, aun cuando no es para nada obligatorio emplear tecnologías que giren en torno a PHP, pues existen lenguajes alternativos también bastante populares e igualmente eficaces, incluso superiores según la óptica desde la que se les valore, entre las opciones existentes se encuentran Python, Perl, Ruby, Java y ASP .NET (famework que utiliza C# y Visual Basic .NET), entre otros. Por ejemplo en el caso de emplear ASP .NET, se reemplazaría el servidor Apache por IIS y el gestor de bases de datos por SQL Server.
JavaScript del lado del cliente (front-end)
Por su parte, el lenguaje de programación JavaScript es un completo estándar en la capa de programación del lado del cliente, debido a que es interpretado directamente por los principales navegadores web, por lo que no requiere de ningún tipo de plugin adicional para su correcto funcionamiento, a diferencia por ejemplo del lenguaje Java que para poder ejecutar su código, amerita la instalación de un intérprete conocido como Maquina Virtual Java (Java Virtual Machine), sin la cual no se podría visualizar ningún applet Java presente en la página.
Por lo tanto en el desarrollo de cualquier sitio o aplicación web, intervienen lenguajes y herramientas de desarrollo muy diversas, empezando en el lado del cliente por el lenguaje de marcado de hipertexto HTML para la interfaz en conjunto con el especificador de hojas de estilo CSS y el lenguaje de programación JavaScript, el cual se encarga de otorgar dinamismo e interactividad de forma acelerada a la página. Por otra parte del lado del servidor se utiliza por ejemplo la anteriormente mencionada combinación Apache-PHP-MySQL o un conjunto de software equivalente. En definitiva son tecnologías muy heterogéneas de un lado y del otro, lo cual complica en gran medida el desarrollo de pila completa (Full-Stack).
JavaScript del lado del servidor (back-end)
Sin embargo, en los últimos años han surgido tecnologías que permiten la compilación del código JavaScript a lenguaje máquina en lugar de su interpretación y transformación por parte del navegador en una página web HTML, permitiendo así su implementación del lado del servidor en remplazo de los lenguajes comúnmente utilizados para este propósito, como los que mencione anteriormente.
Actualmente el marco de trabajo (framework) más exitoso, capaz de implementar JavaScript del lado del servidor, es sin lugar a dudas Node.js el cual emplea un modelo asíncrono y dirigido por eventos que proporciona capacidades muy ágiles y potentes en cuanto a la entrada y salida de datos (I/O), además es adecuado para sustentar grandes números de conexiones simultaneas abiertas y en espera, característica en la cual es muy superior a otros sistemas empleados para proporcionar servicios web. Su principal ventaja es la rapidez y el hecho de homogeneizar la utilización de un mismo lenguaje (JavaScript) tanto del lado del cliente como del lado del servidor, lo cual entre otras ventajas, permite la reutilización de código entre las diferentes capas del desarrollo.
Desarrollo Full Stack basado en JavaScript (MEAN)
Al emplear el entorno Node.js para la programación a nivel de servidor web, se da un cambio radical en el enfoque con el cual se procesa la información que interviene en el sistema, de tal modo que ha surgido un conjunto de tecnologías interrelacionadas, basadas todas en JavaScript, al que se le denomina Stack MEAN, con el propósito de afrontar las diferentes capas involucradas. El termino MEAN es un acrónimo formado por las letras iníciales de los nombres de las tecnologías que lo integran, aunque en un orden no muy adecuado en términos prácticos (quizás si de modo estético pues la palabra inglesa “Mean” es sinónimo de “Cool”).
Esas tecnologías que lo conforman son, los entornos de trabajo Node.js y Express.js, este último basado a su vez en Node.js con el fin de facilitar la creación de aplicaciones online, ambos destinados a la programación del lado del servidor, el Sistema Gestor de Bases de Datos de tipo Documental no relacional (NoSQL) MongoDB, que usa archivos JSON donde guarda estructuras de información, esto para la capa de almacenamiento y el framework de diseño web basado en el denominado Modelo-Vista-Controlador AngularJS, que permite agilizar y optimizar el desarrollo de interfaces mediante los lenguajes HTML y CSS.
Para finalizar, debo aclarar que pese a sus excelentes capacidades para el procesamiento acelerado en condiciones de alta recurrencia y sus grandes expectativas a futuro, esta tecnología de desarrollo no es en ningún modo la solución definitiva para la programación web, ni mucho menos es viable para todo tipo de circunstancias, pues como todo sistema presenta debilidades y vulnerabilidades, como por ejemplo el hecho de que su escalabilidad se ve limitada por la utilización de un único hilo de procesamiento, la cual es una limitante impuesta por el propio lenguaje JavaScript.