Nodejs, Javascript del Lado del Servidor

Javascript es una de las Tecnologías más importantes del desarrollo web, es el lenguaje de programación estándar de todos los navegadores web, y su uso es tan extendido que es difícil no encontrar un sitio web que no use javascript. 
Ahora Gracias a Nodejs podemos ejecutar Javascript también del lado del servidor, pero este termino puede sonar algo simple, así que aprendamos detalladamente a que me refiero.

Nodejs, Javascript del Lado Servidor


La mayor parte del tiempo de vida del lenguaje de programación Javascript, este ha vivido dentro de los navegadores. empezó con un lenguaje de scripting simple para modificar pequeños detalles de páginas web pero ha medida que ha pasado los años se ha convertido en un lenguaje complejo para construir todo tipo de aplicaciones, al mismo nivel de otros lenguajes de programación que han estado allí por décadas como Java o Python.

Ademas considera que los navegadores tienen un programa interno que interpreta o traduce javascript, para que el computador pueda ejecutar programas, este programa recibe el nombre de motor de javascript, y los creadores de los navegadores constantemente mejoran estos motores para poder ejecutar javascript de una manera más veloz. uno de estos motores es V8, de Google.

Probablemente te estas preguntando que relación tiene con Node.js. bueno, la relación es que un dia Ryah Dahll, el creador de Nodejs, buscando una manera de crear servidores web que consideren las necesidades de la web actual, es decir una enorme cantidad de usuarios y todos accediendo en tiempo ral, encontró el motor V8 de google y lo hizo funcionar fuera del navegador, es decir en el sistema operativo, y desde esto momento, nace Nodejs. y El cual lo presenta en la JsConf, una conferencia de Javascript.




Pero hasta este punto probablemente tengas muchas dudas aun, así que veamos de que se trata Node.js.

¿Que es Node.js? 

En la Página Oficial de NodeJs nos dice lo siguiente:
Node.js® es un entorno de ejecución para JavaScript construido con el motor de JavaScript V8 de Chrome. Node.js usa un modelo de operaciones E/S sin bloqueo y orientado a eventos, que lo hace liviano y eficiente. El ecosistema de paquetes de Node.js, npm, es el ecosistema mas grande de librerías de código abierto en el mundo.


Como veras no es un concepto nada simple si estas empezando en el desarrollo web backend, así que empezare detallando que es Nodejs,  a través de los siguientes puntos:


  • Nodejs Es un entorno de ejecución de javascript
  • Nodejs esta construido con el motor v8 de google chrome
  • Nodejs es un modelo de operaciones sin bloqueo y orientado a eventos


No te preocupes te lo explicare de la manera más fácil, y entendible 😉, así que vayamos paso a paso:

ENTORNO DE EJECUCIÓN PARA JAVASCRIPT

Como todos los lenguajes de Programación son palabras Complicadas que usamos para decirle al computador que hacer y que lucen la mayoría de veces así:

codigo de soy programador en javascript
Codigo Javascript, el Lenguaje que usa Node.js

las cuales llamamos código de programación, se necesita una forma de traducirlos para que la computadora pueda entender todo estas palabras complicadas. Y sí las computadoras tampoco entienden tal código, ya que estas solo usan 0 y 1 para funcionar, así que se necesita un programa que traduzca todo estas palabras a 0 y 1, el entorno de ejecución se refiere a este programa, y en este caso traduce código JavaScript.

CONSTRUIDO CON EL MOTOR JAVASCRIPT V8 DE CHROME

Google es la empresa que su negocio es la web, de hecho su buscador es el sitio numero 1 de Internet, que las personas más visitan, ¿te suena Google verdad? 😛, pues ellos han invertido mucho dinero y esfuerzo en hacer de JavaScript un lenguaje potente, ya que toda la web depende de JavaScript para sus funcionalidades como por ejemplo las extensiones de Google Chrome, el reproductor de Youtube,  Almacenamiento en la Nube, Google Docs, entre muchos otros servicios que provee la web. Es por esto que Google desarrolla el motor V8, que no es más que un programa que sirve para interpretar o traducir JavaScript de una manera muy veloz en su navegador Google Chrome, y Sí, los demás navegadores como Firefox y Opera usan otros motores para interpretar JavaScript.

