1

Тема: Операционная система Android

Давно хотел ознакомиться с программированием под Android. Время наконец выдалось на этих выходных. Читаю «Android для разработчиков» Дейтела. Прочитал пока немного. Разработка на примерах приложений — не лучший способ для анализа архитектуры ОС, но кое-что интересное всё же есть:

  • Экранные компоненты Android реализуют векторный интерфейс (по всей видимости, как и в других библиотеках GUI Java)

  • Программы Android используют (логически) виртуальное бесфайловое хранилище ресурсов на основе XML и вложенных в APK файлов ресурсов, которое можно рассматривать как простую иерархическую БД.

Из прочитанного пока непонятно, насколько глубоко в ОС встроена объектно-ориентированная парадигма и перечисленные принципы организации приложений. Как бы то ни было, многое реализуется средствами IDE (в книге рассматривается Android Studio на основе IntelliJ IDEA). Без IDE программирование возможно, но было бы сильно затруднено.

Если сравнивать с Кантором, Кантор не отрицает наличие IDE, но архитектурные акценты смещены в сторону языка и компилятора, позволяющего программировать без IDE с меньшими усилиями, чем на Java под Android.

2

Re: Операционная система Android

В приложениях Android нет функции main()! Нет и умолчательного консольного ввода-вывода. Наконец-то! В принципе, понятно, что консоль в графической ОС для мобильного устройства — как пятая нога собаке. Таким образом, есть еще одна операционная система помимо KolibriOS, ориентированная исключительно на GUI.

Вместо main() программы Android экспортируют несколько интерфейсов, отвечающих за активности (включая сохранение данных между переключениями задач — то есть, полноценную конфигурацию, передаваемую каждый раз при входе в программу, вместо PSP в DOS или его невидимого аналога в Windows), плюс еще какие-то интерфейсы, не запомнил. Всё это соответствует концепции «программа есть разновидность библиотеки», активно продвигаемую мной в разработке Кантора.

Библиотеки в Windows

Концепция обязательного main() настолько въелась в архитектуру традиционных ОС, что даже библиотеки имеют эту процедуру. В Windows — с передаваемыми сообщениями DLL_PROCESS_ATTACH и DLL_PROCESS_DETACH, хотя казалось бы... С точки зрения Android и Кантора такая организация кажется ублюдочной, не побоюсь этого слова.

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

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

Возможность отнести Android к объектно-ориентированным ОС пока требует изучения. Надеюсь, будет уточняться по мере чтения книги.

3

Re: Операционная система Android

Попытка изучить архитектуру Android на программировании на примерах оказалась провальной. Прочитана только разработка первой программы (Tips Calculator), дальше изучение не пошло. Примеры из книги нужно изучать за компьютером, самостоятельно щупая все особенности. В такой среде как IDEA всё будет наглядно и логично.

Изучение архитектуры Android откладывается до нахождения более подходящей книги.