¿Cuáles son las ventajas y desventajas de usar Node.js en comparación con la función asincrónica de servlet 3.0 de Java?

Una pregunta mejor formulada es cuál es la ventaja de Node.js en comparación con Java, ya que Java hace muchas cosas que Node.js hace (incluidas las E / S sin bloqueo) realmente bien y algo más.

He usado Spring Framework y Java 7 (desafortunadamente, no tengo funciones de E / S sin bloqueo o Java 8 utilizado por mí, ¡con suerte en un próximo proyecto con Play Framework quizás!) En algunos proyectos y luego en Node.js para otro proyecto (aún pasando) y soy muy aficionado a ambas plataformas por sus respectivos méritos. Entonces mi respuesta aquí no es parcial.

Ventajas

  • Proceso de servidor ligero. V8 tiene un tiempo de inicio realmente rápido. Lo encontré instantáneo, también conocido como muy comparable a los entornos de script Python, Perl y Ruby. JVM tiene un tiempo de calentamiento notable.
  • Muy accesible para desarrolladores con cierta experiencia de desarrollo frontend debido a JavaScript. La mayoría de los desarrolladores de Java Django, Rails y full stack también conocerán JavaScript, por lo que Node.js es rápido de aprender.
  • Fácil de aprender (subjetivo) ya que la cadena de herramientas habitual de Node.js compuesta por Node.js o io.js – JavaScript I / O, Express 4.x – API Reference, request, request-json, bunyan, etc. es intuitiva
  • Para aquellos que se quejan, no todas las características de V8 están disponibles y ECMAScript 5.1 apesta, hay compatibilidad con ECMAScript 6 en io.js
  • NPM es más intuitivo que Maven y Gradle y también está muy bien documentado.
  • Comparado para ser más rápido que casi todos los lenguajes de secuencias de comandos dinámicos populares del lado del servidor (bueno, excepto LuaJIT). Sin embargo, la competencia es principalmente Python, Perl, Ruby y PHP.
  • Es barato de alojar ya que el proceso V8 es liviano y la gota de RAM de $ 512MB de DigitalOcean y el 1x Dyno gratis de Heroku con 512MB de RAM son perfectos para probar servidores. JVM usará mucha memoria por sí mismo en estas máquinas.
  • El caso de uso ideal es cuando tiene un servidor liviano que se comunica con un grupo de bases de datos (y otros servicios) utilizando RESTful JSON a través de HTTP.
  • Java asincrónico (sin bloqueo de E / S) es algo con lo que muchos desarrolladores no tienen experiencia, y aunque solo estoy adivinando, debería ser más fácil encontrar desarrolladores de Node.js que desarrolladores de Java asíncronos, aunque muy pronto todos los desarrolladores de Java lo harán. estar usando algo como Netty para escribir servidores web.
  • El código Node.js es mucho menos detallado en comparación con el código Java. Si está involucrado en una demanda relacionada con su software y el tribunal exige el código fuente impreso como evidencia, matará muchos más árboles como desarrollador de Java que como desarrollador de Node.js.
  • Fácil de contratar estudiantes de primer año: mayor probabilidad de que un graduado universitario esté familiarizado con JavaScript que Java, por lo que puede descifrar el código con un tiempo de aceleración menor.

Desventajas

  • El rendimiento absoluto es mejor en JVM. Realmente no le importa el tiempo de calentamiento de unos segundos si puede atender solicitudes como locas.
  • El enfoque asíncrono de todo duele (a menos que comience a usar alguna biblioteca para simplificar las cosas). El código Java puede ser más fácil para los desarrolladores novatos.
  • No hay un buen IDE de código abierto disponible. Uso Atom and Brackets para Node.js que no son nada en comparación con NetBeans, IntelliJ IDEA y Eclipse. En Java, su IDE puede hacer muchas refactorizaciones y conjeturas para ayudarlo a desarrollar proyectos más complejos.
  • La depuración no es tan madura como con Java (aunque adobe / brackets con adobe-research / theseus lleva la depuración de Node.js a una nueva altura).
  • Las herramientas de concurrencia en Node.js no se acercan a Java. Por lo general, NO escribirá código concurrente en Node. La E / S concurrente es posible (y realmente buena), pero Node.js no está diseñado para el procesamiento de números multiproceso.
  • Probado para ser empresarial amigable. Muchos casos de uso tienen soluciones preparadas.
  • El ecosistema JVM no tiene comparación. Muchos buenos proyectos de la Fundación Apache, bases de datos poderosas para cada propósito y bibliotecas que no son servidores web (como OpenNLP) son realmente buenos. Si no le gusta la verbosidad o el estilo de codificación de Java, tiene otros lenguajes JVM como Groovy, Scala y Clojure.
  • Expertos fáciles de contratar: Java es una plataforma madura y hay muchas personas con un par de décadas de experiencia en la administración, en comparación con el ecosistema Node.js más reciente.

