jueves, julio 21, 2016

Node.JS


Node.js es una librería y entorno de ejecución de E/S dirigida por eventos y por lo tanto asíncrona que se ejecuta sobre el intérprete de JavaScript creado por Google V8.


¿Qué es y para que sirve node.js?


JavaScript es un sólo un lenguaje de programación del lado del cliente que se ejecuta en el navegador, ¿verdad?. Ahora ya no. Node.js es una forma de ejecutar JavaScript en el servidor, además de mucho más.

Node.js es un entorno Javascript del lado del servidor, basado en eventos. Node ejecuta javascript utilizando el motor V8, desarrollado por Google para uso de su navegador Chrome. Aprovechando el motor V8 permite a Node proporciona un entorno de ejecución del lado del servidor que compila y ejecuta javascript a velocidades increíbles. El aumento de velocidad es importante debido a que V8 compila Javascript en código de máquina nativo, en lugar de interpretarlo o ejecutarlo como bytecode. Node es de código abierto, y se ejecuta en Mac OS X, Windows y Linux.

¿Qué problema resuelve Node?

La meta número uno declarada de Node es "proporcionar una manera fácil para construir programas de red escalables". ¿Cuál es el problema con los programas de servidor actuales? Hagamos cuentas. En lenguajes como Java™ y PHP, cada conexión genera un nuevo hilo que potencialmente viene acompañado de 2 MB de memoria. En un sistema que tiene 8 GB de RAM, esto da un número máximo teórico de conexiones concurrentes de cerca de 4.000 usuarios
A medida que crece su base de clientes, si usted desea que su aplicación soporte más usuarios, necesitará agregar más y más servidores. Desde luego, esto suma en cuanto a los costos de servidor del negocio, a los costos de tráfico, los costos laborales, y más. 
Además de estos costos están los costos por los problemas técnicos potenciales — un usuario puede estar usando diferentes servidores para cada solicitud, así que cualquier recurso compartido debe almacenarse en todos los servidores. Por todas estas razones, el cuello de botella en toda la arquitectura de aplicación Web (incluyendo el rendimiento del tráfico, la velocidad de procesador y la velocidad de memoria) era el número máximo de conexiones concurrentes que podía manejar un servidor.
Node resuelve este problema cambiando la forma en que se realiza una conexión con el servidor. En lugar de generar un nuevo hilo de OS para cada conexión (y de asignarle la memoria acompañante), cada conexión dispara una ejecución de evento dentro del proceso del motor de Node

Pero ¿por qué javascript del lado del servidor?

Aunque Javascript tradicionalmente ha sido relegado a realizar tareas menores en el navegador, es actualmente un lenguaje de programación totalmente, tan capaz como cualquier otro lenguaje tradicional como C++, Ruby o Java.


¿Qué usos reales se le da a nodejs?

Es una herramienta genial para todo tipo de cosas. Aplicaciones web, aplicaciones en línea de comandos, scripts para administración de sistemas, todo tipo de aplicaciones de red, etc.
Es rápido, muy rápido. Esto es importante por varias razones:
  1. El desarrollo es más rápido.
  2. La ejecución de tests de unidad se puede hacer más rápido.
  3. Las aplicaciones son más rápidas y por tanto la experiencia de usuario es mejor.
  4. Menor coste de infraestrucutra (Linkedin pasó de tener 15 servidores a 4).
También destaca su flexibilidad. En otros entornos hay un servidor “monolítico” (apache, tomcat, etc.) y tu aplicación se “despliega” en él, y tienes unas estructuras de directorios y ficheros de configuración muy concretos. En nodejs tú lanzas el servidor web, y si quieres puedes lanzar varios, y si quieres puedes lanzar a la vez un servidor ftp, y los lanzas desde el directorio que quieras…

Desventajas de node.js

Como la mayoría de las nuevas tecnologías Node no es fácil de implementar en alojamientos existentes. En alojamientos compartidos habrá que ver si una aplicación de node.js puede funcionar; esto dependerá de la empresa de hosting. Si el alojamiento está en un VPS o servidor dedicado será más sencillo ya que se pueden ejecutar aplicaciones Nodejs sin problemas.
Otras desventajas que se mencionan a menudo (pero que están solucionándose día a día son:
  • API Inestable:  La API de Node tiene la mala costumbre de cambiar en formas que rompen la compatibilidad hacia atrás de versión en versión, lo que requiere que apliques cambios frecuentes en tu código para mantener todo funcionando en las versiones mas actuales.
  • Falta de una Librería EstándarJavaScript es un lenguajes con un buen núcleo pero con una flaca librería estándar. Cosas que darías por hecho en otro lenguaje del lado del servidor simplemente no existen.
  • Falta de Librerías en General:  ¿Necesitas una interfaz de bases de datos madura? ¿Un ORM? ¿Una librería de procesamiento de imágenes? ¿Un analizador XML? Como JavaScript no sido popular en el lado del servidor todo esto es muy reciente, o no está probado o está en camino.
  • Muchas Formas de Programar:  La falta inherente de organización de código se puede considerar una gran desventaja. Se nota su efecto claramente cuando el equipo de desarrollo no está muy familiarizado con la programación asíncrona o los patrones de diseño estándar. Simplemente hay demasiadas formas de programar y de obtener código desparejo y difícil de mantener.
  • No está Probado lo Suficiente. Este punto puede ser susceptible a opiniones subjetivas debido a que es una cuestión bastante abierta. Mientras no tengamos grandes proyectos en producción por varios años, no podremos saber donde está el problema.

Fue creado con el enfoque de ser útil en la creación de programas de red altamente escalables, como por ejemplo, servidores web.2 

Node.js es similar en su propósito a Twisted o Tornadode Python

V8 es el entorno de ejecución para JavaScript creado para Google Chrome. Es software libre desde 2008, está escrito en C++ y compila el código fuente JavaScript en código de máquina en lugar de interpretarlo en tiempo real.
Node.js contiene libuv para manejar eventos asíncronos. Libuv es una capa de abstracción de funcionalidades de redes y sistemas de archivo en sistemas Windows y sistemas basados en POSIX como Linux, Mac OS X y Unix.
El cuerpo de operaciones de base de Node.js está escrito en JavaScript con métodos de soporte escritos en C++.

Node.js incorpora varios "módulos básicos" compilados en el propio binario, como por ejemplo el módulo de red, que proporciona una capa para programación de red asíncrona y otros módulos fundamentales, como por ejemplo Path, FileSystem, Buffer, Timers y el de propósito más general Stream. Es posible utilizar módulos desarrollados por terceros, ya sea como archivos ".node" precompilados, o como archivos en javascript plano. Los módulos Javascript se implementan siguiendo la especificación CommonJS para módulos,8 utilizando una variable de exportación para dar a estos scripts acceso a funciones y variables implementadas por los módulos.9
Los módulos de terceros pueden extender node.js o añadir un nivel de abstracción, implementando varias utilidades middleware para utilizar en aplicaciones web, como por ejemplo los frameworks connect y express. Pese a que los módulos pueden instalarse como archivos simples, normalmente se instalan utilizando el Node Package Manager (npm) que nos facilitará la compilación, instalación y actualización de módulos así como la gestión de las dependencias. Además, los módulos que no se instalen el directorio por defecto de módulos de Node necesitarán la utilización de una ruta relativa para poder encontrarlos. El wiki Node.jsproporciona una lista de varios de los módulos de terceros disponibles.

Links Soporte:
https://es.wikipedia.org/wiki/Node.js
http://www.netconsulting.es/blog/nodejs/


No hay comentarios.: