Si Windows puede ejecutar código nativo, ¿por qué Android no puede ejecutar código nativo?

Android ejecuta código nativo, si las aplicaciones en cuestión lo usan.

Si te refieres a todo lo demás? Porque los frameworks centrales de Android (el equivalente de las DLL en \ Windows \ System32) también están escritos en Java. Simplemente es mucho más fácil hacer que el código de la aplicación Java interactúe con el código central de Java.

Si se está preguntando, “¿por qué Java?”, Porque cuando se estaba desarrollando Android inicialmente, el líder de la industria de teléfonos inteligentes era BlackBerry. Y BlackBerry también estaba basado en Java. La elección de Java fue facilitar a los desarrolladores de BlackBerry portar su código a Android (ya que pueden mantenerlo todo en Java, solo una parte del código tendría que reescribirse, y esto ahorra tiempo).

El iPhone solo llevaba unos diez meses cuando se lanzó Android 1.0, y BlackBerry seguía siendo la plataforma dominante del sistema operativo. Un nuevo diseño desde cero no solo llevaría mucho más tiempo (¡años!), Sino que en ese momento se consideraba innecesario ya que BlackBerry todavía era el rey de la posada. No pensaste que el trackball del T-Mobile G1 se incluyó como un simple guiño a BlackBerry, ¿verdad?

Android puede ejecutar aplicaciones nativas, para las cuales existe un kit de herramientas de desarrollo nativo NDK. Es solo que el SDK de Java es el mejor para la mayoría de los proyectos y se usa más ampliamente. Para la mayoría de las aplicaciones no hay una razón para usar el NDK sobre el SDK de Java, ya que las diferencias de rendimiento son generalmente insignificantes y muchos prefieren Java a C ++.