1 Введение в компьютерную платформу Android Компьютеры становятся все более «персональными»



Скачать 83.66 Kb.
Pdf просмотр
Дата08.11.2016
Размер83.66 Kb.
Просмотров459
Скачиваний0

1
Введение
в компьютерную
платформу Android
Компьютеры становятся все более «персональными», возможности доступа к ним в любое время и из любого места все время расширяются. В авангарде этого про- цесса находятся мобильные устройства, которые трансформируются в компьютер- ные платформы. Мобильные телефоны уже давно используются не только для разговоров — с их помощью можно за определенный период времени передать данные и видео. Мобильные устройства стали выполнять такой широкий спектр компьютерных задач общего профиля, что именно такие устройства могут стать новым поколением персональных компьютеров (ПК). Кроме того, даже ожидается, что некоторые производители традиционных моделей ПК — в частности, ASUS,
HP и Dell — будут делать устройства, многие конструктивные параметры которых будут основаны на ОС Android. Фронт, на котором разворачивается борьба между операционными системами, вычислительными платформами, языками програм- мирования и средами разработки, смещается в сторону мобильных устройств.
Скоро в IT-индустрии ожидается быстрое наращивание темпов и объемов про-
IT-индустрии ожидается быстрое наращивание темпов и объемов про-
-индустрии ожидается быстрое наращивание темпов и объемов про- граммирования для мобильных устройств, так как у все большего количества приложений появляются мобильные аналоги. Чтобы вы не стояли в стороне от этой тенденции, мы расскажем, как применять Java для написания программ, ра-
Java для написания программ, ра- для написания программ, ра- ботающих на платформе Google Android (http://developer.android.com/index.html), свободной платформе для разработки мобильных приложений. Мы воодушевлены потенциалом Android, поскольку это очень продвинутая платформа, на которой применяется ряд новых парадигм дизайна фреймворка (даже с учетом ограничений, с которыми сопряжена работа на мобильной платформе).
В этой главе будет сделан обзор Android и его комплекта для разработки про-
Android и его комплекта для разработки про- и его комплекта для разработки про- грамм (SDK). Мы рассмотрим основные пакеты, кратко расскажем, каким темам будут посвящены следующие главы, объясним, как можно извлечь пользу из ис- ходного кода Android, и особо подчеркнем преимущества программирования для платформы Android.
Новая платформа для нового
персонального компьютера
Тот факт, что выделенные устройства, такие как мобильные телефоны, станут в один ряд с другими маститыми платформами общего назначения (рис. 1.1), не-

25
Новая платформа для нового персонального компьютера мало озадачивает программистов. Эта новая тенденция открывает доступ к мобиль- ным устройствам для традиционных языков программирования, благодаря чему диапазон применения мобильных приложений и их доля на рынке растут.
Рис. 1.1. Мобильное устройство — это новый ПК
Платформа Android реализует идею адаптации программ общего назначения к мобильным устройствам. Это многосторонняя платформа, представляющая собой программный стек операционной системы на основе Linux, предназначенный для управления устройствами, памятью и процессами. В библиотеках Android содер-
Android содер- содер- жатся функции, связанные с телефонией, видео, графикой, программированием пользовательских интерфейсов и некоторыми другими возможностями мобильно- го устройства.
ПРИМеЧАНИе
Хотя платформа Android и предназначена для разработки под мобильные устройства, она обла- дает качествами полноценного фреймворка для локального компьютера. Google позволяет писать для этого фреймворка программы на Java, предоставляя разработчикам комплект инструментов
(Software Development Kit) под названием Android SDK. если вы работаете с этим инструментарием, то у вас почти не возникает ощущения, что вы создаете программу для мобильного устройства, так как вам открыт доступ к большинству библиотек классов, используемых на локальном компью- тере или сервере, в том числе к реляционной базе данных.
Комплект Android SDK поддерживает большинство функций платформы Java
Standard Edition (Java SE), кроме абстрактного оконного интерфейса (Abstract
Window Toolkit, AWT) и Swing. Вместо AWT и Swing в Android применяется соб-
AWT) и Swing. Вместо AWT и Swing в Android применяется соб-
) и Swing. Вместо AWT и Swing в Android применяется соб-
Swing. Вместо AWT и Swing в Android применяется соб-
. Вместо AWT и Swing в Android применяется соб-
AWT и Swing в Android применяется соб- и Swing в Android применяется соб-
Swing в Android применяется соб- в Android применяется соб-
Android применяется соб- применяется соб- ственный расширенный современный фреймворк пользовательского интерфейса.
Поскольку вы пишете приложения на Java, вам может понадобиться виртуальная машина Java (Java Virtual Machine, JVM), которая отвечает за интерпретацию ис-
Java (Java Virtual Machine, JVM), которая отвечает за интерпретацию ис-
(Java Virtual Machine, JVM), которая отвечает за интерпретацию ис-
JVM), которая отвечает за интерпретацию ис-
), которая отвечает за интерпретацию ис- полняемого байт-кода Java. Обычно JVM обеспечивает необходимую оптимизацию, чтобы помочь Java достичь уровней производительности, сравнимых с аналогич-
Java достичь уровней производительности, сравнимых с аналогич- достичь уровней производительности, сравнимых с аналогич- ными уровнями транслируемых языков — таких как С и С++. В Android предлага-
Android предлага- предлага- ется собственный оптимизированный вариант JVM для исполнения скомпилиро-
JVM для исполнения скомпилиро- для исполнения скомпилиро- ванных файлов классов Java. Это делается, чтобы преодолеть ограничения, которые

