Почему android использует java

Почему android использует java

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Почему именно Java?

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

Большое количество разработчиков уже хорошо владеют Java.

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

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

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

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

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

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

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

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

Читайте также:  Обновить скайп до последней версии андроид

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

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

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

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

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

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

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

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

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

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

9 ответов:

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

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

Он работает в виртуальной машине, так что не надо перекомпилировать для каждого телефона там и легко

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

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

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

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

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

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

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

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

Читайте также:  Зайцев нет для андроид не могу найти

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

есть большое количество разработчиков, уже владеющих Ява.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Почему Android использует Java?

ОК, это действительно нужно спросить у кого-то из Google, но мне просто нужны другие мнения.

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

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

Читайте также:  Как ускорить скорость работы андроида

Java — это известный язык, разработчики знают его и не должны его изучать.

Сложнее застрелить себя с Java, чем с помощью кода C/С++, поскольку он не имеет арифметики указателей

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

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

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

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

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

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

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

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

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

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

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

Существует большое количество разработчиков, уже владеющих Java.

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

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

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

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

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

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

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

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

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

Источник

Оцените статью