Android в облаках

Cloud computing и программная среда Android

Android, операционная система с открытым исходным кодом, взяла мир штурмом, открыв доступ к сложным приложениям облачной обработки данных (cloud computing) всем пользователям независимо от местоположения. Спроектированная для достижения высокой эффективности на мобильных устройствах, подобных смартфону T-Mobile G1, по своей сути Android - Linux-подобная система, имеющая в своей программной архитектуре несколько слоев, позволяющих создавать защищенные приложения облачной обработки данных. Android покоряет новые вершины на пути развития мобильных устройств и выводит мобильную обработку данных на новый уровень.

Билл Циммерли, специалист в области инженерии знаний, Рязанский государственный радиотехнический университет

Билл Циммерли (Bill Zimmerly) является специалистом в области инженерии знаний, а также программистом языков низкого уровня. Он имеет большой опыт работы с различными версиями программного обеспечения UNIX® и Microsoft® Windows®. Билл с огромным энтузиазмом и удовольствием занимается созданием новых технологий и рассказывает о них в своих статьях. Живет он в деревушке Хиллсборо, Миссури, где может наслаждаться чистым воздухом и прекрасной природой. Кроме того, неподалеку находятся несколько винных заводов. Связаться с ним можно по адресу электронной почты: bill@zimmerly.com.



05.02.2010

В индустрии, полной изощренных метафор, никто не удивляется появлению еще одной, пытающейся привлечь внимание инновационного бизнеса и ИТ-специалистов. Одна из таких метафор Cloud computing, пришедшая в наш мир как гром с ясного неба. Но что именно это значит?

Облака состоят из огромного количества частиц водяного пара. Облака не имеют централизованного управления и движутся туда, куда дует ветер. Интернет, с его множеством клиентских компьютеров и серверов, служащих различным целям и по-разному управляемым, напоминает облако. В сочетании с революцией в области беспроводной передачи данных, которую принесли нам операторы мобильной связи, это приводит к закономерному результату - все мы оказываемся в невидимом "облаке" вычислительных мощностей.

В начале эры компьютеризации существовало четкое разделение между основными функциональными частями компьютера:

  • Устройства ввода/вывода (I/O), обеспечивающие человеко-машинный интерфейс
  • Центральный процессор (CPU)
  • Энергозависимая память (RAM)
  • Постоянная память

Первые три части отвечают за компьютерные вычисления. Четвертая часть, отвечающая за хранение ценных данных, изменилась с приходом Cloud computing наиболее радикально. Данные, которые необходимо хранить, располагаются в энергонезависимой памяти, - таким образом они защищены от потери электропитания, случайного или предумышленного. Как правило, в качестве таких запоминающих устройств используются жесткие диски, но это также могут быть полупроводниковые накопители, например, SD-карты, или почти уже устаревшие магнитные ленты. Однако подобные способы хранения данных имеют свои ограничения.

Время шло, технологии развивались, появились компьютерные сети, с помощью которых необходимые данные можно хранить централизованно на узле, доступ к которому имеет множество небольших терминалов, и регулярно дублироваться с помощью резервных копий (что является необходимой процедурой в ИТ). Эта модель, известная как мэйнфрейм, имеет множество преимуществ — например, снижение нагрузки на каждый отдельный терминал. Небольшие офисы, с помощью средств чуть сложнее обычного терминала (клавиатура, мышь, дисплей и ПК), получили возможность доступа к гигабайтам корпоративных данных и вычислительной мощи больших мэйнфреймов, используя минимум пространства — при наличии связующей сетевой инфраструктуры.

Следующее глобальное изменение произошло с появлением метасети, известной как Интернет, в которой колоссальные компьютерные системы (локальные сети) стали доступны огромному количеству крошечных терминалов из любой точки мира, где можно установить спутниковую тарелку. Из-за своей "беспроводной" и "дистанционной" природы эта конфигурация получила название облака (cloud).

Здесь в игру вступили карманные компьютеры, сотовые телефоны и смартфоны. Миниатюризация компьютеров довела их до размеров, умещающихся в ладони - формфактора, который мы все хорошо знаем и любим. Сегодня небольшие терминалы в руках миллионов людей производят и потребляют информацию в колоссальных объемах.

Во второй половине девяностых в "облаке" доминировали электронная почта и WWW. Большинство людей взаимодействовали с ними через Web-браузер, и в их понятии Интернет был относительно прост. С появлением коммерчески успешных сервисов Yahoo!, Google и других терабайтные серверы и сетевые соединения заменили локальные жесткие диски в качестве предпочитаемых энергонезависимых устройств хранения данных. В точном соответствии с предсказаниями дальновидных прогнозистов вычислительное «облако» стало коммунальным ресурсом – как водопровод, телефонная связь и электричество. Использование сотовой сети в качестве основного источника доступа к Интернету позволило "облаку" вырасти до состояния, в котором миллионы небольших персональных устройств являются основным инструментом для отображения данных, находящихся на этих серверах.

