sirve - quien creo android
Por qué Android está basado en una máquina virtual(Dalvik) (4)
1) Java es, hasta donde yo sé, el idioma más universalmente enseñado en universidades e incluso escuelas secundarias / equivalente. Se usa ampliamente en el mundo profesional y tiene una gran cantidad de código detrás para ayudar a los desarrolladores a crear aplicaciones de mayor calidad, más rápido.
2) La sobrecarga no es tan buena en comparación con el código nativo, especialmente con código bien diseñado que está optimizado para JIT y supervisado por un gc cada vez más bien diseñado.
En realidad, creo que estas dos razones por sí solas pueden justificar por qué se eligió Java como el idioma principal para ser compatible con Android.
Tengo curiosidad por saber qué hizo que Google eligiera desarrollar el marco de android en la VM Java.
En el proceso de escribir código para Android durante casi 6 meses, observé que ejecutar el código en una VM en una plataforma de recursos limitados es realmente lento. Hay una gran cantidad de gastos generales involucrados. Sé que Java es portátil, etc. ¿no es posible utilizar idiomas nativos y obtener el rendimiento y las características que ofrece una máquina virtual? Para aplicaciones orientadas al rendimiento, uno termina escribiendo código nativo y envolviéndolo con JNI,
Entonces, ¿por qué google eligió esta pila en particular?
- Núcleo basado en el brazo (comprensible, ARM es el mejor para dispositivos móviles)
- Linux (fuente abierta)
- Java VM (Mi pregunta)
EDITAR: Sé que Java - la ejecución de JVM está a la par con las aplicaciones de C ++ en mi servidor, pero no en Android. Con respecto a Android, este no es el caso: como una cuestión de mi experiencia, un código de C ++ envuelto con JNI corre mucho más rápido que el código de Java (nota que incluso he comprobado con el mismo código exacto de un bloque estático en Java) estaré de acuerdo con su respuesta en cualquier otra plataforma.
Creo que la clave es no pensar en Java VM en el mismo sentido en que piensas en la virtualización de Destkop o Servidor: son muy diferentes. En el nivel más básico, Java VM (en este caso Dalvik) es simplemente una capa de traducción entre el bytecode generado por el "compilador" en el código máquina nativo. Es una máquina virtual, pero no tiene la misma sobrecarga que, digamos, ejecutar Ubuntu en VirtualBox.
La máquina virtual Dalvik usa su propio código de bytes, no el bytecode de Java. Está diseñado para ser muy rápido (en términos relativos). Creo que la parte "VM" de su título es un poco de una pista falsa, ya que las personas tienden a suponer que será "lento" sin importar qué. Lo dijiste tú mismo, estás trabajando con una "plataforma de recursos limitados": esa es probablemente la causa principal del bajo rendimiento, mucho más que la VM Dalvik.
Descargo de responsabilidad: no soy un experto en Dalvik o Android de ninguna manera, forma o forma. Sin embargo, parece que las personas tienden a hacer muchas suposiciones sobre Android basadas en ideas como "usa una VM" y "escribes aplicaciones en Java", sin buscar en la plataforma más allá de eso.
Vea este video para obtener más información de la que probablemente nunca quiso saber sobre Dalvik VM Internals (de Google I / O 2008).
Se ha comprobado (no siempre) que las aplicaciones Java se ejecutan tan rápido y sin problemas como las aplicaciones escritas en idiomas como c, c ++, etc. Consulte esta referencia , consulte los archivos PDF. Mucha gente dice que java y vm son lentos sin muchas pruebas o detalles, y esta referencia entra en detalle
Java es un lenguaje ampliamente conocido y es fácil de aprender. poniendo el SDK y las herramientas de Android en manos de todas estas personas que saben que Java ya permite que el mercado de Android tenga un gran potencial de proporcionar a sus usuarios una gran cantidad de aplicaciones.
descargo de responsabilidad: no soy un experto en este asunto, solo mis 2 centavos