Por qué android se construye en una máquina virtual (Dalvik)
Tengo curiosidad por saber qué hizo google elegir desarrollar el marco de android en VM java.
En el proceso de escribir código para android durante casi 6 meses, he observado que ejecutar código en una máquina virtual en una plataforma limitada de recursos es muy lento. Hay un montón de gastos generales involucrados. Sé que java es portátil, etc, ¿no es posible en absoluto utilizar lenguajes nativos y obtener rendimiento y características ofrecidas por una máquina virtual? Para aplicaciones orientadas al rendimiento uno todavía termina escribiendo código nativo y envolverlo con JNI,
- Android TableLayout vs GridView vs Otros?
- NestedScrollView y CoordinatorLayout. Problema en desplazamiento
- RemoveAllViews no quitar vistas
- Cajón de navegación coexistente y diseño de panel deslizante
- Anular el tamaño de fuente de la configuración del sistema de Android
Entonces, ¿por qué Google eligió esta pila en particular:
- Base de brazo basado (comprensible, ARM es el mejor para dispositivos móviles)
- Linux (código abierto)
- Java VM (Mi pregunta)
EDIT: Sé java – JVM ejecutar a la par con aplicaciones C ++ en mi servidor, pero no en android. Con respecto a Android no es el caso – Como cuestión de mi experiencia, un código C + + envuelto con JNI corre mucho más rápido que el código java (nota que he comprobado con el mismo código de un bloque estático en java) Estoy de acuerdo con su Responder en cualquier otra plataforma.
- Eliminar TextView predeterminado del nuevo diseño de la actividad
- Cómo dibujar círculo con particionado en android?
- Android animateLayoutChanges y flicker anclado fab
- AppBarLayout con elevación = 0dp no responde a los eventos táctiles (haga clic)
- Correctamente desplazando un EditText a la vista cuando se enfoca
- ¿Cómo puedo implementar soft keyboard especial
- Libros sobre Android Diseño de interfaces de usuario
- Disposición de Android con ListView y botones
La VM de Dalvik utiliza su propio bytecode, no el bytecode de Java. Está diseñado para ser muy rápido (relativamente hablando). Creo que la parte "VM" de su título es un poco de un arenque rojo, ya que la gente tiende a asumir que será "lento" no importa qué. Lo has dicho tú mismo, estás trabajando con una "plataforma de recursos limitados", que es probablemente tu principal causa de lento rendimiento, mucho más que la VM de Dalvik.
Exención de responsabilidad: No soy un experto en Dalvik o Android de ninguna manera, forma o forma. Sin embargo, parece que la gente puede tender a hacer un montón de suposiciones sobre Android basadas en ideas como "usa una VM" y "escribe aplicaciones en Java", sin mirar a la plataforma más allá de eso.
Vea este video para obtener más información de lo que probablemente nunca quiso saber sobre la VM Interna de Dalvik (de Google I / O 2008).
1) Java es, hasta donde yo sé, el idioma más universalmente enseñado en universidades e incluso en escuelas secundarias / equivalentes. Se utiliza ampliamente en el mundo profesional y tiene una gran cantidad de codebase detrás de él para ayudar a los desarrolladores a crear más aplicaciones de calidad, más rápido.
2) La sobrecarga no es tan grande en comparación con código nativo, especialmente con un código bien diseñado que es JIT optimizado y supervisado por un gc cada vez más bien diseñado.
Realmente, creo que estas dos razones por sí solas pueden justificar por qué Java fue elegido como el idioma principal para ser apoyado en Android.
Creo que la clave, es no pensar en la VM Java en el mismo sentido que usted piensa de Destkop o la virtualización del servidor – son muy diferentes. En el nivel más básico, la VM Java (en este caso Dalvik) es simplemente una capa de traducción entre el bytecode generado por el "compilador" en código máquina nativo. Es una máquina virtual – pero no tiene la misma sobrecarga que decir, ejecutando Ubuntu en VirtualBox.
Las aplicaciones Java han demostrado (no siempre) funcionar tan rápido y sin problemas como las aplicaciones escritas en idiomas como c, c ++, etc. Vea esta referencia , eche un vistazo a los PDF. Mucha gente dice que java y el vm son lentos sin realmente mucha prueba o detalles – y esta referencia va en algún detalle
Java es un lenguaje ampliamente conocido y es fácil de recoger. Poniendo el sdk android y las herramientas en manos de todas estas personas que saben que Java ya permite que el mercado androide tenga un gran potencial de abastecer a sus usuarios con una gran cantidad de aplicaciones.
Exención de responsabilidad: no soy un experto en este asunto, sólo mis 2 centavos
- Por qué el método onPause se llama inmediatamente después onCreate
- Texto oscuro sobre fondo oscuro en AlertDialog con Theme.Sherlock.Light