Как облака перемещаются и изменяются под действием ветра, так меняются и парадигмы, согласно которым эти устройства работают — терминалы становятся мощнее и портативнее, а серверы наращивают мощности и становятся более приспособленными для удовлетворения нужд пользователей с помощью виртуализации ПО и измерения его использования.

Компаниям больше не нужно круглосуточно поддерживать большие и дорогие серверные комплексы, потому что есть другая, более выгодная, альтернатива — аренда соответствующих служб у поставщиков, подобных Google, Amazon или IBM®. Благодаря виртуализации экземпляры приложений, запущенные в определенной среде, можно дублировать и запускать в "облаке" на серверах поставщика. Мониторинг нагрузки на такие службы дает компаниям возможность не платить "пиковые" цены за время, в которое их службы используются минимально.

Параллельно развитию технологий в области аппаратных средств развивается программное обеспечение, и в результате мы видим создание новых приложений — например, геоинформационных сервисов, позволяющих определить местоположение по ближайшей сотовой вышке или встроенному GPS-приемнику. Возникают новые рынки, которые дают возможность скачивать и пробовать полезные программы и информацию, например, Android Market или Amazon MP3 Market, где можно приобретать и скачивать музыку. Без сомнения, мы станем свидетелями дальнейшего развития этих уникальных примеров cloud computing - представьте себе, что компании смогут сортировать контактные данные по регионам, а затем автоматически отправлять свежие списки "холодных звонков" своему региональному представителю на телефон с Android, пока тот спит.

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

Архитектура Android

Прежде всего, система Android предназначена для мобильных устройств. Это означает, что наивысший приоритет отдается сохранению энергии батареи и эффективному управлению ограниченными ресурсами памяти. В системе Android можно выделить пять слоев:

  • Ядро Linux, работающее на архитектуре ARM (Acorn RISC Machine), является базой для остальных слоев. Linux - проверенная и высоконадежная технология, а семейство процессоров ARM известно своей высокой производительностью при низком энергопотреблении.
  • Набор библиотек предоставляет общий повторно используемый код низкого уровня для основных функций, таких как кодеки, позволяющие кодировать и декодировать цифровой звук и видео, функции для отображения качественной графики на маленьких дисплеях, поддержка зашифрованного трафика TCP/IP в облаке, поддержка компонентов для Web-серфинга (WebKit), функции SQL-СУБД (SQLite) и стандартная для Linux-систем функциональность библиотек C.
  • Интерпретатор байт-кода реального времени Dalvik, имеющий большое сходство с интерпретатором Java™, отличается несколькими свойствами, обеспечивающими Android уникальную безопасность и минимизацию потребления энергии. Каждое запущенное в текущий момент приложение имеет свой собственный пользовательский идентификатор и собственную копию интерпретатора, что обеспечивает строгое разграничение процессов для повышения надежности и безопасности.
  • Структура приложений Android позволяет использовать и заменять компоненты так, как вы считаете нужным. Эти интегрируемые компоненты являются высокоуровневыми Java-классами, составляющими Android API.
  • Стандартные приложения Android включают в себя браузер WebKit, календарь Google, клиент Gmail, приложение Gmaps, SMS-мессенджер и e-mail клиент. Приложения для Android написаны на Java, и вы всегда можете загрузить дополнительные приложения из магазина Android.

Далее, каждое приложение Android можно разделить на следующие функциональные модули:

  • Activities (Действия)
  • Intents (Намерения)
  • Services (Службы)
  • Security model (Модель безопасности)

Действия

Действия (Activities) - это компоненты приложения Android, расширяющие базовый класс Activity и определяющие интерфейс, в который входит Представление (View), отвечающее на различные События (Events). Если приложение состоит из трех окон (например, окно авторизации, окно отображения текста и окно просмотра файлов), каждое из них, как правило, представляется отдельным классом Activity.

Android сохраняет историю действий для каждого приложения, запущенного со стартового экрана, , и вы можете с помощью кнопки Back передвигаться назад по этой истории.

Намерения (Intents)

Намерения (Intents), подобно действиям, являются специальными классами в коде приложения, которые определяют и описывают запросы приложения на выполнение каких-либо операций. Намерения добавляют слой, позволяющий оперировать компонентами с целью их повторного использования и замещения. Например, приложение может иметь кнопку Клиенты, которая, будучи нажатой, отображает список клиентских контактов. С помощью Намерения вы можете использовать любой компонент для их отображения вместо стандартного.

В некоторых случаях это может быть очень мощным средством интеграции приложений. Например, топографическая карта в определенных случаях может быть лучше, чем изображение карты по умолчанию.

Классы наподобие BroadcastReceiver определяют код, который выполняется после возникновения внешних событий. Так можно отслеживать события типа срабатывания таймера или входящего звонка. Как правило, такой код не отображает никакого окна, но с помощью класса NotificationManager можно сообщить пользователю информацию, требующую его внимания.

Службы (Services)

