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

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

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

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

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

У Dalvik есть некоторые особенности, которые отличают его от других стандартных ВМ:

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

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

Содержание
  • 1 Система properties
  • 2 Библиотека классов
    • 2.1 Пакет java.lang
    • 2.2 Библиотека графики и виджетов
      • 2.2.1 Внешний вид
      • 2.2.2 Диспетчер компоновки
    • 2.3 Пакет java.beans
  • 3 См. Также
  • 4 Ссылки
Свойства системы

Как и в случае с Java SE class System , Класс Android 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)), а не реализацию Java Apache Harmony, которая использовалась в более ранних версиях. Исходный код Java 8, который работает в последней версии Android, можно заставить работать в более старых версиях Android.

пакет java.lang

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

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

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

Внешний вид

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

Менеджер компоновки

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

пакет java.beans

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

См. Также
Ссылки
Последняя правка сделана 2021-05-15 08:01:18
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте