Почему Android использует Java? [закрыто]

Хорошо, об этом действительно нужно спросить кого-то из Google, но я просто хочу получить другие мнения.

Даже Android поддерживает приложения с собственным кодом, основным инструментом разработки является Java. Но почему? Я имею в виду, не слишком ли медленно интерпретировать код на мобильном устройстве? Представляя Froyo, Google сказал, что новый JIT-компилятор может работать в 2-5 раз быстрее приложений. Это означает, что использование Java над собственным кодом происходит в 2 раза медленнее.

Да, я знаю, что использование приложений с управляемым кодом безопаснее с точки зрения стабильности системы, поскольку виртуальная машина лучше контролирует программу, но все же производительность падение огромно, и я не вижу смысла его использовать.

112
задан tshepang 24 November 2013 в 09:53
поделиться

9 ответов

Некоторые моменты:

  1. Java - известный язык, разработчики знают его, и ему не нужно его изучать

  2. с Java труднее застрелиться, чем с кодом C / C ++, поскольку у него нет арифметики указателей

  3. , он работает в виртуальной машине, поэтому нет необходимости перекомпилировать его для каждого телефона и легко защитить

  4. большое количество инструментов разработки для Java (см. пункт 1)

  5. несколько мобильных телефонов уже использовала Java ME, поэтому Java была известна в отрасли

  6. , разница в скорости не является проблемой для большинства приложений; если это было, вы должны кодировать на языке низкого уровня

97
ответ дан 24 November 2019 в 02:51
поделиться

На уровне байт-кода Android не использует Java. Источник - Java, но не использует JVM.

39
ответ дан 24 November 2019 в 02:51
поделиться

Собственный код не обязательно быстрее кода Java. Где данные вашего профиля, показывающие, что собственный код может работать быстрее?

Почему Java?

  • Android работает на многих различных аппаратных платформах. Вам нужно будет скомпилировать и оптимизировать собственный код для каждой из этих различных платформ, чтобы увидеть реальные преимущества.

  • Многие разработчики уже хорошо владеют Java.

  • Java имеет огромную поддержку открытого исходного кода, с множеством доступных библиотек и инструментов, облегчающих жизнь разработчикам.

  • Java защищает вас от многих проблем, присущих машинному коду, таких как утечки памяти, неправильное использование указателей и т. Д.

  • Java позволяет им создавать приложения-песочницы и создавать лучшую модель безопасности, чтобы одно плохое приложение могло ' t снять всю вашу ОС.

13
ответ дан 24 November 2019 в 02:51
поделиться

У Java есть довольно веский аргумент в пользу использования Google в Android: у нее огромная база разработчиков. Все эти разработчики (отчасти) готовы разрабатывать для своей мобильной платформы.

Имейте в виду, что технически Android не использует чистую Java.

4
ответ дан 24 November 2019 в 02:51
поделиться

Как уже упоминалось в другом месте, основная проблема заключается в том, что Android разработан как портативная ОС, чтобы работать на широкий выбор оборудования. Он также основан на структуре и языке, знакомых многим существующим мобильным разработчикам.

Наконец, я бы сказал, что это ставка на будущее - какие бы проблемы с производительностью ни существовали, они станут неактуальными по мере улучшения оборудования - в равной степени, заставляя разработчиков писать код против абстракции, Google может гораздо легче вырвать и изменить базовую ОС. , чем если бы разработчики писали код для POSIX / Unix API.

Для большинства приложений накладные расходы, связанные с использованием языка на основе виртуальной машины по сравнению с родным языком, несущественны (узким местом для приложений, использующих веб-службы, таких как Twitter, в основном, являются сети). Palm WebOS также демонстрирует это - и здесь в качестве основного языка используется JavaScript, а не Java.

Учитывая, что почти все виртуальные машины JIT компилируются до собственного кода, скорость исходного кода часто сравнима со скоростью собственного кода. Многие задержки, связанные с языками более высокого уровня, связаны не столько с накладными расходами виртуальной машины, сколько с другими факторами (сложная среда выполнения объекта, «безопасная» проверка доступа к памяти путем проверки границ и т. Д.).

Также помните, что независимо от языка, на котором написано приложение, большая часть фактической работы выполняется в API нижнего уровня. Язык верхнего уровня часто просто связывает вместе вызовы API.

Конечно, есть много исключений из этого правила - игры, аудио- и графические приложения, которые выходят за рамки возможностей телефонного оборудования. Даже на iOS разработчики часто переходят на C / C ++, чтобы ускорить работу в этих областях.

4
ответ дан 24 November 2019 в 02:51
поделиться

Новый JIT запускает приложения в 2–5 раз быстрее, чем старый dalvikVM (оба JAVA). Таким образом, сравнение - это не C с JAVA, а JIT с dalvikVM.

1
ответ дан 24 November 2019 в 02:51
поделиться

Во-первых, это то же самое, что и Windows Mobile или iPhone, инфраструктуре .net нужна собственная виртуальная машина, так как а также какао.

И даже если производительность не на высоте, потому что это интерпретация байтового кода, android привлекает все Java-сообщество в качестве потенциальных разработчиков. Больше приложений, больше клиентов и т. Д.

В заключение отметим, что производительность не так уж плоха, поэтому java используется даже на небольших устройствах (см. JavaMe).

1
ответ дан 24 November 2019 в 02:51
поделиться

Прежде всего, согласно Google, Android не использует Java. Вот почему Oracle судится с Google. Oracle утверждает, что Android нарушает некоторые технологии Java, но Google говорит, что это Dalvik.

Во-вторых, я не видел интерпретатора байт-кода Java с 1995 года.

Можете ли вы подтвердить свое предположение о производительности некоторыми реальными тестами? Масштабы ваших предположений не кажутся оправданными, учитывая неточность исходной информации, которую вы предоставляете.

6
ответ дан 24 November 2019 в 02:51
поделиться

Повышение стабильности системы очень важно для таких устройств, как мобильный телефон.

Безопасность еще важнее. Среда Android позволяет пользователям запускать полудоверенные приложения, которые могут использовать телефон действительно неприятными способами без обеспечения надежной защиты. Запуская все приложения на виртуальной машине, вы гарантируете, что ни одно приложение не сможет использовать ядро ​​ОС, если только в реализации виртуальной машины нет недостатка. Реализация виртуальной машины, в свою очередь, предположительно небольшая и имеет небольшую, четко определенную поверхность безопасности.

Возможно, самое главное, когда программы компилируются в код для виртуальной машины, их не нужно перекомпилировать для нового оборудования. Рынок телефонных чипов разнообразен и быстро меняется, так что это большое дело.

Кроме того, использование Java снижает вероятность того, что приложения, которые пишут люди, сами по себе могут быть взломаны. Никаких переполнений буфера, ошибок с указателями и т.д...

20
ответ дан 24 November 2019 в 02:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: