WikiDer > Сравнение Java и Android API
В этой статье сравнивается интерфейсы прикладного программирования (API) и виртуальные машины (ВМ) языка программирования Ява и операционная система Android.
Хотя большинство приложений Android написано на Java-подобном языке, между Java API и Android API есть некоторые различия, и Android не запускается. Байт-код Java традиционным Виртуальная машина Java (JVM), но вместо этого Дальвик виртуальная машина в более старых версиях Android и Android Runtime (ART) в более новых версиях, которые компилируют тот же код, что и Dalvik. Исполняемый и связываемый формат (ELF) исполняемые файлы, содержащие Машинный код.
Байт-код Java в архиве Java (БАНКА) файлы не выполняются на устройствах Android. Вместо этого классы Java компилируются в собственный формат байт-кода и запускаются на Дальвик (или его скомпилированная версия с более новым ART), специализированная виртуальная машина (ВМ), разработанная для Android. В отличие от виртуальных машин Java, которые штабельные машины (архитектура на основе стека), Dalvik VM представляет собой зарегистрировать машину (регистровая архитектура).
У Dalvik есть некоторые особенности, которые отличают его от других стандартных виртуальных машин:[1]
- Виртуальная машина была спроектирована так, чтобы использовать меньше места.
- В постоянный бассейн был изменен для использования только 32-битный индексы для упрощения устный переводчик.
- Стандартный байт-код Java выполняет 8-битные инструкции стека. Локальные переменные должны копироваться в стек операндов или из него отдельными инструкциями. Вместо этого Dalvik использует свой собственный 16-битный набор инструкций, который работает непосредственно с локальными переменными. Локальная переменная обычно выбирается 4-битным виртуальный регистр поле.
Поскольку байт-код, загружаемый виртуальной машиной Dalvik, не является байт-кодом Java, и из-за того, как Dalvik загружает классы, невозможно загрузить пакеты библиотеки как файлы jar. Для загрузки библиотек Android необходимо использовать другую процедуру, в которой содержимое базового dex Перед загрузкой файл необходимо скопировать в частную внутреннюю область памяти приложения.[2]
Свойства системы
Как и в случае с Java SE учебный класс Система, Android Система класс позволяет получить свойства системы. Однако некоторые обязательные свойства, определенные с помощью виртуальной машины Java, не имеют значения или другого значения на Android. Например:
- java.versionсвойство возвращает 0, потому что оно не используется на Android.
- java.specification.versionнеизменно возвращает 0,9 независимо от используемой версии Android.
- java.class.versionнеизменно возвращает 50 независимо от используемой версии Android.
- user.dirимеет другое значение на Android.
- user.homeи- имя пользователясвойства не существуют на Android.
Библиотека классов
Текущие версии Android используют новейший язык Java и его библиотеки (но не полностью графический интерфейс пользователя (GUI) frameworks), а не Гармония Апачей Реализация Java, которую использовали более старые версии. Java 8 исходный код, который работает в последней версии Android, можно настроить для работы в более старых версиях Android[нужна цитата].
пакет java.lang
По умолчанию выходной поток по умолчанию System.out и System.err ничего не выводить,[3] и разработчикам рекомендуется использовать Бревно class, который регистрирует строки в инструменте LogCat.[4] Это изменилось по крайней мере с HoneyComb, и теперь они также выводятся в консоль журнала.
Библиотека графики и виджетов
Android не использует Набор инструментов для абстрактного окна ни Качать библиотека. Пользовательские интерфейсы построены с использованием объектов View. Android использует структуру, аналогичную Swing, основанную на Видс, а не JComponentс. Однако виджеты Android не JavaBeans: приложение для Android Контекст должен быть предоставлен виджету при создании.
Смотреть и чувствовать
Библиотека виджетов Android не поддерживает подключаемый внешний вид архитектура. Внешний вид виджетов Android должен быть встроен в виджеты. Однако существует ограниченная возможность устанавливать стили и темы для приложения.[5]
Менеджер по верстке
В отличие от Swing, где менеджеры по расположению может применяться к любому виджет контейнера, Поведение макета Android кодируется в контейнерах.[6]
пакет java.beans
Android включает лишь небольшую часть java.beans упаковка (PropertyChangeEvent и родственные классы).
Смотрите также
Рекомендации
- ^ Роуз, Джон (31.05.2008). "с Android и Dalvik в Google I / O". Архивировано из оригинал на 2008-06-04. Получено 2008-06-08.
- ^ Фред Чанг (28 июля 2011 г.). "Пользовательская загрузка классов в Dalvik". Google. Архивировано из оригинал на 2014-02-18. Получено 2011-11-27.
- ^ «Android Debug Bridge». Google. Получено 2009-05-31. По умолчанию система Android отправляет вывод stdout и stderr (System.out и System.err) в / dev / null. 
- ^ «Чтение и запись журналов». Google. Архивировано из оригинал на 2011-11-22. Получено 2011-11-27.
- ^ «Применение стилей и тем». Google. Архивировано из оригинал на 2014-03-28. Получено 2011-09-03.
- ^ «Общие объекты макета». Google. Получено 2011-09-03.
 
 