Android: мобильный Linux от Google

На модерации Отложенный

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

Идея превращения исконно настольного Linux в подстилку для запуска приложений на смартфонах давно созревала в недрах большинства производителей сотовых телефонов. Ведь даже за далекий от совершенства Symbian просили денег, и при том немалых (за 2007 год одна Nokia выплатила компании Symbian 250 миллионов долларов в виде лицензионных отчислений), а полностью свободный и отшлифованный как бриллиант Linux так и продолжал «тлеть» на стойках серверов. И ведь вопрос не в том, как перенести ядро Linux в карманный компьютер, а в том, как на его основе создать по-настоящему работоспособную среду с графическим интерфейсом, понимающую сенсорные экраны, корректно взаимодействующую с начинкой телефона и знающую обо всех его премудростях. Причем сделать это так, чтобы новая платформа смогла составить конкуренцию уже укрепившимся на рынке игрокам.

Эксперименты начались давно, и некоторые производители уже успели запустить целые линейки устройств «с пингвином в брюхе». Особенно на этом поприще отличилась Motorola, выпустившая первый в мире серийный Linux-смартфон еще в 2003 году и до сих пор контролирующая 90% данного рынка. Другие всемирноизвестные бренды тоже отваживались на эксперименты с открытой ОС, но дальше одной-двух моделей дело не шло. Мобильный Linux так и не смог пересечь границ Китая, в котором «пингвинофоны» были достаточно распространены благодаря множеству небольших компаний, выпускающих недорогие «трубки». Из-за стремления каждого производителя протолкнуть свой вариант платформы «Linux для смартфонов» оказался разбитым на множество несовместимых версий, что только отталкивало независимых разработчиков ПО, а хорошее производительное устройство превращалось в простую «звонилку» со стандартным набором несложных программ.

Анархия не могла продолжаться бесконечно, и на свет появился фонд LiMo, собравший вокруг себя всех именитых игроков телефонной индустрии и учрежденный для создания полностью открытой платформы на базе ядра Linux и других свободных компонентов. Разработки упорно продолжались и уже начинали приносить плоды в виде первых версий прошивок, как вдруг неожиданно для всех Google анонсирует Android.

Но вызванный ажиотаж был вполне предсказуем. Когда настолько крупная и успешная компания как Google вступает на новый и, главное, совершенно несвойственный ей рынок, фурора просто не избежать. Примерно так же было воспринято в свое время сообщение Microsoft о начале разработки собственного «инновационного» языка C#. Тогда вся Сеть, все IT-форумы быстро обросли множеством сообщений о языке программирования, который изменит мир или, напротив, приведет к кончине IT. Не стал исключением и Android. Развернувшаяся вокруг него шумиха, может, и не превзошла ожидания Google, но была поистине массовой. Интернет в один день был заполонен сообщениями на всех хоть как-то связанных с IT ресурсах о новой, почти волшебной платформе для смартфонов. Впоследствии, конечно, страсти поутихли, но ожидания первого аппарата с новой ОС на борту становятся все более волнующими и животрепещущими.

Кто на свете всех умнее

Google пускает Android в свободное плавание просто потому, что не собирается рассматривать его как прямой способ заработка. Мобильная ОС — мостик, необходимый для осуществления замыслов интернет-гиганта: существенное пополнение базы пользователей собственных сервисов и, как следствие, увеличивающиеся доходы от рекламы.

Руководство компании отлично понимает современный мир программной начинки смартфонов, в котором царят разрозненность платформ, неудобство разработки ПО, преобладание проприетарных платформ и далекие от идеала средства работы во Всемирной паутине. Ведь несмотря на то что любой современный телефон (не говоря уже о смартфонах) способен предоставить его владельцу достаточно удобный и простой способ выхода и в интернет (настройка GPRS или EDGE тривиальна и зачастую сводится к обмену двумя-тремя SMS-сообщениями с оператором мобильной связи), лишь 13% американцев пользуются этой возможностью хотя бы раз в месяц (информация Yankee Group на 2007 год). Виной тому удручающее неудобство доступных средств просмотра веб-страниц, превращающих навигацию по Сети в сущее мучение. И получается, что трехмиллиардная армия обладателей мобильных устройств оказывается потерянной для интернет-компаний и, в первую очередь, для самой Google, которая уже давно предлагает различные сервисы мобильным пользователям.

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

Рождение андроида и его начинка

Начало грандиозному проекту было положено еще в 2002 году, когда основатели Google Лари Пейдж и Сергей Брин прослушали в Стэнфордском университете лекцию Энди Рубина, посвященную разработке ПО для планшета T-Mobile Sidekick. Заинтересовавшись его наработками, Google в 2005 году без особой шумихи купила созданный им стартап Android, а его самого сделала директором по мобильным платформам. Следующие два года о проекте ничего не было слышно, однако многие пронырливые журналисты предрекали скорый выпуск пресловутого GPhone (телефона от Google). И только 5 ноября 2007 года, после официального анонса Android, стало ясно, над чем же на самом деле работала Google. Сюрпризом стал не только сам Android, но и созданный специально для его продвижения альянс OHA (Open Handset Alliance), в который вошли HTC, LG, Motorola, Samsung, Intel, Nvidia, Texas Instruments, eBay и другие, менее известные, компании (всего на момент создания их было 34). Именно членам альянса OHA пока открыт доступ к исходным текстам Android, всем остальным придется либо лично обращаться к руководству Google, либо довольствоваться эмулятором, входящим в состав SDK, выпущенного 12 ноября. Публичный же релиз Android состоится только после начала продаж первого устройства на его основе. Пока же серийно производимых девайсов на базе Android не существует (они должны появится в ближайшие месяцы).

