В конце прошлого года я получил в личное пользование Blackberry 10 Alpha, прототип, тогда еще не выпущенного, Z10. Естественно, у меня возникло желание что-нибудь написать для новой платформы, тем более она выглядела весьма интересно.
Сейчас приложение готово, и я могу поделиться опытом разработки в сравнении с Android/iOS.
IDE
Это привычный Eclipse с набором расширений от Blackberry. Плюс — ничего не надо учить заново, среда привычна, минус — IDE поставляется только комплектом, а не как набор расширений, держать на одной машине несколько эклипсов для каждого вендора немного неудобно. Однако все это относится только к разработке нативных приложений на новом фреймворке Cascades, разработчики Android/AIR могут не отказываться от привычных инструментов.
Cascades SDK
По сути это Qt4 + QML, и если с Qt4 все просто, то в QML штатные элемент, заменены на компоненты Blackberry UI, остался только синтаксис. В этом есть плюс — все программы будут вести себя одинаково, но есть и минус — по функциональности и гибкости новые компоненты уступают штатным, особенно в плане удобства компоновки и «гибкой» верстки. Привыкнуть к верстке вообще было немного сложно, особенно к тому факту, что свойства margin и padding, хоть и присутствуют у всех элементов, но не всегда влияют на результат (это зависит от того, что лежит в контейнере — элемент управления, или другой контейнер).
Native SDK
Это чисто Сишный API и рядом с объектным Qt кодом смотрится чужеродно. Полностью без него обойтись нельзя (к примеру, если нужен Bluetooth), но в примерах есть готовые обертки, которые можно взять, чтобы не писать свои.
Имеющиеся проблемы
- QML редактор зависит от аппаратного ускорения и запускается не у всех и не всегда, для меня он, например, работал с SDK v10.0, но отключился в бете 10.1. Работать без предпросмотра можно, но времени тратится больше. Механизма предпросмотра для различных разрешений и ориентаций экрана, как в Android также нет, приходится проверять все на девайсе.
- Симулятор работает крайне медленно, по скорости он не дотягивает не только до симулятора iOS, но и до полноценного эмулятора Android. Кроме того, так как симулятор имеет архитектуру отличную от ARM, приложение под него надо собирать отдельно, пред запуском переключая Build target.
- Чтобы активировать режим разработки нужно обязательно поставить пароль на девайс, не менее шести символов, идущих не подряд, этот пароль приходится вводить каждый раз после длительного простоя устройства, а также при каждом подключении к компьютеру для отладки. Сам режим разработки выключается после перезагрузки, и его нужно включать заново.
- Сертификат, который создается для приложений в режиме отладки, выдается всего на пару недель, потом приходится его пересоздавать, это не сложно, но снова отнимает время.
- SDK и API активно развиваются и обновляются, в результате некоторые примеры (в том числе с официального сайта) работают некорректно, ввиду неактуальности.
- Нет нормального способа загружать в Каскады свои шрифты.
- Механизм поддержки множественных конфигураций уступает тому, что есть у Android. Даже несмотря на то, что существует всего три варианта разрешений (у dev alpha оно не такое, как у z10), этот недостаток уже чувствуется.
- С++. Я очень люблю этот язык, но после C#/Java каждый поток ошибок компилятора, вызванный одной неправильной точкой, вводит в ступор.
- На StackOverflow пока еще очень мало вопросов по новой платформе.
Плюсы
- Сайт для разработчиков. Он очень удобен, содержит массу информации по API, а на GitHub выложен богатый реп с кучей примеров на все случаи жизни. Причем примеры — это полноценные тестовые программы, из которых можно брать код и обрабатывать по месту. По каждой теме есть серия небольших статей, позволяющих быстро начать разработку, не изучая документацию вдоль и поперек.
- Qt. Один из лучших кроссплатформенных фреймворков с отличной документацией, солидным сообществом и базой готовых решений.
- Штатный механизм экспорта не разрешает подписать приложение с номером, который уже был однажды подписан. Больше не будет сборок, у которых по ошибке забыли поменять номер версии.
- Блекберри 10 достаточна открытая (в плане API) платформа. Разработчику доступно многое, но при этом есть и механизм «разрешений», не позволяющий программам получать доступ к важным подсистемам или данным без разрешения пользователя.
- Имеется штатный механизм взаимодействия программ, похожий на Intents в Android. По мощности он немного уступает последнему, но для самых распространенных задач его хватает с головой.
- Простота портирования с Android. Я перевел два приложения без единой ошибки за полчаса. Это отличный результат. Конечно поддерживается только Android 2.3 и полученные порты выглядят не родными (но это можно и подправить, если заботиться о пользователях). Нужно только перед портированием отключить Notifications, так как аналогичного механизма в Blackberry 10 нет, и сообщения будут сыпаться в Hub, раздражая пользователя.
- Поддержка J2ME, AIR, HTML5
Маркет
Магазин совсем не изменился и выглядит таким же, как и был во времена старых J2ME Blackberry устройств. На фоне отличного сайта для разработчиков он как пенсионер на баскетбольной площадке. Удобство пользователя тоже ниже среднего. В довершение всего мое первое приложение находится «на рассмотрении» уже больше двух недель (срок, который даже iOS программистов уже напрягает).
Резюмируя, скажу что, несмотря на молодость платформы и ряд очевидных недостатков, она производит хорошее впечатление, как самим девайсом, так и основными инструментами разработчика. Кроме того список этих инструментов регулярно расширяется, а сами они обновляются. Так например, недавно вышел Exporter для PSD графики, в разработке находится плагин для Visual Studio
Автор: fo2rist