NODE.JS USA UN MODELO DE OPERACIONES E/S SIN BLOQUEO Y ORIENTADO A EVENTOS

Ok, Esta es la parte más importante de Node, así que tratare de detallarlo lo mejor posible y si lo se esta sección es la más complicada de Node, pero si la entiendes podrás ver porque es tan cool.
primero tengamos en mente Las operaciones Entrada y Salida (E/S) o del Ingles Input/Output pertenecientes a un sistema, que puede ser un computador o un sistema informático y que no es mas que una solicitud que se le hace a un sistema, y la respuesta que a este da ante tal solicitud, y que luce así:
Ok, este modelo de entrada y salida es el que siempre ha dado problema y te diré porque con un ejemplo sencillo, imagina que ese sistema hace uso de otro sistema. en tal caso el sistema inicial tendría que esperar la respuesta del otro sistema, y mientras el usuario se queda esperando.
Esto es lo genial de Node, que al utilizar Javascript es asíncrono, es decir que no espera a que termine un proceso, para continuar con el otro, lo que hace es simplemente decirle al otro sistema que realiza su tarea y cuando termine que le de el resultado mientras tanto Node sigue reviviendo más tareas.


EL ECOSISTEMA DE PAQUETES DE NODE.JS, NPM


Al momento de escribir un programa requerimos funcionalidades para hacer que nuestra aplicación crezca y sea más profesional, pero el mundo es tan grande que probablemente alguien ya creo tal funcionalidad y la comparte contigo y todas las personas de la web, esto es NPM, algunos lo conocen como "Node Package Manager", o el "Administrador de Paquetes de Node", que no es más que un lugar en la web que almacena código de todos los desarrolladores del mundo que comparten código, que esta comprobado, que es libre y gratuito para que lo uses en tus proyectos de la manera más fácil.

Ventajas de Nodejs

  • Es veloz debido a que utiliza el Motor V8 de Google
  • usa un código de estilo asíncrono, evitando las pesadillas del multithreading
  • Utiliza la enorme cantidad de código ya escrito en Javascript, debido a que es el lenguaje más popular.
  • Permite compartir Código entre en el navegador y el servidor, debido a que ambos estan utilizando Javascript como lenguaje javascript, ahorrándonos trabajo y compartiendo paradigmas y herramientas.

RECURSOS DE LA WEB PARA APRENDER JAVASCRIPT Y NODEJS
en lo que va de la web, día a día aumenta la cantidad de recursos y tutoriales aunque estos están en mi lista de frecuentados en lo que se refiere a tutoriales, y tambien te recomiendo ver mi lista de sitios productivos en la web.

AYUDA EN LA WEB

en la web puedes encontrar tutoriales pero siempre que tengas alguna duda, ademas de googlear tu problema, te recomiendo tener una cuenta en Github y StackOverflow,y si no sabes usar Git, pues te recomiendo ver mi post de ¿Que es Git y Github?, Desde Cero, ademas puedes ver mi cuenta de Github donde subo muchos proyectos de Nodejs y Javascript, que puedes descargar y modificar a tu gusto. ademas una vez tengas tu aplicación puedes subirla a la nube para compartirla con tus amigos en los siguientes sitios.

