Обзор Java-интерфейсов прикладного программиста

Bionic

Bionic - библиотека стандартных вызовов языка C, распространяемая под лицензией BSD (Berkeley Software Distribution ? система распространения программного обеспечения в исходных кодах, созданная для обмена опытом между учебными заведениями) и разработанная Google для Android. В bionic отсутствуют некоторые не используемые в Android функции POSIX, доступные в полной реализации glibc.

Основные отличия bionic :

1. BSD лицензии: Android использует Linux ядро, которое находится под GNU General Public License (GPL), но Google пожелал изолировать приложения для Android от последствий GPL. GNU libc, который обычно используется с ядром Linux находится под лицензией GNU LGPL, как альтернативный uClibc.

2. малые размеры: объектный код bionic намного меньше (примерно в 2 раза), чем glibc и несколько меньше, чем uclibc.

3. bionic предназначена для процессоров c относительно низкими тактовыми частот.

4. усеченная, но эффективная реализация нитей POSIX.

Рекомендуемый способ непосредственного использования и расширения bionic это использование Android Native Development Kit.

Для прикладного программиста Android - набор интерфейсов на языке Java. Рассмотрим, как он организован. В основе набора - пакеты, входящие в стандарт языка Java, такие как java.util, java.lang, java.io. Они есть на любой платформе, где могут быть запущены java-приложения, и неспецифичны для Android. К ним примыкают расширения, которые в стандарт языка не входят, но де-факто давно являются стандартными - пакеты javax.net, javax.xml.

Также в Android включены менее распространенные расширения Java - пакет org.apache.http, самая солидная реализация протокола HTTP. Пакет org.json отвечает за сериализацию объектов JavaScript и поддержку технологии AJAX. Пакетorg.w3c.dom обеспечивает объектную модель документа HTML, а пакет org.xml.sax - работу с XML. Такой подбор компонентов свидетельствует об ориентации на веб-разработку, веб-приложения. Одновременно использование ставших классическими библиотек облегчает перенос приложений на Android.

Наконец, самым большим и интересным является набор интерфейсов, созданных специально для Android. Рассмотрим некоторые из его пакетов.

Пакеты android.view и android.widget отвечают за графический интерфейс пользователя (GUI). Они содержат набор встроенных виджетов, таких как кнопки и поля ввода, компоновки (layout) для расположения виджетов на экране, взаимодействие виджета с пользователем. С их помощью можно создать простейшее приложение для Android.

Для работы с примитивами рисования и графическими файлами предназначен пакет android.graphics. С помощьюandroid.animation можно создавать несложную анимацию. Начиная с версии Android 3.0 стала доступна мощная и универсальная система Property Animation, в более ранних версиях анимация была либо привязана к GUI, либо просто представляла собой набор кадров.

Пакет android.opengl предоставляет движок OpenGL ES 2.0, android.gesture - поддержка управления жестами на сенсорном экране, позволяет распознавать жесты и создавать новые.

Большое количество интерфейсов предназначено для коммуникации. Пакет android.net включает стеки сетевых протоколов высокого уровня, таких как HTTP и SIP, поддержку WiFi. Пакет droid.webkit - популярный движок веб-браузера, позволяет легко отображать веб-страницы в приложении. Пакеты android.bluetooth и android.nfc предоставляют стеки протоколов связи на коротких расстояниях BlueTooth.и Near Field Communication соответственно. Пакет android.telephony дает доступ к телефонной функциональности - например, информация о соте или отправка SMS. Пакет android.drm позволяет контролировать защищенныйконтент с помощью системы Digital Rights Management.

Для управления прикладными приложениями предназначен пакет android.app. Пакет android.os - Java-обертка для некоторых системных библиотек, например, для Binder. Пакет android.hardware позволяет обращаться к камере и датчикам, а пакетandroid.location предоставляет информации о географических координатах устройства, в т. ч. с помощью датчика GPS.

Пакет android.media отвечает за кодирование звуковых и видео потоков, для маленьких устройств это до сих пор вычислительно сложная задача, требующая качественной оптимизации. Пакет android.database предоставляет доступ к базам данных, включая SQLite.