¿Por qué Google eligió Java para el sistema operativo Android?

Pregunta completa

¿Por qué Google eligió Java para el sistema operativo Android y no para el lenguaje X ?

Donde X sería uno de los siguientes:

  • Python versión 2.7 o versión 3
    • Que es igualmente potente como Java
    • Tiene un montón de útiles bibliotecas de terceros
    • Es más rápido de desarrollar gracias a su naturaleza dinámica
  • C / C ++ u ObjC
    • Que son más difíciles de desarrollar en
    • Correr más rápido gracias a menos gastos generales
    • Requeriría hardware menos robusto, especialmente RAM
    • Son igualmente robustos como Java, pero son más propensos a los fallos de toda la aplicación cuando sólo falla un módulo

Y así. Mi principal preocupación cuando hice esta pregunta era por qué Java y no Python. Puedo agregar otros elementos (idiomas) de comparación más adelante si alguien más está interesado también.

Info: No soy un desarrollador completo.

EDIT Yo era muy consciente de que mi pregunta iba a ser encontrada con algo de oposición y golpear, por eso dije que no soy un desarrollador completo. Tengo mis opiniones personales para apoyarme y sólo eso, pero aún así, todavía tengo grandes respuestas. Entiendo ahora, sí, Dalvik VM ejecuta bytecodes de Java en dispositivos ARM, pero lo diferente es que Java de cualquier otra especificación de Oracle / Sun Java, no lo sé. He estado jugando con Java y Python y escribí al menos un programa útil tanto en GUIs (Swing como en PySide) y al menos en una biblioteca de terceros usada. El orden en que lo hice fue Java, luego Python, que me hizo darme cuenta de cuánto más rápido era escribir todo desde cero en Python que en Java. Incluso los paquetes parecían mucho más fáciles de administrar que la forma de Java de importar paquetes (gracias a Dios por Eclipse y unos cuantos clics intuitivos) … y entonces, ¿qué tan complejas serían las aplicaciones incrustadas que necesitaría tener un cuidado especial para la comprobación de tipos y las pruebas unitarias (Y afaik, pruebas de unidad se supone que es un deber hoy en día para cualquier desarrollador serio) … pero de todos modos, gracias por las respuestas hasta ahora. Es un proceso de aprendizaje. 😉

Según Google:

Hemos pasado por un montón de [alternativas a Java], y creo que todos chupar. Llegamos a la conclusión de que tenemos que negociar una licencia para Java en los términos que necesitamos. Fuente

No es un motivo particularmente descriptivo, pero es tan bueno como usted obtendrá de Google, me imagino.

  • Google, como empresa, usa mucho Java. Las funciones de búsqueda están escritas en Java. Por lo que puedo decir desde el exterior, Google le gusta Java.

  • Para la mayoría de las tareas, Java es más rápido que Python. Prefiero trabajar en Python, y sé escribir Python razonablemente eficiente, y sí PyPy realmente está sacudiendo las cosas, pero Google necesitaba proporcionar una experiencia ágil en procesadores telefónicos relativamente poco potentes por lo que probablemente no consideraban a Python un contendiente.

  • Java, al igual que Python, proporciona una gran cantidad de aislamiento de los detalles del hardware subyacente. Creo que todos los teléfonos Android están basados ​​en ARM, pero en teoría se puede hacer un teléfono Android basado en un chip x86 o algo completamente diferente, y mientras hagas un buen trabajo de portar la VM Dalvik, tu código se ejecutará. (Aparte de las aplicaciones que tienen código ARM nativo compilado en, por supuesto.)

A Google le gusta el lenguaje Java, pero eligieron escribir su propia VM ("Dalvik") en lugar de autorizar la máquina virtual Java. Java compilado puede ser traducido directamente a los bytecodes de Dalvik. (Oracle demandó a Google por esto.) Oracle perdió la demanda.

  • ¿Cómo transmitir los datos de los sensores en tiempo real de Android a la computadora?
  • ¿Lanzar la aplicación android desde la secuencia de comandos de SL4A?
  • Kivy y buildozer "Permiso denegado"
  • Kivy: icono de notificación de multiplataforma
  • Ejecución de hello.py desde un proceso Android
  • ¿Cuáles son los pasos que debo seguir para poder escribir y editar programas de python en mi teléfono Android?
  • Análisis del archivo de manifiesto de Android para buscar la etiqueta uses-permission usando python
  • Ejecución de un teléfono Android como un servidor web estable (para una secuencia de comandos CGI de Python)
  • Problemas con la conexión Bluetooth de Android
  • Diferencia entre Kivy y Java para aplicaciones Android
  • Cómo configurar el directorio temporal al crear cyanogenmod
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.