HOSTING PARA NODEJS
Si bien en los comienzos de Nodejs, era difícil usar NodeJs en producción, hoy es muy fácil encontrar servicios tanto en IaaS como PasS, para subir tus Apps, incluso puedes subir tus aplicaciones gratuitamente, en servicios súper profesionales como HerokuAzure, y Amazon, Open Shift, aunque hay muchos más como:
  • ¿Donde desplegar Apps?
  • Digital Ocean
  • AppFog.com
  • https://www.atlantic.net/cloud-hosting/apps/nodejs/
  • Modulus
  • http://joyent.com
  • http://nodester.com
  • https://www.nodejitsu.com/

CONCLUSIÓN

Cuando Estudiaba me frustraba mucho la perdida de tiempo que llevaba el estar usando distintos lenguajes de programación. Un día estudiaba C/C++ para desarrollar hardware, al otro estudiaba Java y C# para hacer una aplicaciones de Escritorio al otro estudiaba PHP, Python o Perl para hacer servidores Web, pero al mismo tiempo sentía interés por las aplicaciones móviles que es lo mas usado hoy en día.  
Todo esto Gracias a Javascript, resume mi trabajo diario así, empiezo creando un servidor NodeJs muy básico de acuerdo a lo que necesito, luego desarrollo una aplicación HTML5 (es decir HTML, CSS, y Js) que utilizo junto al servidor, para luego subirlo gratis en uno de los hosting que te he mencionado casi al instante (me toma de 2 a 5 minutos subirlo a Internet para que lo vean mis amigos) y que puedo extender fácilmente, si luego quiero añadir hardware, solo tengo que usar mas código javascript para controlar hardware, o si quiero hacer una App Móvil o de Escritorio, no tengo que cambiar mucho código más que adaptarlo, lo que me deja a mi como desarrollador enfocarme en que debería hacer la Aplicación más que en como construirla.
Es posible que todas las respuestas a tus preguntas acerca de Nodejs aun no esten contestadas, es por eso que te recomiendo ir a la publicación de Preguntas Frecuentes de Nodejs, y en caso no este tu pregunta hacerla.

Comentarios

  1. Respuestas
    1. Hola Orlando, Aun me falta actualizar más contenido y recursos, pero allí vamos ;)

      Eliminar
  2. Me ha encantado tu canal de YouTube, después de ver algunos vídeos llegue aquí para seguir aprendiendo. Muchísimas gracias, eres un crack :D

    ResponderEliminar
    Respuestas
    1. Gracias Sebastian, un gusto que te sirva el contenido, cualquier sugerencia dejarme saber, y tambien te invito al slack, que es un chat donde estan muchos desarrolladores compartiendo dudas ->

      https://join.slack.com/t/fazt/shared_invite/enQtMjE1MDIxMDI4Mzg4LWQ3OTUxYjgxNzFiZTc3MDQ1MGNmNWQ1OTk0MDVlZmQ4MGNiYWY5ZDgwMDVhZjcyZjE0NmViMjNhOWNiOTEyMTM

      Un Saludo.

      Eliminar
  3. Hola fazt, también quiero unirme a tu slack.

    ResponderEliminar
    Respuestas
    1. Hola Juan, copia y pega el siguiente enlace en tu navegador y unetenos :)

      https://join.slack.com/t/fazt/shared_invite/enQtMjE1MDIxMDI4Mzg4LWQ3OTUxYjgxNzFiZTc3MDQ1MGNmNWQ1OTk0MDVlZmQ4MGNiYWY5ZDgwMDVhZjcyZjE0NmViMjNhOWNiOTEyMTM

      Eliminar
  4. Muy bueno el post, claro y educativo. Gracias desde Uruguay.

    ResponderEliminar
  5. gracias por tanta ayuda, soy nuevo en esto y me entusiasmó bastante leer lo positivo que es HTML5. mil millones de gracias

    ResponderEliminar
  6. Gracias por tu generosidad, vengo de la electrónica y siempre he programado en asembler o c/c++, ahora me estoy volcando como hobby a la programación web, muy buenos tus tutoriales. Puedo unirme a tu slack. Nuevamente Gracias

    ResponderEliminar

Publicar un comentario