Сразу стоит сказать, что архитектурно Android в некоторых местах напоминает другую, не получившую распространения, мобильную ОС Inferno. В основе платформы лежит модифицированное и подогнанное под начинку смартфонов ядро Linux. Выше располагаются уровень библиотек и небольшой набор стандартных UNIX-команд. На самой вершине находится виртуальная машина Dalvik, в которой выполняется все прикладное ПО, включая графический интерфейс.

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

стандартная библиотека языка Си, выдернутая из какого-то варианта BSD и, по словам Google, оптимизированная для работы во встраиваемом оборудовании. Что это значит на деле и чем она отличается от обычной libc, не совсем понятно;
набор библиотек для работы с мультимедиа, основанный на OpenCORE (разработка PacketVideo, входящего в альянс OHA). На начальном этапе заявлена поддержка форматов MPEG-4, H.264, MP3, AAC, AMR, JPEG, PNG, GIF;
менеджер поверхностей Surface Manager, управляющий доступом к подсистеме отображения 2D- и 3D-графических слоев;
веб-движок LibWebCore, основанный на WebKit, который также встроен в iPhone;
2D-движок SGL;
3D-библиотека, реализующая OpenGL ES 1.0 API. Заявлена поддержка аппаратного ускорения;
растеризатор шрифтов FreeType;
база данных SQLite.

Набор UNIX-команд, располагающихся в каталогах /system/bin и /system/sbin, в основном включает стандартные команды POSIX, упакованные в один исполняемый файл toolbox и вызываемые из него через жесткие ссылки (по всей видимости, это просто переименованный и урезанный busybox — www.busybox.net).

\"

Инициализация ОС проходит по стандартной, но несколько видоизмененной для Linux схеме, через запуск команды init и старт инициализационного скрипта /etc/init.rc. Cкрипт, в свою очередь, проводит предварительную подготовку системы к работе и запускает команду /system/bin/runtime, которая приводит в действие графическую оболочку и подготавливает к исполнению заранее определенный набор прикладного ПО, складированного в каталоге /system/app. Прикладное графическое ПО исполняет виртуальная машина Dalvik, которая хоть и является виртуальной машиной Java, существенно от нее отличается.

Dalvik относится к классу регистро-ориентированных машин, идеально подходящих для работы на процессорах RISC-архитектуры, к которым относятся и процессоры ARM, применяемые в мобильном секторе. Разработчики Android намеренно отказались от стандартной в данной сфере Java ME из-за ее ограниченности и нежелания платить лицензионные отчисления компании Sun. Вместо этого они создали полноценную Java-среду с оптимизированной виртуальной машиной (представители Google заявляют, что Dalvik позволила им снизить затраты памяти на исполнение байткода и оптимизировать среду для одновременного запуска нескольких экземпляров виртуальной машины) и средой исполнения, позаимствованной из Apache Harmony — опять же по лицензионным соображениям. Созданные с помощью стандартного Java-компилятора class-файлы просто преобразуются в байткод Dalvik (*.dex) транслятором dx, входящим в состав SDK.

Изнутри работающий Android выглядит как набор виртуальных машин Dalvik, в каждой из которых исполняется прикладная задача. Управление памятью и менеджмент процессов выполняет Linux-ядро ветки 2.6. В качестве файловой системы выбрана YAFFS, максимально минимизирующая число перезаписей данных (флеш-память, как известно, со временем «изнашивается»). Android лишен X-сервера, графическая оболочка использует FrameBuffer Device (/dev/graphics/fb0) для доступа к видеопамяти.

Без наличия подробных спецификаций ОС трудно говорить о ее надежности и безопасности. Но при правильной реализации среды исполнения (на что можно рассчитывать, зная Google), в которой отдельные виртуальные машины максимально изолированы друг от друга, а соприкосновение исполняемых программ происходит только через посылку сообщений, Android окажется весьма стойким. В то же время драйверы всегда являлись слабым местом монолитных ядер, так что Linux может подвести.

Что касается чисто визуального оформления, то здесь Android никаких сюрпризов не преподносит. С первого взгляда бросается в глаза подозрительное сходство с Apple iPhone. Видимо, «гугловцы» просто начали с наиболее удачного интерфейса, потому что в базовом комплекте присутствует и другой вариант UI. А шведская компания TAT (The Astonishing Tribe, член OHA), специализирующаяся на создании пользовательских интерфейсов, разработала еще несколько вариантов оформления. Сама Google не против кардинальных изменений интерфейса, если того захочет производитель устройства, и даже настаивает на этом, но просит компании не дробить ОС, внося изменения только в том случае, если они не затрагивают ABI (то есть сохраняют совместимость ПО с модифицированной версией Android).