26
Глава 1. Введение в компьютерную платформу Android свойственны для мобильных устройств, в частности связанные с памятью, скоро- стью работы процессора и мощностью. Эта виртуальная машина называется Dal-
Dal- vik VM. Мы подробно рассмотрим ее в разделе «Глубокий анализ Dalvik VM» этой главы.
Понятность и простота языка Java, усиленная обширной библиотекой классов
Android, превращает Android в конкурентоспособную платформу для написания программ.
На рис. 1.2 сделан обзор программного стека Android (мы рассмотрим его по- дробнее в разделе «Программный стек Android» этой главы).
Рис. 1.2. Схематическое представление программного стека Android
История Android
Как Android появился в сфере операционных систем для мобильных устройств?
В мобильных телефонах используется целый ряд операционных систем — например,
Symbian OS, Microsoft Windows Mobile, Mobile Linux, iPhone OS (на базе Mac OS X),

27
История Android
Moblin (от Intel) и большое количество других патентованных операционных си-
(от Intel) и большое количество других патентованных операционных си-
Intel) и большое количество других патентованных операционных си-
) и большое количество других патентованных операционных си- стем. Но пока еще ни одна из ОС не стала стандартом де-факто. Современные интерфейсы прикладного программирования (API) и среды для разработки мо-
API) и среды для разработки мо-
) и среды для разработки мо- бильных приложений имеют слишком много ограничений и, кажется, сильно уступают аналогичным фреймворкам для локальных компьютеров. И вот в этой сфере появляется Google. Платформа Android выглядит многообещающе — для нее характерны и открытость, и доступность, ее код распространяется свободно, а фреймворк разработки отличается высоким техническим уровнем.
Google приобрела стартап Android Inc. в 200� году, чтобы приступить к разра- приобрела стартап Android Inc. в 200� году, чтобы приступить к разра-
Android Inc. в 200� году, чтобы приступить к разра-
Inc. в 200� году, чтобы приступить к разра-
Inc. в 200� году, чтобы приступить к разра-
. в 200� году, чтобы приступить к разра- ботке платформы Android (рис. 1.3). Ведущими фигурами в Android Inc. были Энди
Рубин (Andy Rubin), Рич Майнер (Rich Miner), Ник Сиэрс (Nick Sears) и Крис
Уайт (Chris White).
Рис. 1.3. Хронология развития Android
В конце 2007 года группа лидирующих компаний, работающих в области мо- бильной связи, сплотилась вокруг платформы Android, сформировав Open Handset
Alliance (http://www.openhandsetalliance.com). Некоторыми из наиболее известных членов альянса являются:
Sprint Nextel;

T-Mobile;

Motorola;

Samsung;

Sony Ericsson;

Toshiba;

Vodafone;

Google;

Intel;

Texas Instruments.


28
Глава 1. Введение в компьютерную платформу Android
Одной из целей альянса является ускоренное внедрение инноваций и улучше- ние отклика на нужды потребителя — и первым значительным результатом работы альянса стала платформа Android. Она была разработана для удовлетворения по-
Android. Она была разработана для удовлетворения по-
. Она была разработана для удовлетворения по- требностей операторов мобильной связи, производителей мобильных устройств и разработчиков программ. Члены альянса приняли решение предоставить значи- тельный объем интеллектуальной собственности по свободной лицензии Apache, версия 2.0
ПРИМеЧАНИе
Производители мобильных устройств не должны платить никаких лицензионных взносов за уста- новку Android на свои телефоны или другие устройства.
Сначала инструментарий Android SDK был выпущен в ноябре 2007 года как предварительный вариант. В сентябре 2008 компания T-Mobile анонсировала вы-
T-Mobile анонсировала вы-
-Mobile анонсировала вы-
Mobile анонсировала вы- анонсировала вы- ход T-Mobile G1, первого смартфона, работающего на платформе Android. Всего через несколько дней Google анонсировала выход Android SDK Release Candidate 1.0.
В октябре 2008 года Google открыла доступ к исходному коду платформы Android в соответствии со свободной лицензией Apache.
Когда Android вышла в свет, одной из основных целей для ее архитектуры было обеспечить возможность взаимодействия приложений и использования компонен- тов одних приложений другими. Такое повторное применение касалось не только служб, но и данных, а также пользовательского интерфейса (UI). В результате платформа Android включила в себя некоторые архитектурные характеристики, которые позволили воплотить такую открытость в реальности. Некоторые из этих характеристик будут подробно рассмотрены в главе 3.
Android быстро привлекла к себе внимание, так как в ней имелись возможности, позволявшие в полной мере использовать модель облачных вычислений, которые применяются на веб-ресурсах, и этот опыт был усовершенствован при помощи локальных хранилищ данных, расположенных на самом мобильном устройстве.
Поддержка реляционной базы данных на мобильных устройствах с Android также посодействовала быстрому признанию этой операционной системы.
В начале 2008 года Google выпустила мобильное устройство под названием
Android Dev Phone 1, на котором можно было использовать программы Android, находясь вне зоны действия какой-либо мобильной сети. Это устройство (стоившее около $400) должно было позволить разработчикам проводить эксперименты с на- стоящими устройствами, на которых Android можно было использовать, не заклю-
Android можно было использовать, не заклю- можно было использовать, не заклю- чая никаких договоров. Примерно в то же время Google выпустила исправленную версию ОС под номером 1.1, которая была полностью основана на версии 1.0.
В версиях 1.0 и 1.1 Android не поддерживала виртуальную клавиатуру, требовалось устройство, на котором были бы настоящие клавиши. Эта проблема была устра- нена в апреле 2009 года, когда вышел комплект SDK 1.�, в котором появились и другие возможности, например продвинутые функции записи медиаданных, виджеты и живые каталоги (живые каталоги будут рассмотрены в главе 12, а вид- жеты — в главе 13).
В сентябре 2009 вышла версия Android 1.6, а через месяц за ней последовал
Android 2.0, поддержавший бурные продажи устройств Android в рождественский

29
Глубокий анализ Dalvik VM
сезон 2009 года. В этом релизе появились улучшенные поисковые возможности и функция преобразования текста в речь. (О синтезаторах речи мы поговорим в главе 1�, а о поиске в Android — в главе 14.) В этом релизе появилась также поддержка управления жестами и функция мультитач. Эти вопросы рассмотрены в главе 16.
Android 2.0 поддерживает HTML �, благодаря чему в нем появляются интерес-
2.0 поддерживает HTML �, благодаря чему в нем появляются интерес-
HTML �, благодаря чему в нем появляются интерес-
�, благодаря чему в нем появляются интерес- ные функции. Новые возможности программирования описаны в главе 17, где мы рассмотрим Titanium Mobile. Каждый день появляются все новые приложения для
Android, а также независимые онлайновые хранилища приложений. Эти хранили-
, а также независимые онлайновые хранилища приложений. Эти хранили- ща приложений, а также управляемый Google онлайн-сервис Android Market, описаны в главе 18. В главе 19 мы проанализируем, насколько сильны позиции
Android в сфере мобильных устройств.
Глубокий анализ Dalvik VM
В ходе работы с Android специалисты Google много внимания уделили возмож-
Android специалисты Google много внимания уделили возмож- специалисты Google много внимания уделили возмож-
Google много внимания уделили возмож- много внимания уделили возмож- ностям оптимизации дизайна маломощных мобильных устройств. Мобильные устройства отстают от локальных компьютеров в области памяти и скорости об- работки информации на восемь-десять лет. Вычислительные возможности мобиль- ных устройств также ограниченны; общая оперативная память мобильного устрой- ства может составлять всего 64 Мбайт, а пространство, на котором можно разместить приложения, может быть и того меньше — около 20 Мбайт.
В результате эксплуатационные требования к мобильным устройствам ужесто- чаются, заставляя разработчиков оптимизировать все, что только можно. Если просмотреть список пакетов для Android, становится понятно, что все они являют-
Android, становится понятно, что все они являют-
, становится понятно, что все они являют- ся полнофункциональными, с широкими возможностями. По данным Google, эти системные библиотеки используют от 10 до 20 Мбайт памяти, даже при применении оптимизированной виртуальной машины Java.
По этим причинам Google пришлось во многих отношениях переработать стан-
Google пришлось во многих отношениях переработать стан- пришлось во многих отношениях переработать стан- дартную версию JVM. (Основным специалистом Google, отвечающим за новую версию JVM является Дэн Борнштейн (Dan Bornstein), написавший виртуаль-
JVM является Дэн Борнштейн (Dan Bornstein), написавший виртуаль- является Дэн Борнштейн (Dan Bornstein), написавший виртуаль- ную машину Dalvik VM; Дальвик — это небольшой город на севере Исландии.)
Во-первых, Dalvik VM использует сгенерированные Java файлы классов и комби-
Dalvik VM использует сгенерированные Java файлы классов и комби- использует сгенерированные Java файлы классов и комби-
Java файлы классов и комби- файлы классов и комби- нирует их в один или несколько исполняемых файлов Dalvik (DEX). Машина повторно использует повторяющуюся информацию из нескольких файлов классов, эффективно снижая потребность в пространстве и занимает (без архивации) впо- ловину меньше места, чем обычный файл JAR. Например, файл DEX мобильного браузера, используемого в Android, имеет размер около 200 Кбайт, а аналогичный файл JAR без архивации занимает около �00 Кбайт. Файл DEX программы- будильника занимает �0 Кбайт, а версия JAR — без малого в два раза больше.
Во-вторых, Google тонко настроила в Dalvik VM процесс сборки мусора (garbage collection), но в ранних версиях было решено обойтись без динамического компи-
), но в ранних версиях было решено обойтись без динамического компи- лятора (JIT). Насколько можно судить, в коде версии 2.0 содержатся все необхо-
JIT). Насколько можно судить, в коде версии 2.0 содержатся все необхо-
). Насколько можно судить, в коде версии 2.0 содержатся все необхо- димые источники для компилятора JIT, но в окончательной версии эти источники неактивированы. Ожидается, что они появятся в следующих релизах. Такой выбор

