Мобильное приложение это разработанное для конкретной платформы программное обеспечение, предназначенное для работы на смартфонах, планшетах и других мобильных устройствах.
Общие сведения о системе Android
Проектирование операционной системы Android было начато в 2003-ем году малоизвестной фирмой Android Inc. В 2005-ом году эту компанию купила корпорация Google, и вероятнее всего, что базовые характеристики архитектурной организации Android именно тогда и были заданы. Естественно, что это является заслугой не только фирмы Android Inc, поскольку архитектурная направленность и финансовые возможности Google оказались решающими факторами при формировании архитектуры Android.
Операционная система Android обладает следующими, весьма различными и сильно отделёнными друг от друга, уровнями:
- Первым уровнем является заложенный в основу операционной системы Android модифицированный и усечённый вариант Linux.
- Выше уровня Linux расположен уровень инфраструктуры приложения, который содержит виртуальную машину Dalvik, веб-браузер, базу данных SQLite, некие инфраструктурные «костыли» и Java API.
- Третьим является уровень написанных в Google Android-приложений. Строго говоря, они выступают как расширения уровня инфраструктуры, так как разработчикам разрешается использовать данные приложения или их фрагменты в качестве строительных блоков для собственных разработок.
Технические особенности и архитектура мобильного приложения на Android
Сначала следует рассмотреть описанные выше слои более детально, начиная с уровня Linux. У начинающих проектировщиков, работающих в молодой компании, которым поручено разработать операционную систему для нового типа устройств, имеется два пути, а именно:
- Воплотить в жизнь собственные идеи, начиная всё с нуля.
- Использовать уже существующую версию операционной системы и реализовать её адаптацию под заданные свои устройства.
Реализация с нуля всегда является заманчивой для программистов, однако это не всегда может считаться практичным вариантом. К примеру, применение уже готового ядра Linux способно существенно уменьшить стоимость разработки. В аналогичной ситуации компания Apple приняла решение реализовать Mac OS на базе Free BSD. А Android Inc просто решила использовать Linux в качестве базы для Android. Исходники как Free BSD, так и Linux, находились в свободном доступе и предоставляли собой отличную базу для любых проектов, как от Apple. Так и от Google.
Но в те времена запуск стандартной версии Linux на мобильном устройстве был невозможен (кстати, сегодня это уже возможно), поскольку мобильные устройства обладали слишком малыми объёмами оперативной и энергонезависимой памяти. Производительность мобильных процессоров была существенно меньше, чем у компьютерных процессоров, где использовалась система Linux. В результате проектировщики Android приняли решение о минимизации системных требований Linux.
Если рассмотреть архитектурную организацию операционной системы Linux на высоком уровне, то эта система является по сути комбинацией ядра, являющегося обязательной основой, и совокупности иных, необязательных составляющих. Возможен даже запуск одного ядра, без использования других компонентов. Google был вынужден в любом варианте применить ядро Linux в качестве основной части операционной системы Android. Помимо этого, был также проанализирован набор необязательных компонентов и из них были выбраны самое необходимые. Проектировщики системы Android подвергли также модификации и ядро Linux, установив поддержку модулей, которые используются в мобильных устройствах и обычно недоступны на компьютерах. Выбор системы Linux как базы повлиял на все аспекты операционной системы Android. Вариант сборки Android, по существу, может считаться вариантом процесса сборки Linux.
Далее следует рассмотреть уровень инфраструктуры приложения. Существует определённое сходство операционных систем Apple iOS и Android ОС, однако присутствуют и существенные отличия между архитектурными решениями на инфраструктурном уровне обеих систем. Apple использует Objective-C в качестве языка программирования и среды исполнения приложения iOS. Objective-C является естественным выбором для операционной системы, в основе которой заложен Free BSD. Можно представить Objective-C как стандартный язык C++, добавляющий специальные лингвистические построения.
Приложения на Android в этом плане имеют значительные отличия. Они сформированы на языке Java, который представляет собой совсем другую технологию, чем C++ (хотя синтаксис и является наследством от C++). Приложения Android не сформированы на C++ по той простой причине, что присутствует необходимость одному и тому же приложению работать на различном аппаратном обеспечении. Данная проблема характерна только для операционной системы Android. А, например, у Apple эта проблема отсутствует, поскольку iOS работает только на собственном фирменном оборудовании, и корпорация Apple способна полностью контролировать весь процесс.
Для системы Android всё строго наоборот, то есть, Google не может контролировать компании, выпускающие аппаратные средства. К примеру, операционная система Android может работать на процессорах с архитектурой x86, ARM и Atom, а на бинарном уровне данные архитектуры являются несовместимыми. Для того чтобы обеспечить работу одного и того же приложения на различном аппаратном обеспечении, компания Google применила контейнер-ориентированную архитектуру (container-based architecture). В данной архитектурной организации двоичный код исполняется программным контейнером, и он изолирован от особенностей конкретного аппаратного обеспечения. Примерами также могут служить языки программирования Java и C#. В этих языках двоичный код также не имеет зависимости от особенностей аппаратного обеспечения и исполняется виртуальной машиной.