Эпоха EPOC
Собственно, EPOC и значит "эпоха" в сложном сокращении британских маркетологов. Эта операционная система была разработана в конце восьмидесятых исключительно для портативных устройств Psion. Одно время эти устройства более напоминали калькуляторы: программирующиеся TI, Casio или наши Б3-34. Кстати, первые PDA от Psion работали от одной батарейки типа "Крона" до девяти месяцев (думается, подобная живучесть сделала бы хитовым любой современный мини-компьютер). Сначала PDA Psion программировались на POPL – это классический вариант "польского" стекового процессора, как и в Б3.
Со временем Psion сделал продукт, больше похожий на современный субноут, – MC 400. Вообще-то он предназначался для VIP-категории пользователей и стоил около 800 фунтов. Несмотря на это, юнит работал не совсем хорошо. Версия MC 600 под влиянием глюков MC 400 вообще была приспособлена как микроноут для MS DOS, поскольку у EPOC были сложности со встроенным языком программирования OPL.
Впрочем, скоро вышли новые версии и языка, и ОС, которые были встроены в Psion Series 3, так что все более-менее стабилизировалось. Вот тогда-то и появился еще не совсем Symbian, а SIBO, то есть SIxteen-Bit Organizer. У Psion 5 появилась 32-битная система, так что ее называли уже не SIBO, а EPOC/32. Постепенно весь софт стал 32-разрядным, и в конце девяностых Psion Software приспособили Symbian Version 1, которую поставили на обновленный Psion 5. В 1997 году вышли версии 2 и 3, которые были по своей сути всего лишь багфиксами. Также появились привычные инструменты для интернета, такие как браузер и почтовый клиент.
Настоящим "моментом истины" стал выход в 1999 году смартфона Sony Ericsson R380: в пятую (на тот момент) версию Symbian OS уже была встроена первая версия мобильной Java-машины. Именно эта компания, а не Nokia, как считают многие, впервые "рискнула" сотрудничать с Psion Software с целью прошивки полноценной операционной системы в миниатюрные мобильные терминалы. Успех данной модели вызвал интерес у производителей мобильных телефонов к более продвинутому firmware.
Стало ясно и другое: многомиллионный мобайл-рынок не сопоставим с мощностью группы энтузиастов из Psion Software – в июне 1998 года мощные вливания со стороны Nokia, Ericsson и Motorola превратили хакерскую лабораторию в Symbian Ltd. Компания, впрочем, осталась на своем месте, в Британии, а не в Калифорнии: британская, шведская и японская лаборатории остались главными производственными площадками. Сейчас, как это принято, что-то делает индийский аутсорсинг и, конечно, американский отдел продаж – компания, можно сказать, современная и по сути, и по форме.
В настоящее время Symbian используется в 54-х моделях смартфонов высшей ценовой категории семи производителей. Еще 50 новых моделей находятся в стадии разработки. Вообще продано 39 миллионов трубок для Symbian, и только 14,5 миллионов из них – за 2005 год.
Основные принципы
Для начала надо сказать, что эта система предназначена специально для маленьких и ограниченных в ресурсах систем. Как следствие, в ней нет ничего такого, чем клиент не будет пользоваться. Конечно, виртуальная память и прочие технологии тоже могут когда-то пригодиться, но Ericsson, являющийся, кстати, "колыбелью" UML и экстремального программирования, так не думает. "Когда понадобится, тогда и сделаем, а технически мы давно готовы", – так говорят шведские разработчики.
Вообще, рынок мобильных телефонов очень неоднороден, мощность устройств сильно диверсифицируется: например, экран может быть как двухстрочным монохромом, так и полноцветным VGA и более. То же самое можно сказать и о процессоре, оперативной и флэш-памяти, возможностях мультимедиа, устройствах ввода и так далее. Соответственно, ОС для такого недетерминированного рынка должна быть очень модульной, чтобы производитель мог выбрать и встроить любое подмножество функций из всех возможных.
Еще один специфический момент заключается в том, что мобилка занимает промежуточное место между миксером и DVD-плеером. Фактически, это бытовая техника, так что пользователь не обязан ничего знать о загрузке программ и т.д. Вместе с тем – и это свойство становится все более важным – операционная система должна допускать значительное вмешательство продвинутых пользователей. Есть особая категория потребителей, в маркетинге называемая "энтузиастами", которые лучше всякой рекламы рекламируют новые технологии, и эти пользователи должны получить то, что они ищут, то есть среду, открытую для настройки и перепрограммирования.
Важно отметить, что версии Symbian не являются "прогрессом" в обычном смысле слова: каждая версия поддерживает определенный тип устройств и определенные функции, так что вы никогда не захотите обновлять версию Symbian на отдельно взятом устройстве. Более поздняя версия может иметь меньше возможностей на каком-то устройстве, а более старая – иметь более свежие багфиксы.
Устройства и версии
Еще раз повторимся: версии Symbian не являются взаимозаменяемыми, каждое устройство рассчитано на работу с определенной версией, для чего соответствующий ROM включает нужные драйверы. Драйвер создается для конкретной модели, и если Symbian 9 не планируют устанавливать на это устройство, то и его образ не будет сгенерирован соответственно.
В результате многие только планируемые к выпуску устройства по-прежнему ориентируются на версии 7 и 8, а, например, Nokia N-Gage вообще не собирается "уходить" с Symbian 6. Вообще, в средней ценовой категории Nokia традиционно склоняется к этой версии, поскольку для нее разработан специальный пользовательский интерфейс, который получил название Nokia Series 60 UI. Siemens тоже использует эту версию: в варианте 6.0 – для стандартных устройств и в варианте 6.1 – для "отягощенных" мультимедийными возможностями коммуникаторов.
Другие компании, не связанные с Series 60 UI и использующие универсальный интерфейс UIQ, в частности Sony-Ericsson, более предпочтительной считают версию 7, где, собственно, и появился новый пользовательский интерфейс. Motorola и Panasonic также склоняются к этой версии.
В свою очередь, восьмая версия, по-видимому, является "проходной": по сути, все возможности девятой версии были заявлены в пресс-релизах восьмой, в частности, поддержка не только телефонов, но и PDA в широком диапазоне. Symbian 9.0 также был, что называется, фальстартом: широкое распространение и долгая жизнь предположительно будет у версии 9.1.
Девятая версия пока замечена только в кругу "очень платиновых" партнеров Symbian, а именно Nokia и Sony-Ericsson. И дело тут не только в больших деньгах: эти компании практически формируют софт Symbian для своих конкретных маркетинговых программ, для своих устройств, чипов, приложений и так далее. Первыми дорогими, но широко распространенными устройствами с Symbian 9.1, станут Nokia E60, E61, E70, N71, N80, N91 и N92. Флагман Sony-Ericsson P990 также будет работать под новой версией, хотя младшие собратья, P900/910, используют v7.0. Это еще раз подтверждает, что v8 создана для каких-то специальных целей Nokia в серии 668х: не для кого не секрет, что ядро v9 переписано практически с нуля с целью "прояснить" API, и многие исторические участки кода были безжалостно удалены. Кроме того, раз v9 насквозь "пропитана" вопросами безопасности, вероятно, на то были серьезные причины.
Ready-Go
Таким образом, Symbian – это система со своей историей и будущим. И дело даже не в том, завоевал ли Symbian что-то существенное на рынке. Весьма прибыльная компания остается открытой в плане стандартов – перед тем, как встраивать в ОС новые возможности, пользователи получают тщательные инструкции, изучают вопрос, применяют мировой опыт и прислушиваются к пожеланиям.
Речь не идет о создании, например, встроенного медиа-плеера, о чем так трубит реклама: эта задача по силам второкурснику КПИ. Главное – наличие открытой и ответственной разработки: если доступен, скажем, Eclipse, то его и нужно использовать, чтобы разработчики не включались в многотысячные "игры" с Code Warrior или Visual Studio. Уважение интересов заказчиков и потребителей – вот что такое Symbian, и это играет огромную роль при выборе этой системы ведущими компаниями. Открытый "кому надо" код является прекрасным примером разумного использования открытого кода в коммерческих целях.
Важно, что создатели хотят сделать (и делают) систему лучше, а популярность и прибыль в данном случае – только результат проделанной работы, ведь что же может работать лучше, если Symbian делается на деньги и по заказу самих покупателей и пользователей? Вот такая вот шведская логика: не сначала делать, а потом думать, как продать, а думать, когда делаешь, и отдыхать, когда продаешь.
Возможно, не все сразу кинутся программировать под Symbian, но если у вас под руками смартфон, то почему бы и нет.
Архитектура системы Symbian глазами программиста
Можно многое рассказывать о структуре самой ОС, но лучше всего рассмотреть процесс создания приложений, который сам по себе уже о многом говорит. Программирование Symbian не очень отличается, скажем, от программирования PalmOS: традиционным инструментом для такого программирования являлся Code Warrior от Metaworks. В последнее время, однако, в качестве официального инструмента был выбран открытый проект Eclipse. Поскольку эта среда написана с использованием Java, то Java вам тоже обязательно понадобится. Также возможна разработка приложений и с помощью MS Visual Studio.
Программирование возможно на C++, Java или OPL. Самый нижний уровень – это уровень бинарного кодирования с помощью C++. Для этого вам понадобится SODK, то есть Symbian OS Development Kit, включающий в себя почти весь исходный код самой операционной системы (кроме криптографических алгоритмов и сетевых стеков, а также исходных кодов Java KVM, которые Symbian не имеет права распространять), а также исходники третьих компаний (драйверы, кодеки и так далее), необходимые для компиляции.
Также в этот SDK входит внутренний технический тулкит Techview вместе с исходным кодом, Symbian Development Library и утилиты, предназначенные для построения окончательного ROM-образа. Сборка загружаемого образа – это просто бальзам на душу тех, кто с тревогой наблюдает за распространением модулей в Linux и даже BSD: образ Symbian включает в себя абсолютно все системное ПО. Сам SODK официально доступен только "платиновым" партнерам, как, например, Nokia. Фактически, вы заинтересованы в этом уровне программирования только в том случае, если создаете новый тип мобильного терминала. Обратите внимание, что данный ROM будет корректно работать только на однотипных устройствах, поэтому не очень предусмотрительно включать прикладные приложения в само ядро.
Второй уровень также предполагает бинарный интерфейс доступа с помощью C++, но не требует исходных текстов системы для встраивания в ядро. В его состав по-прежнему входят Techview, компиляторы и инструменты сборки ROM. Это называется Binary Access Kit, BAK. Этот уровень предусмотрен для провайдеров мобильной связи, которые намерены "прошить" в ОС какие-то специфичные функции и сервисы, а также для гигантских корпораций, "перепрошивающих" тысячи телефонов собственными приложениями. Так сказать, штатная возможность апгрейда ОС внешними модулями. Этот уровень не привязан к конкретной модели или серии телефона, поскольку все вызовы изолированы от "железа" протоколом системных вызовов API. Также, поскольку с помощью BAK код системы и секреты аппаратной части не разглашаются, BAK доступен значительно большему количеству партнеров.
Поверх DevKit или BAK (разница только в доступности исходного кода для отладки, и DevKit, разумеется, предпочтительней) строятся Symbian Middleware и System Libraries. К этой категории, например, относятся различные мультимедийные кодеки, обобщенные библиотеки PIM и так далее. Все сервисы middleware разделены на несколько классов (или frameworks): Multimedia, Telephony Server, Communictions Server, Open Font, IP Hooks, PC Connectivity (Data Sync), Messaging и так далее. Все эти сервисы в различной мере "уходят корнями" в ядро системы, так что не следует относиться к ним как к совершенно независимым библиотекам.
Некоторые сервисы, например, Messaging, основаны на технологии плагинов (MTM, Message Type Modules), так что вам не обязательно обращаться к ядру для добавления какого-то нового типа сообщений, например, ICQ, или нового кодека в модуль Multimedia. Однако надо иметь в виду, что часто та или иная функция сильно связана с аппаратной частью.
Например, шифрование, декодирование MP3, прием FM-радио или захват видеопотока с цифровой камеры производится отдельным чипами, так что создавая новый драйвер, вы будете серьезно "задействованы" на системном уровне. Правда, уровень Media Device Framework создает возможность модульного подключения таких драйверов с сокрытием подробностей под уровнем MM Framework. Не стоит забывать, что мы говорим о программировании новых драйверов, графических фильтров и медиа-кодеков, так что воспроизведение медиа или использование PIM-сервисов не требует ни наличия, ни даже знания DevKit.
Итак, вся система Symbian очень хорошо спланирована – на каждом уровне пользователю и разработчику доступны только "полезные" для него свойства. Для программирования на уровне прикладных приложений можно использовать на выбор C++, Java либо OPL. В последнее время выпущена версия .NET для Symbian, но пока популярность SymboNET – скорее, область фантазий.
Естественно, то, что вам понадобится для разработки, самым серьезным образом зависит от того, какой язык вы выберете для разработки. Предположительно – Java SDK (как минимум), а также какая-то из сред разработки, вроде Code Warrior или Visual Studio.
В статье использованы материалы http://iXBT.com и www.symbian.com