На прошлой (позапрошлой – прим. пер.) неделе BlackBerry, бывшая Research in Motion, объявила о том, что в магазине BlackBerry 10 App World уже 100 тыс. приложений.
Хотя я могу только аплодировать столь внушительному числу приложений, которые разработчики смогли отгрузить в магазин за столь короткий период времени перед американским выпуском Z10, до недавних пор BlackBerry не спешила рассказывать о том, что это за приложения такие.
И вот во вторник она подтвердила, что примерно 20% приложений в BlackBerry 10 App World по сути являются переписанными приложениями Android.
Если вернуться немного в прошлое, в первом квартале 2011 года RIM наконец подтвердила то, слухи о чем ходили не один месяц: тогда еще новый планшет PlayBook, работающий на той же фундаментальной ОС QNX, что и BlackBerry 10, будет поддерживать Android-приложения, а также Adobe Air, HTML5 и нативные приложения QNX на C/C++.
Эдакий «Android лучше, чем Android», если позволите так выразиться.
Чем больше я думаю об этом, тем больше чувствую ощущение дежа-вю.
На самом деле такое было 20 лет назад. Вендор, который последний раз пытался это сделать, был IBM со своей операционной системой OS/2 2.0.
Для меня это как соль на рану, и наверняка меня будут критиковать, но поскольку эта битва между Microsoft и IBM давно закончена, я все же продолжу.
По большей части, в 1992 году компании IBM с ее OS/2 успешно удалось создать «DOS лучше, чем DOS, и Windows лучше, чем Windows».
Это была полноценная 32-битная ОС, она могла работать с большими объемами памяти, тогда как DOS и Windows 3.0 – не могли. Там была превентивная многозадачность, тогда как в DOS и Windows 3.0 ее не было.
OS/2 умела защищать нативные приложения в раздельных областях памяти, а DOS и Windows 3.0 – не умели.
Она также могла воспроизводить приложения DOS и Windows 3.0 в собственных защищенных отдельных областях памяти, что DOS и Windows тоже не могли.
Это была первая операционная система для ПК, которая поставлялась с системой виртуализации Windows. Это невероятно опережало свое время.
На OS/2 так хорошо работали приложения DOS и Windows 3.0, что IBM было очень сложно убедить сторонних разработчиков писать нативные приложения для интерфейса OS/2 Presentation Manager.
Да, в OS/2 было не все гладко с совместимостью с Windows. Были проблемы с приложениями в режиме Enhanced Mode и с некоторыми особыми типами драйверов под названием VxD.
Cо временем IBM в новых версиях OS/2 решила большинство проблем совместимости. Но было очень сложно угнаться за теми изменениями, которые вносила Microsoft. Когда в 1993 году Microsoft выпустила Windows NT 3.1, большинство преимуществ OS/2 уже не воспринимались компьютерной индустрией как эксклюзивные.
Сегодня Windows NT можно распознать в Windows 8, Windows 7 и Windows XP, ну и еще Windows 2000.
BlackBerry в своей новой мобильной ОС находится в очень похожей ситуации. Как я уже писал раньше, реализация QNX на оборудовании BlackBerry чрезвычайно впечатляет, она эластичная и продвинутая.
И это вполне ожидаемо от такой зрелой встроенной системы реального времени, какой является QNX. Этим она ярко контрастирует с iOS, Android и даже Windows 8 и Windows Phone 8, которые не являются системами реального времени.
Более того, я считаю, что в ряде архитектурных аспектов QNX как операционная система превоcходит и iOS, и Android. Я несколько недель тестировал Z10 от AT&T и нашел его забавным устройством, с интересными особенностями, отличающими его от упомянутых двух платформ, а также от Windows Phone 8, которую я тоже тестировал и нашел очень интересной.
Однако несмотря на ДНК реального времени в BlackBerry, имеется серьезный риск, когда ты пытаешься задействовать экосистему конкурента вместо того, чтобы активно участвовать в ней.
Сначала я надеялся, что для совместимости с Android BlackBerry пойдет по пути виртуализации вместо нативного слоя эмуляции с портированием нативного Dalvik VM, как она в итоге сделала.
Лично мне идеальным решением для BlackBerry 10 кажется полный стек Android 4.x внутри мобильного гипервизора, такого как OKL4 или VLX от Red Bend.
В этом случае RIM вообще не пришлось бы ничего «портировать». Внутри QNX можно было бы запускать полноценную копию Android вместе с полным ядром Linux в качестве «гостевой» системы. Но такого не случилось.
Я не хочу сказать, что такой подход был бы полностью лишен рисков. Гипервизор должен быть очень сильно оптимизирован по производительности, а пользователи BlackBerry 10 ожидали бы такой работы Android-приложений, которая бы приближалась к нативной. В противном смысле от режима совместимости нет особой пользы.
Чтобы работали приложения Android NDK, виртуализация на базе гипервизора должна быть единственным эффективным способом достижения подлинной бинарной совместимости. Но поскольку в BlackBerry 10 используется просто компонент Dalvik из Android, она не может воспроизводить приложения NDK. Эти приложения нужно портировать с помощью нативного SDK QNX на C/C++.
Стоит отметить, что в реализации Android 2.3.3 API в BlackBerry есть и ряд других программных ограничений в дополнение к NDK.
Вне зависимости от способа реализации Android в новой мобильной ОС BlackBerry, остается другой вопрос: окажет ли совместимость с Android такой же «охлаждающий эффект» на нативную разработку на C++ и Adobe Air, какой был в OS/2 в результате совместимости с Windows 3.0?
Есть и другая потенциальная проблема, и довольно серьезная.
Всегда есть вероятность, что в будущем Google реализует в своей Dalvik VM такие архитектурные и кодовые изменения в рамках Android Open Source Project, которые разрушат реализацию Dalvik в BlackBerry и вызовут серьезные проблемы совместимости с приложениями, написанными для будущих версий Android API.
В этом случае BlackBerry нужно будет постоянно заново портировать гугловский Dalvik на QNX, чтобы успевать за всеми изменениями. Это может потребовать существенных ресурсов. Таким же образом IBM приходилось постоянно следить за совместимостью OS/2 с Windows.
Планшет Kindle Fire от Amazon тоже поддерживает Android-приложения, у компании есть собственный магазин приложений. Однако Kindle Fire фактически является Android-устройством, он работает на полноценном коде AOSP и Linux, тогда как BlackBerry 10 лишь эмулирует Android, базируясь на ядре QNX со всеми ее библиотеками.
Поэтому у Kindle Fire никогда не будет проблем совместимости с Android, при условии, что Amazon будет поддерживать свежий стек AOSP.
Впрочем, BlackBerry может быть и неинтересно, для чего разработчики пишут приложения, будь то Dalvik API для Android 2.3, нативный С++ QNX, Adobe Air/Flash или Java.
Да, еще есть SDK для платформы WebWorks. BlackBerry 10 представляет собой в прямом смысле шведский стол API от самых разных вендоров. Пожалуй, у нее самый богатый выбор API среди всех мобильных ОС на данный момент.
Но большой вопрос, будут ли все они хорошо работать в BlackBerry 10. Понравится ли такой подход потребителям и захотят ли разработчики делать достаточно хорошие нативные QNX-программы, которые будут подчеркивать достоинства платформы?
Я имею в виду, что если вы покупаете телефон для работы с Android-приложениями, то какие у вас есть причины не покупать тот же Samsung Galaxy S4, который превосходит Z10 практически по всем аппаратным характеристикам?
Ответ даст только время.
Автор: Antorix