Jump to content

Сравнение Java и Android API

В этой статье сравниваются интерфейсы программирования приложений (API) и виртуальные машины (VM) языка программирования Java и операционной системы Android .

Хотя большинство приложений Android написаны на Java-подобном языке, существуют некоторые различия между Java API и Android API, и Android запускает байт-код Java не с помощью традиционной виртуальной машины Java (JVM), а с помощью виртуальной машины Dalvik в более старые версии Android и среда выполнения Android (ART) в более новых версиях, которые компилируют тот же код, который запускает Dalvik, в исполняемые файлы в исполняемом и связываемом формате (ELF), содержащие машинный код .

Байт-код Java в файлах Java Archive ( JAR ) не выполняется устройствами Android. Вместо этого классы Java компилируются в собственный формат байт-кода и запускаются на Dalvik (или его скомпилированной версии с более новым ART), специализированной виртуальной машине (VM), разработанной для Android. В отличие от виртуальных машин Java, которые представляют собой стековые машины (архитектура на основе стека), виртуальная машина Dalvik представляет собой регистровую машину (архитектура на основе регистров).

Dalvik имеет некоторые особенности, которые отличают его от других стандартных виртуальных машин: [1]

  • Виртуальная машина была спроектирована так, чтобы использовать меньше места.
  • Пул констант был изменен для использования только 32-битных индексов для упрощения интерпретатора .
  • Стандартный байт-код Java выполняет 8-битные инструкции стека. Локальные переменные должны быть скопированы в стек операндов или из него с помощью отдельных инструкций. Вместо этого Dalvik использует собственный 16-битный набор команд, который работает непосредственно с локальными переменными. Локальная переменная обычно выбирается с помощью 4-битного поля виртуального регистра .

Поскольку байт-код, загружаемый виртуальной машиной Dalvik, не является байт-кодом Java, и из-за способа загрузки классов Dalvik невозможно загружать пакеты библиотеки в виде файлов jar . Для загрузки библиотек Android необходимо использовать другую процедуру, в которой содержимое базового файла dex Перед загрузкой файл необходимо скопировать в частную внутреннюю память приложения. [2]

Свойства системы

[ редактировать ]

Как и в случае с Java SE классом System, Андроид System класс позволяет получать свойства системы. Однако некоторые обязательные свойства, определенные с помощью виртуальной машины Java, не имеют значения или имеют другое значение в Android. Например:

  • java.version Свойство возвращает 0, поскольку оно не используется в Android.
  • java.specification.version неизменно возвращает 0,9 независимо от используемой версии Android.
  • java.class.version неизменно возвращает 50 независимо от используемой версии Android.
  • user.dir имеет другое значение на Android.
  • user.home и user.name свойства не существуют на Android.

Библиотека классов

[ редактировать ]

Текущие версии Android используют новейший язык Java и его библиотеки (но не платформы полного графического пользовательского интерфейса (GUI), а не реализацию Apache Harmony Java, которая использовалась в более старых версиях. Исходный код Java 8 , который работает в последней версии Android, можно заставить работать и в более старых версиях Android. [3]

пакет java.lang

[ редактировать ]

По умолчанию выходной поток по умолчанию System.out и System.err ничего не выводить, [4] и разработчикам рекомендуется использовать Log класс, который регистрирует строки в инструменте LogCat. [5] Это изменилось, по крайней мере, с HoneyComb , и теперь они также выводят данные в консоль журнала.

Библиотека графики и виджетов

[ редактировать ]

Android не использует набор инструментов Abstract Window или библиотеку Swing . Пользовательские интерфейсы создаются с использованием объектов View. Android использует структуру, похожую на Swing, основанную на Views, а не JComponentс. Однако виджеты Android не являются JavaBeans : приложение Android Context должен быть предоставлен виджету при создании.

Смотри и чувствуй

[ редактировать ]

Библиотека виджетов Android не поддерживает подключаемую архитектуру внешнего вида . Внешний вид виджетов Android должен быть встроен в виджеты. Однако существуют ограниченные возможности установки стилей и тем для приложения. [6]

Менеджер по макетам

[ редактировать ]

В отличие от Swing, где менеджеры макетов можно применять к любому виджету-контейнеру , поведение макета Android закодировано в контейнерах. [7]

пакет java.beans

[ редактировать ]

Android включает лишь небольшую часть java.beans упаковка ( PropertyChangeEvent и родственные классы).

См. также

[ редактировать ]
  1. ^ Роуз, Джон (31 мая 2008 г.). «с Android и Dalvik в Google I/O» . Архивировано из оригинала 4 июня 2008 г. Проверено 8 июня 2008 г.
  2. ^ Фред Чанг (28 июля 2011 г.). «Загрузка пользовательских классов в Dalvik» . Google . Архивировано из оригинала 18 февраля 2014 г. Проверено 27 ноября 2011 г.
  3. ^ «Используйте функции и API языка Java 8» . Android-разработчики . Проверено 23 января 2021 г.
  4. ^ «Мост отладки Android» . Google . Проверено 31 мая 2009 г. По умолчанию система Android отправляет выходные данные stdout и stderr (System.out и System.err) в /dev/null.
  5. ^ «Чтение и запись журналов» . Google . Архивировано из оригинала 22 ноября 2011 г. Проверено 27 ноября 2011 г.
  6. ^ «Применение стилей и тем» . Google . Архивировано из оригинала 28 марта 2014 г. Проверено 3 сентября 2011 г.
  7. ^ «Общие объекты макета» . Google . Проверено 3 сентября 2011 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 10741f13e3f0b3f7a2e26713a24ca9b5__1683004500
URL1:https://arc.ask3.ru/arc/aa/10/b5/10741f13e3f0b3f7a2e26713a24ca9b5.html
Заголовок, (Title) документа по адресу, URL1:
Comparison of Java and Android API - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)