30
Глава 1. Введение в компьютерную платформу Android оправдан, так как многие корневые библиотеки Android, в том числе графические, написаны на С и C++. Например, графические интерфейсы прикладного програм-
C++. Например, графические интерфейсы прикладного програм-
++. Например, графические интерфейсы прикладного програм- мирования для Java являются тонкими классами-обертками, в которых заключен нативный код, использующий собственный интерфейс Java (Java Native Interface).
Подобным образом в Android предоставляется оптимизированная нативная библиотека на базе C для доступа к базе данных S�Lite, но эта библиотека ин-
C для доступа к базе данных S�Lite, но эта библиотека ин- для доступа к базе данных S�Lite, но эта библиотека ин-
S�Lite, но эта библиотека ин-
, но эта библиотека ин- капсулирована в высокоуровневом интерфейсе прикладного программирования
(API) для Java. Поскольку большая часть корневого кода написана на С и С++, специалисты Google сочли, что компилирование JIT не очень повлияет на работу системы.
Наконец, в Dalvik VM используется иной вид генерирования ассемблерного кода, в ходе которого в качестве основных элементов хранения данных использу- ются реестры, а не стек. Таким образом, Google рассчитывает сократить количество команд на 30 %. Следует отметить, что конечный исполняемый код в Android, по-
Android, по-
, по- лучаемый после обработки Dalvik VM, основан не на байт-коде Java, а на файлах
DEX. Это означает, что вы не сможете непосредственно выполнять байт-код Java; вам придется запустить файлы классов Java, а затем преобразовать их в готовые связываемые файлы DEX.
Такое настойчивое стремление оптимизировать эксплуатационные характе- ристики наблюдается во всех частях инструментария для разработки в Android.
В частности, в Android SDK для определения пользовательских интерфейсов широко применяется XML. Но весь этот XML скомпилирован в двоичные фай-
XML. Но весь этот XML скомпилирован в двоичные фай-
. Но весь этот XML скомпилирован в двоичные фай-
XML скомпилирован в двоичные фай- скомпилирован в двоичные фай- лы, которые затем становятся резидентными файлами мобильных устройств.
В Android предусмотрены специальные механизмы для использования XML- данных. Поскольку мы рассматриваем вопросы дизайна Android, нам необходимо ответить на вопрос: чем похожи и чем различаются Android и платформа Java Micro
Edition (Java ME)?
Сравнение Android и Java ME
Как мы уже увидели, в Android используется комплексный, целенаправленный и сфокусированный подход к созданию мобильной платформы, а для этого не- достаточно обычных решений, основанных на JVM. В Android все, что вам нуж- но, — операционная система, драйверы устройств, библиотеки ядра, собственный интерфейс Java, оптимизированная версия Dalvik VM и среда разработки Java — находится в одном пакете. Разработчик может быть уверен, что при разработке нового приложения все основные библиотеки будут на мобильном устройстве.
Такой комплексный подход отличается от других решений, используемых в программировании для мобильных устройств, например от Java ME. Кратко рас-
Java ME. Кратко рас-
. Кратко рас- смотрим Java ME, а потом сравним оба подхода. На рис. 1.4 показана доступность
Java для различных конфигураций вычислительных машин. Стандартная версия платформы Java (Java SE) подходит для персональных компьютеров и рабочих станций. Корпоративная версия платформы Java (Java EE) разработана для сер- веров.

