Google+ Leido en Igoogle (y otros): Porqué el mito de la lentitud de Java contra programas compilados

lunes, 31 de octubre de 2011

Porqué el mito de la lentitud de Java contra programas compilados

Java pulling ahead? Java versus C++ benchmarks:

Android usa un motor muy optimizado de java, un lenguaje que se presupone interpretado y por tanto, en principio maś lento que los compilados.

Pero los programas java no van más lentos que sus competidores compilados, al menos no necesariamente.

El motivo es que los motores java, el más avanzado actualemnte el Dalvik de los Android, COMPILAN en la primera ejecución el programa para el hardware donde se encuentran, así el intérprete sólo interpreta la primera vez que se ejecuta el programa, haciéndolo funcionar a la misma velocidad que si hubiese sido compilado para esa máquina, con la ventaja de que - como si fuera una gentoo - el programa queda compilado para la máquina en particular.

Este falso mito tiene su base en la mala docencia. Es cierto que hasta que no aparecieron los compiladores JIT java era un lenguaje interpretado, pero a partir de la aparición de los compiladores JIT para java - Just in Time - o sobre la marcha lo que en realidad hacen los motores java no es INTERPRETAR, sino compilar dinámicamente - o sea para cada máquina - haciéndolo más eficiente inclusoq ue un programa compilado estáticamente.

Eso si siguen tardando más en arrancar, la primera vez, pues deben descomprimirse, cargarse y compilarse en su primera ejecución, retraso apenas apreciable conforme el procesador es más rápido.