java - ¿Android castra la tecnología Jazelle de ARM?
architecture (3)
De hecho, tenía la impresión de que Dalvik estaba destinado más a la eficiencia del espacio que a la eficiencia de la ejecución. También de Wikipedia:
Un archivo .dex descomprimido es, por lo general, un pequeño porcentaje más pequeño que un .jar comprimido (Archivo Java) derivado de los mismos archivos .class.
Si bien los teléfonos actuales pueden usar un ARM con soporte de Jazelle, eso no es necesariamente cierto en el futuro.
También de Wikipedia (advertencia: rumores):
Las especificaciones publicadas son muy incompletas, ya que solo son suficientes para escribir el código del sistema operativo que puede admitir una JVM que utiliza Jazelle. La intención declarada es que solo el software de JVM necesita (o se le permite) depender de los detalles de la interfaz del hardware. Este enlace estrecho facilita que el hardware y JVM puedan evolucionar juntos sin afectar a otro software. En efecto, esto le da a ARM Holdings un control considerable sobre qué JVM pueden explotar Jazelle. También evita que las JVM de código abierto utilicen Jazelle.
Una vez que agreguen un JITter a Dalvik, todo será un punto discutible.
La justificación que he visto para que digamos "Bastardizing" los códigos de byte de Java en Android fue el rendimiento. (Sospecho que hay otra razón). Sin embargo, al cambiar los códigos de byte, ¿no han hecho que las tecnologías de aceleración de hardware como Jazelle sean discutibles y, por lo tanto, degraden el rendimiento disponible para una plataforma Java móvil?
Me parece contra intuitivo saber que la plataforma de destino es una plataforma móvil basada en ARM. Si bien PODRÍA darle un mejor rendimiento en otras arquitecturas de CPU, parece escupir a ARM y Jazelle.
¿Qué tipo de efecto cuantitativo tiene sobre el rendimiento de Java?
¿Realmente mejora el rendimiento, y si es así, cómo?
¿Cuál es el efecto en otras plataformas? (es decir, x86, mips, yadda, yadda, yadda ...)
Sí, Dalvik hace que Jazelle sea inútil. La única pregunta es ¿fue útil Jazelle para empezar o es 90% publicitario? Un buen compilador JIT o AOT (antes de tiempo) tiende a ofrecer un rendimiento mucho mejor que intentar usar instrucciones especializadas. El enfoque basado en registro de Dalvik podría ser más rápido que un intérprete tradicional de bytecode de Java, pero si la diferencia en menor entre la de un intérprete y la de un JIT. Esperemos que una de las próximas versiones de Android tenga un JIT.
Se necesitan ~ 5-10 años para escribir una buena máquina virtual con recolectores de basura y optimizadores de última generación. Sun (y Microsoft) han pasado esos años. Google no tiene. Esperamos que sigan invirtiendo en él para que un día el código Java de Android no sea un 90% más lento de lo que debería ser.
Wikipedia: máquina virtual Dalvik :
A diferencia de la mayoría de las máquinas virtuales y las verdaderas máquinas virtuales de Java que son máquinas de pila, la máquina virtual de Dalvik es una arquitectura basada en registros.
Al estar optimizado para los requisitos de poca memoria, Dalvik tiene algunas características específicas que lo diferencian de otras máquinas virtuales estándar:
- La VM estaba adelgazada para usar menos espacio.
- Dalvik no tiene un compilador just-in-time.
- El grupo de constantes se ha modificado para usar solo índices de 32 bits para simplificar el intérprete.
- Utiliza su propio código de bytes, no el bytecode de Java.
Además, Dalvik se ha diseñado para que un dispositivo pueda ejecutar varias instancias de la máquina virtual de manera eficiente.
Editar : Ver Wikipedia: Open Handset Alliance . El miembro fundador incluye Intel, Motorola, Qualcomm y Texas Instruments. ARM se unió un año después, en diciembre de 2008. Por lo tanto, supongo que no tenía sentido que estas compañías dependieran de una tecnología patentada para los que no eran miembros, cuando el objetivo era crear un competidor de iPhone / Blackberry de código abierto.