Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Conoce a tu enemigo
Developer
http://codeurjc.es http://elastest.io
Node para Javeros · @micael_gallego
Node para Javeros · @micael_gallego
Es de verdad Node.js tan
bueno como lo pintan?
Me estaré haciendo
mayor?
Soy un Javasaurio?
Node para Javeros · @micael_gallego I
Realmente
node.js se usa
tanto?
https://medium.com/the-node-js-collection/node-js-state-of-the-union-blog-2017-ed86640ec451
Node para Javeros · @micael_gallego
2017 Node.js
Users Survey
https://nodejs.org/static/documents/casestudies/Nodejs_2017_User_Survey_Exec_Summary.pdf
vs
El lenguaje
(o los lenguajes)
Ni idea…
habrá que
preguntar al
maestro Iván
López ;)
https://www.npmjs.com/
https://search.maven.org/
http://www.modulecounts.com/
Node para Javeros · @micael_gallego
Librerías de terceros
https://www.npmjs.com/
https://www.npmjs.com/package/left-pad
Scripts
Siempre acabas
poniendo pegamento
en scripts ;)
URL
Navegador Servidor
web web
HTML + Imágenes
JSON
● Un gran servidor
administrador
● Múltiples aplicaciones
Java desplegadas Glassfish Tomcat
● Ventajas ● Inconvenientes
● Administración centralizada ● Administración centralizada
● Desarrolladores ● Desarrolladores
despreocupados de despreocupados de
aspectos de despliegue aspectos de despliegue
● Más inconvenientes
● Difícil actualizar el “servidor de
aplicaciones” por los problemas de
compatibilidad entre aplicaciones
● Muuuchos años con Java 6 ;)
● Desarrollo muy pesado
Node para Javeros · @micael_gallego
Frameworks Web / REST
Java se modernizó
En 2012 surgió el movimiento “containerless”
ofreciendo la misma experiencia en Java
spring
boot
Node para Javeros · @micael_gallego
Estilo de programación
tradicional...
import io.vertx.core.AbstractVerticle;
Reactor + ● Funcional
● Asíncrono (no bloqueante)
WebFlux ● Configuración con funciones
http://www.baeldung.com/spring-5-functional-web
Node para Javeros · @micael_gallego
Estilo de programación
en la actualidad...
https://github.com/mauricio/postgresql-async
Node para Javeros · @micael_gallego
Estilo de programación
en la actualidad...
RxJava RxJS
La misma librería de programación reactiva para Java y Node
@Controller('cats')
export class CatsController {
@Post()
async create(@Body() cat: Cat) {
this.catsService.create(cat);
}
} Node para Javeros · @micael_gallego
Estilo de programación
en la actualidad...
@Column()
age: number;
}
http://typeorm.io
Node para Javeros · @micael_gallego
Estilo de programación
Modelo asíncrono
● Un proceso node por core
● Balanceo con un router externo
● Se suelen comunicar usando
sistemas externos (Redis)
● Facilita escalabilidad horizontal
https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/
Node para Javeros · @micael_gallego
Rendimiento
https://www.tandemseven.com/blog/performance-java-vs-node/
Node para Javeros · @micael_gallego
Rendimiento
https://www.tandemseven.com/blog/performance-java-vs-node/
Node para Javeros · @micael_gallego
Rendimiento
● Cómo comparar?
– Cálculos intensivos?
– Uso intensivo de IO?
– Java síncrono vs Node asíncrono? Y los
dos asíncronos?
https://docs.spring.io/spring/docs/5.0.1.RELEASE/spring-framework-reference/web-reactive.html#spring-webflux
Node para Javeros · @micael_gallego
Rendimiento
Te puedes
hacer tu
propio
procesador si
quieres (como
Google)
https://docs.spring.io/spring/docs/5.0.1.RELEASE/spring-framework-reference/web-reactive.html#spring-webflux
Node para Javeros · @micael_gallego
Conclusiones
●
Las plataformas cada vez se parecen más entre sí
●
Se puede elegir cualquier estilo de programación
– Lenguaje tipado estático o dinámico
– Mas orientado a objetos o más funcional
– Con o sin anotaciones
– Inyección de dependencias
●
Son comparables en rendimiento
●
Elige plataforma, lenguaje y estilo en función de…
– Experiencia del equipo (frontend developers?)
– Importancia del rendimiento algoritmico vs IO
– Tamaño del equipo (cuanto más grande, más se valoran
los tipos estáticos)
– Riesgos asumibles (Java es rock solid)
Muchas Gracias!!