Реальные прототипы устройств с работающим Android внутри публика смогла увидеть только на мероприятии World Mobile Congress в феврале этого года, когда свои наработки, так или иначе связанные с данной ОС, показали компании ARM, Freescale Semiconductor, NEC Electronics, Qualcomm, Texas Instruments и E28. К сожалению, тем, кто хочет заполучить Android, скорее всего придется ждать до начала Рождества, когда смартфон HTC Dream поступит в продажу. Кроме HTC, о своем намерении выпустить «андроидофоны» уже высказались такие компании, как T-Mobile, LG, Motorola и Samsung, но их серийное производство начнется опять же не раньше конца 2008 года. Кроме того, Koolu не так давно объявила о своих планах на выпуск свободного смартфона Neo FreeRunner с предустановленным Android вместо стандартного для данной модели Openmoko.

Говоря о будущем, стоит вспомнить прошлое и подивиться находчивости отдельных личностей, которые, не имея доступа к полноценной версии ОС, смогли запустить ее на серийно выпускающихся устройствах Nokia N810 и Sharp Zaurus. Причем команда, портировавшая ОС на Zaurus, высказала мнение, что Android сможет работать на любой «железке», оснащенной процессором ARMv5TE.

Критика

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

Распространенная претензия к Android касается виртуальной машины Java, которая заработала репутацию «прожорливого монстра», особо жадного до процессора и оперативной памяти. Не имея доступа к реальным устройствам, многие антагонисты Java поставили на Android клеймо «тормоза», быстро разряжающего аккумулятор. Однако, вопреки всем предсказаниям скептиков, он показал отличные скоростные характеристики и умеренный уровень потребления памяти. Так, на демо-ролике от BBC, в котором с прототипом нового устройства работал сам Энди Рубин, игра Quake легко выдавала 30 кадров в секунду, а сенсорный экран молниеносно реагировал на нажатия (при тактовой частоте процессора в 300 МГц). В январе специалисты уже упоминавшейся A La Mobile заставили Android работать на коммуникаторе HTC Qtek 9090 2004 года выпуска, и вновь ОС показала высокую скорость работы. Еще более интересно то, что на довольно слабом мобильном телефоне от компании E28, оснащенном процессором TI OMAP 730 с тактовой частотой 200 МГц и 64 мегабайтами оперативной памяти, Android работал без каких-либо проблем.

С другой стороны, идея использовать Java критиковалась и за то, что виртуальная машина слишком сильно абстрагирует программу от реального оборудования и, в отличие от того же LiMo, не дает разработчикам полной свободы действий. В этом конечно же есть смысл, но не стоит забывать, что ниже виртуальной машины лежит хоть и урезанный, но самый настоящий Linux runtime, без проблем исполняющий бинарный код. К тому же бросать такие обвинения в адрес свободной ОС сродни критике Linux за неудобство KDE.

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

Конкуренты

Пока еще рано говорить о том, сможет ли детище Google составить конкуренцию другим игрокам рынка мобильных ОС, но все задатки для этого у нее имеются. Благодаря ядру Linux Android уже сейчас более совершенен, чем SymbianOS. Его интерфейс более интуитивен и понятен, чем Windows Mobile. Язык Java и заранее опубликованный SDK делают Android гораздо более простым и привлекательным для сторонних разработчиков, чем любая другая ОС. Свободный путь распространения сделает телефоны с предустановленным Android более дешевыми и привлекательными для конечных пользователей.

С другой стороны, SymbianOS и Windows Mobile уже давно правят рынком и просто так от них никто не откажется. Symbian завоевала себе сильного друга в лице Nokia, а Windows представляет пользователям привычный интерфейс настольного ПК и очень распространена на территории США. Чтобы потеснить соперников, Android должен обладать чем-то по-настоящему уникальным, таким, чего потребитель не сможет найти в других телефонах. И если в борьбе против Microsoft этим чем-то может стать свободный доступ к исходным кодам, то в отношении SymbianOS нужно нечто другое (Nokia обещала «освободить» SymbianOS уже к концу текущего года).

Но даже если Android сможет отвоевать солидный кусок рынка, ему придется соревноваться со своим же «собратом», продвигаемым фондом LiMo. И здесь могут возникнуть серьезные трудности. LiMo Foundation насчитывает около 60 солидных игроков мобильного рынка, разрабатываемая им Linux-платформа пользуется большим доверием, она дает независимым разработчикам возможность создавать приложения практически на любом языке, и на нее достаточно легко портировать существующее ПО.

Говоря о еще более далекой перспективе, стоит вспомнить заявление Microsoft о возможном применении операционной системы Midori в мобильном секторе. А это уже не шутки. Midori берет свое начало в проекте исследовательской ОС Syngularity, написанной на модификации языка C# и рассчитанной на применение в сервере, где безопасность и стабильность имеют первостепенное значение. Это современная и весьма технологичная ОС, так что Google придется сильно постараться, чтобы оказать достойную конкуренцию ребятам из Microsoft Research.