Yo también quiero opinar sobre si Java es lento

Mucha gente tiene la idea de que Java es lento, cosa que es lógico pensar teniendo en cuenta que la máquina virtual es una máquina encima de otra máquina (la física) y una capa intermedia seguro que supone mayor tiempo de ejecución.

También hay gente que se queja de que las aplicaciones en Java son más lentas y, sin embargo, no tienen el cuidado o el conocimiento necesario para desarrollar código Java que no sea redundante o que haga un uso óptimo de la memoria.

En la Java Magazine de este mes hay un artículo sobre cómo funciona el intérprete y el compilador JIT que compila en tiempo de ejecución Java bytecode a instrucciones del procesador en el que se están ejecutando. Ya sólo el hecho de usar un compilador JIT hace que la ejeucución de código Java sea más rápida que cualquier código ejecutado en un intérprete (como el que tiene Java).

Pero en el artículo remarcan que no sólo JIT compila a código máquina si no que se aplican muchas optimizaciones de bajo nivel y es esto lo que hace, en realidad, que el tiempo de ejecución de un programa Java pueda en ocasiones superar al tiempo de ejecución de un programa con compilación AOT. De hecho, comentan en el artículo que algunos métodos se pueden volver a compilar en diferentes fases de la aplicación para aplicar diferentes optimizaciones que dependen de la fase de ejecución.

Ahora me imagino la máquina virtual como un servicio de optimización gratuito. Compilando una aplicación C++, consigo código máquina pero no código máquina optimizado para la arquitectura en la que se ejecuta. Yo no sabría optimizarlo -desarrollo aplicaciones de propósito general-, sin embargo, el equipo de desarrollo del compilador JIT sí conoce las diferentes arquitecturas en donde se ejecuta la JVM y la hacen inteligente para aprovechar cada arquitectura al máximo.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s