Node.js vs Java EE

No he podido resistirme a comentar este post de Marc Fasel en DZone en la que se compara el rendimiento de Node.js frente a JavaEE

La prueba consiste en leer un dato JSON de CouchDB y devolverlo, en el caso de Node.js

Y en el caso de Java tenemos:

Más allá de que este Servlet parece realmente creado por un programador Node.js (ni el init han usado :)) la realidad es que según comenta Marc:

“The Java servlet was run on an Apache Tomcat version 7.0.21, default configuration running on Java 1.6. The database driver was CouchDB4J version 0.30. The driver has no caching options available, so no configuration was done.”

Lo que implica que se está arrancando el Tomcat con un conjunto de Servicios (JSPs, Consola Web, JMX,…) que están consumiendo recursos y tiempo de proceso. En mi opinión para que la prueba fuese más veraz en lugar de un Tomcat podrían haber elegido un Jetty arrancado con sólo el Servicio de Servlets.

En cualquier caso ahí están los datos :):

En Java:

En Nojde.js:

Respuestas

  1. Avatar de Alberto Gomez Toribio
    Alberto Gomez Toribio

    No solo no es justo que estemos comparando la ejecución de todo un contenedor de servlets Java contra un solo proceso Javascript, sino que además estamos comparando paradigmas de programación distintos: Orientado a Objetos vs Orientado a Eventos.

    Lo justo sería hacer una implementación utilizando programación asíncrona en Java utilizando las clases del nuevo NIO2 Asynchronous Input/Output (AIO).

    ¿Qué ocurriría? Pues yo os lo digo, que con un solo hilo Java tiene mucho mejor rendimiento que NodeJS, pero además Java tiene la opción de levantar tantos hilos como quieras, funcionando en modo async, es decir, todos los hilos tragando eventos generados en un modelo de programación asíncrona, por lo que aprovechas mejor los recursos de la máquina.

    Entiendo que haya fanboys de NodeJS, pero por favor, que no nos tomen por estúpidos.

    1. Comparto (casi) por completo tu reflexión, de hecho me gustaría una comparación Node.js vs Vert.x por ejemplo

    2. le invito a que lea un poco mas de node.js y no decir tantas mentiras de java se que los fansboys de java lo quieren rescatar como sea.

Replica a ⚽ Junk (@fuicioso) Cancelar la respuesta