En palabras simples, el nodo es solo otro servidor como Apache, IIS, TOM, etc. Pero a diferencia de esos servidores, Node no trata con PHP, .NET o JAVA. Ejecuta JavaScript en el lado del servidor. Sí, JavaScript sin navegador; ese es el nodo El nodo en sí no está hecho en JavaScript por completo; más bien sus envoltorios están hechos en C. Simplemente ejecuta JavaScript. A continuación hay una lista, qué no es Node y qué es Node.

PROS

  • El IO controlado por eventos asincrónicos ayuda al manejo concurrente de solicitudes.
  • Utiliza JavaScript, que es fácil de aprender.
  • Comparta el mismo código con el servidor y el cliente.
  • npm, los módulos empaquetados de Node ya se han vuelto enormes y siguen creciendo.
  • Comunidad activa y vibrante, con gran cantidad de código compartido a través de github, etc.
  • Puede transmitir archivos grandes.

Contras

  • Node.js no proporciona escalabilidad. Una CPU no va a ser suficiente; la plataforma no ofrece la capacidad de escalar para aprovechar los múltiples núcleos comúnmente presentes en el hardware de clase de servidor actual.
  • Tratar con una base de datos relacional es una molestia si está utilizando Node.
  • Sin profundizar en JavaScript si alguien inicia Node, puede enfrentar un problema conceptual.
  • Node.js no es adecuado para tareas intensivas en CPU. Es adecuado solo para cosas de E / S (como servidores web).

Para una comparación más detallada, puede visitar.

Cortesía – Node.js – razones de uso, pros y contras, ¡mejores prácticas!

La mayor parte de lo que escucha sobre Nodo vs. servlets asíncronos está, en el mejor de los casos, mal informado. La única y única razón por la que Node se hizo popular es que obtienes asincronía sin tener que escribir ningún código de subproceso. Servlet API 3.0 le brinda la asincronía en forma de un objeto Future, que aún debe interrogar y consumir, una vez que regrese el flujo descendente. Depende de usted crear esos nuevos hilos que lo harán sin bloquear el flujo ascendente. Con Node, no obtendrá un futuro de regreso: más bien, pasa una función de devolución de llamada que Node llamará, una vez que el flujo descendente haya regresado, por usted. Node (JavaScript, en realidad, por supuesto) hará todo ese trabajo de subprocesamiento, porque no se puede confiar en que lo haga bien. (¡Lo cual es correcto en la mayoría de los casos!)

Dicho esto, con Scala y el advenimiento del soporte lambda en JVM, se espera que la bacanal de JavaScript en el servidor termine pronto.

More Interesting

¿Qué es Knex.js?

¿Cuál sería un buen sistema de seguimiento de errores y gestión de tareas para el desarrollo web a pequeña escala?

¿Cómo se compara el marco web Yesod con marcos más maduros como Rails y Django? ¿Es Yesod lo suficientemente estable como para desarrollar un sitio web de producción? ¿Qué pierdes yendo con Yesod en lugar de Rails o Django? Que ganas

¿Cuánto AngularJS debe saber para comenzar a construir una aplicación Django-AngularJS?

En JavaScript, ¿cómo obtengo algo para almacenar la cantidad de veces que se hace clic en un botón?

¿Puedo crear mi propio blog usando Java Spring MVC? Tengo buenos conocimientos en Spring MVC, así que decidí crear uno yo mismo y cualquier idea o sugerencia es bienvenida.

¿Cuál es la mejor manera de explicar lo que hago como ingeniero de software / desarrollador web a alguien para quien eso no significa nada?

Cómo optimizar el tamaño de la imagen para WordPress sin sacrificar la calidad

¿Por qué los desarrolladores todavía usan iframes?

¿Hay alguien que construya sitios de transmisión de películas usando WordPress o Blogger?

¿Existe un beneficio real y tangible en la programación front-end y back-end en el mismo idioma (como en Node.js)?

¿Cuáles son algunas fuentes excelentes en línea (cursos en línea, libros, etc.) para aprender HTML y CSS?

¿Cuáles son los diferentes tipos de plataformas de desarrollo de sitios web de CMS?

¿Qué es un buen editor basado en web WYSIWYG para editar archivos XHTML? La conectividad de Dropbox es una ventaja.

¿Cuál es el sitio web más importante para aptitude?