Службой является приложение, запущенное в фоновом режиме и не имеющее графического интерфейса. Обычно подобные программы работают в фоне в течение долгого времени. Отличным примером является медиаплеер, проигрывающий треки из списка. Несмотря на то, что у такого приложения есть интерфейс, позволяющий пользователям составлять свои плейлисты, в процессе проигрывания песен оно может работать в автоматическом режиме службы.

Модель безопасности

Модель безопасности Android позволяет программам иметь собственную область данных. Если разработчик хочет обобществить данные между несколькими различными программами, он может использовать поставщики данных (content providers).

Пакет android.provider содержит набор классов и интерфейсов, обеспечивающих доступ к многочисленным встроенным базам данных Android. Приложения с подобными интерфейсами могут с легкостью работать с контактами, фотографиями и музыкой.

Силу модели Open Source, как и силу свободного творчества, нельзя недооценивать. Не ограниченная закрытыми API и интересами собственника, которые зачастую препятствуют прогрессу программного обеспечения, платформа Android сформировала большое и очень активное сообщество, суммарная ценность которого больше ценности его отдельных частей. Хотите придать импульс вашей карьере разработчика? Научитесь программировать для Android, и однажды вашим потенциальным рынком станут миллионы пользователей мобильных телефонов — пользователей, которые будут нуждаться в ваших программах.

Сердцем Android является ARM Linux. Одно это должно вселять уверенность в возможность быстрого роста этой платформы. Linux является быстрой и защищенной операционной системой, с которой знакомы тысячи программистов. Многие основанные на Linux системы работают без отказов на протяжении многих лет, будучи подключенными к облаку и обслуживая его запросы — и это является лучшим доказательством их надежности.


Среда разработки: Eclipse, Windows, Linux

Есть несколько вариантов выбора среды разработки для Android: для Microsoft® Windows® XP или Vista®, Macintosh OS X (V10.4.8 или более поздняя версия, только для архитектуры x86), а также Desktop Linux (предпочтительно Ubuntu). Для всех этих операционных систем можно скачать комплект программ разработчика (SDK).

Можно работать в IDE с графическим интерфейсом типа Eclipse или NetBeans от Sun Microsystems или использовать метод "настоящего программиста", пользуясь командной строкой и стандартным текстовым редактором. Выбор за вами.

Сообщество Android поддерживает обмен полезной информацией; к тому же стремятся и компании, стоящие за созданием Android — Google, HTC, T-Mobile и другие участники проекта Open Handset Alliance. Open действительно означает открытое общение между людьми (программистами, пользователями, маркетологами и т.п.), открытые протоколы и открытые API.

Однако для Anroid можно предлагать и закрытые программные продукты – выбор возможных лицензий достаточно широк. Такой подход дает возможность коммерческим компаниям не игнорировать платформу, но при этом не ограничивает выбор пользователей. В выигрыше оказываются все.


Работа с Android SDK

Первый шаг на пути создания программ для Android – скачать и установить Android SDK (см. раздел Ресурсы). Теперь вы можете программировать! Существует столько же способов начать разработку, сколько и самих разработчиков. Некоторые, включая меня, предпочитают узнать как можно больше до начала работы. Другие сразу переходят к ознакомительным примерам, содержащимся в подробной документации Android. В любом случае вы получите результат. Для начала ознакомьтесь с Android-версией типичной "Hello world"-программы (см. пример Hello Android в разделе Ресурсы).


Ресурсы для разработчика

Существует множество ресурсов для разработчиков под Android, включая несколько wiki-энциклопедий и форумы сообщества Android, а также блоги по программированию для Android. Google – основной двигатель развития Android – предоставляет разработчикам с разными талантами и умениями возможность общаться с помощью полезных форумов, известных как Google Groups.

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

Внутри облака: Взгляд в будущее

IBM активно работает над созданием двух больших центров Cloud computing в Research Triangle Park, Северная Каролина, и в Токио. Доступ к инструментам, обеспечивающим работу ваших приложений облачной обработки данных, так же прост, как посещение Web-сайта центра и изучение того, что IBM может вам предложить (см. Ресурсы).

Вы можете писать ваш код и использовать преимущества «облака», в котором резервирование и восстановление данных автоматизированы и опытные инженеры помогут реализовать любые ваши намерения. Смотрите на ваш мобильный телефон с Android как на продолжение коллективной вычислительной мощи IBM. Сидя в кофейне за чашкой любимого кофе, что бы вы хотели видеть на экране своего телефона? Графики движения финансовых средств? Данные о росте инвестиционного портфеля? Последние изображения от NASA, обработанные этой ночью с помощью программы фильтрации, запущенной на высокоскоростном сервере параллельной обработки данных? Может быть, текущие данные о землетрясении прямо из Национального центра землетрясений? Или вы просто хотите узнать, кто стал победителем чемпионата NBA? Все эти данные уже доступны, как и вычислительные мощности, позволяющие их обработать. Все, что вам необходимо - позволить этому случиться.

Время покажет, какие еще удивительные инновации ожидают нас в системах Cloud Computing в ближайшие несколько лет.

Ресурсы

Научиться

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Мобильные приложения
ArticleID=466353
ArticleTitle=Android в облаках
publish-date=02052010