Почему Google выбрал Java для операционной системы Android?

Полный вопрос

Почему Google выбрал Java для операционной системы Android, а не для языка X?

Где X будет одним из следующих:

  • Python версии 2.7 или версии 3
    • который столь же мощный, как Java
    • имеет много полезных сторонних библиотек
    • быстрее развивается благодаря динамической природе
  • C/С++ или ObjC
    • которые сложнее разрабатывать, но
    • работает быстрее благодаря меньшему накладному расходам
    • потребуется меньше оборудования, особенно RAM
    • столь же надежны, как и Java, но более склонны к сбоям приложений, когда только один модуль выходит из строя

И так далее. Моя основная проблема, когда я задавал этот вопрос, - это почему Java, а не Python. Я могу добавить другие элементы (языки) сравнения позже, если кто-то еще заинтересован.

Информация: Я не полный разработчик.

EDIT Я очень хорошо знал, что мой вопрос будет встречен с некоторой оппозицией и трепкой, поэтому я сказал, что я не полный разработчик. У меня есть мои личные мнения, чтобы поддержать меня и только это, но даже при этом у меня все еще есть отличные ответы. Теперь я понимаю, да, Dalvik VM запускает байт-коды Java на устройствах ARM, но насколько отличается эта Java от любых других спецификаций Oracle/Sun Java, я не знаю. Я играю как с Java, так и с Python и написал хотя бы одну полезную программу в обоих + GUI (Swing и PySide) и по крайней мере одну стороннюю библиотеку. Приказ, который я сделал, это Java, а затем Python, который заставил меня понять, насколько быстрее мне было писать все с нуля в Python, чем в Java. Даже пакету было проще управлять менеджером, чем Java-процесс импорта пакетов (слава богу за Eclipse и несколько интуитивных кликов)... а затем, насколько сложными будут встроенные приложения, вам нужно будет проявлять особую осторожность при проверке типов и модульных тестах (и afaik, модульные тесты должны быть обязательными для любого серьезного разработчика)... но в любом случае, спасибо за ответы до сих пор. Это учебный процесс.;)

Ответы

Ответ 1

Согласно Google:

Мы пережили кучу [альтернатив Java] и думаем, что все они сосать. Мы заключаем, что нам нужно согласовать лицензию на Java в соответствии с которые нам нужны. Источник

Это не особенно очевиден, почему, но это примерно так же хорошо, как вы получите от Google, я бы подумал.

Ответ 2

  • Google, как компания, много использует Java. Функции поиска написаны на Java. Насколько я могу судить извне, Google любит Java.

  • Для большинства задач Java быстрее, чем Python. Я предпочел бы работать на Python, и я знаю, как писать достаточно эффективный Python, и да PyPy действительно потрясает все, но Google должен обеспечить быстрый опыт работы на относительно несовершенных телефонных процессорах, чтобы они, вероятно, не рассматривали Python соперника.

  • Java, как и Python, обеспечивает большую изоляцию от деталей основного оборудования. Я думаю, что все телефоны на базе Android основаны на ARM, но теоретически вы можете сделать Android-телефон на базе чипа x86 или что-то совершенно другое, и пока вы хорошо переносите виртуальную машину Dalvik, ваш код будет работать. (Помимо приложений, в которых, конечно, скомпилирован собственный код ARM.)

Google любит язык Java, но они решили написать свою собственную виртуальную машину (Dalvik), а не лицензировать виртуальную машину Java. Скомпилированная Java может быть непосредственно переведена на байт-коды Dalvik. (Oracle подала иск Google за это. Oracle потеряла иск.)