31
Сравнение Android и Java ME
Рис. 1.4. Конфигурация Java для различных вычислительных машин
Микроверсия платформы Java (Java ME) является сокращенной и предназна-
Java (Java ME) является сокращенной и предназна-
(Java ME) является сокращенной и предназна-
Java ME) является сокращенной и предназна-
) является сокращенной и предназна- чена для небольших устройств. Java ME доступна в виде двух вариантов конфигу-
Java ME доступна в виде двух вариантов конфигу- доступна в виде двух вариантов конфигу- рации. Первый вариант называется «конфигурация коммуникационных устройств»
(Connected Device Configuration, CDC). Java ME для CDC содержит упрощенную версию Java SE — с меньшим количеством пакетов, с меньшим количеством клас-
Java SE — с меньшим количеством пакетов, с меньшим количеством клас-
— с меньшим количеством пакетов, с меньшим количеством клас- сов в них, и даже с меньшим количеством методов и полей в этих классах. Для обо- рудования и устройств, имеющих дополнительные ограничения, в Java применя-
Java применя- применя- ется конфигурация для устройств с ограниченными ресурсами ( Connected Limited
Device Configuration, CLDC). Существующие интерфейсы прикладного програм-
CLDC). Существующие интерфейсы прикладного програм-
). Существующие интерфейсы прикладного програм- мирования для различных конфигураций Java сравниваются на рис. 1.�.
Любые дополнительные пакеты, устанавливаемые «поверх» основного интер- фейса прикладного программирования с конфигурацией CDC или CLDC, счи-
CDC или CLDC, счи- или CLDC, счи-
CLDC, счи-
, счи- таются «профилями», которые стандартизируются процессом JSR (запрос на спецификацию Java). Каждый заданный профиль предоставляет разработчику дополнительный набор интерфейсов прикладного программирования.
ВНИМАНИе
И CDLC, и CDC могут поддерживать некоторые интерфейсы прикладного программирования Java, не входящие в Java SE, а их классы могут не начинаться с пространства имен *java. Следовательно, если у вас есть программа на Java, работающая на локальном компьютере, она может не сработать на устройствах, на которых поддерживается только микроверсия.



Поделитесь с Вашими друзьями:


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал