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
- ¿Podemos usar Cordova con PHP y MySQL?
- ¿Se puede usar WebStorm para ejecutar código AngularJS?
- ¿Qué debe saber un desarrollador de Node.js sobre las funciones principales de Node.js?
- Después de aprender los conceptos básicos de JavaScript, ¿qué debo aprender a continuación?
- Cómo implementar un proxy web que pasa solicitudes y datos entre múltiples clientes web y servidores web, al mismo tiempo
- 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.