Appcelerator Titanium — что это и как оно там

    Данная статья посвящена Appcelerator Titanium — платформе для создания мобильных и десктопных кроссплатформенных приложений на JavaScript (HTML+CSS в придачу). Развитие платформы, особенности, варианты использования, личный опыт

    В общем


    Appcelerator Titanium — стартап в кремниевой долине, с активной базой разработчиков, подбирающейся к 50 000 (по их словам). Что отрадно, подавляющая часть компонентов платформы доступна под Apache 2 лицензией, исходный код доступен на github. Ребята достаточно открыты, пишут и читают твиттер, и, судя по коммитам, пашут без выходных.
    Слоган разработчиков: «Build native mobile and desktop apps with web technologies», думаю понятен и без перевода, этакий велосипед для web-разработчиков для легкого старта на новой платформе. Далеко не первая попытка решить данную проблему указанными инструментами.

    Titanium Desktop


    Как это все работает: WebKit, расширенный дополнительным JavaScript объектами пакуется в исполняемое приложение для Windows, Linux, MacOSX.
    Думаю, на вопрос «А зачем нам второй Adobe AIR?» разработчики отвечали не раз и не два. Думаю, все дело в своем Лунапарке. Если основная идея Adobe AIR это «Запускайте все подряд, каждое приложение в своей песочнице, в ущерб возможностям», то Titanium это гораздо более богатый API, но и отсутствие какого-либо контроля за приложением. Что доступно: все, что может дать Adobe AIR плюс процессы (создание, ввод/вывод), HTTP сервер, готовая очередь для асинхронных событий, интеграция с growl и аналогами.
    Чтобы быть честным перед разработчиками, скажу, что JavaScript — не единственный доступный язык, можно так же выбрать Python, Ruby, PHP и иметь в виду, что виртуальная машина добавится к дистрибутиву, тогда как JavaScript первороден.
    Titanium — это не только SDK, но и облачная платформа для сборки и распространения приложений. В обин клик новый билд расползается по клиентам, что очень здорово (сам пробовал). За денюжку можно оснастить приложение аналитикой (этакий Google Analytics для десктоп)

    Titanium Mobile


    История продукта немного драматична. Решив, что деньги не на десктопе а в мобильнике, команда начала клепать мобильную версию фреймворка. Взяли WebView, запихали туда JavaScript объекты для доступа к акселерометру, GPS, DB и первая версия готова. Вот вам CSS, HTML, jQuery — пишите. Кстати говоря, один из конкурентов, rhomobile.com именно так и работает. Посмотрели на все тормоза, и решили написать все заново. Теперь взяли SpiderMonkey для iPhone, Rhino для Android, и обернули все нативные элементы UI в JavaScript. И немного кинули разработчиков, которые уже начали писать на HTML+CSS, до сих пор на сайте встречаются вопросы типа «Ээээ, а куда вы это все дели?» Получился быстрый кроссплатформеннй движок для современных мобильных платформ, с реальной поддержкой Native Look'n'Feel. Сейчас доступны Android и iPhone, летом будет поддержка Blackberry.

    Личные впечатления


    Я пишу в свое удовольствие, последняя моя поделка имеет десктопную и мобильную версии и я выбрал Titanium для обеих. Откровенно говоря, Ti Desktop и Ti Mobile не имеют ничего общего, кроме пространства имен и шаблонов (конструкторы не в почете, везде используются Factory). Но единый язык для двух проектов позволяет использовать один код для бизнес-логики, что сэкономило кучу времени. Баги — есть, и их немало. Я понимаю разработчиков, они хотят охватить как можно большую нишу сегодня, тут вам и iPad, и iPhone 4 и Blackberry, а уж потом делать так, чтобы это работало нормально. Поэтому стараюсь открывать как можно больше багов в трекере, мне, как и им нужна рабочая версия. Возможно ли написание по-настоящему кроссплатформенного приложения? Пока нет. Множества UI компонентов iPhone OS и Android конечно пересекаются, но не полностью, да это и не возможно, пока приходится писать довольно часто if(isIPhone) {} if(isAndroid) {}. Но мне нравится настрой разработчиков, думаю им это по силам.

    Что дальше?


    Web site: appcelerator.com
    Developer portal: developer.appcelerator.com
    KitchenSink: github.com/appcelerator/KitchenSink — демонстрация основных возможностей мобильной платформы
    Поделиться публикацией

    Комментарии 44

      +2
      Клево, надо посмотреть.
      P.S. 50к разработчиков — как-то не верится O_O
        0
        на самом деле это кол-во зарегистрированных пользователей
          0
          Ну называют то они их как «Active developers» :)
            +2
            Ну а кто же это? Developers, developers, developers…
              0
              Думаю вопрос больше про слово «active»
            0
            При том, что без регистрации IDE не запускается. Я скачал, запустил, зарегистрировался, потыкал и забыл. А они меня считают.
              0
              нормальный такой стартап, надо же чем-то мериться. Это вам не 50к айпадов в день продавать :)
            0
            может, имеется ввиду опенсорс комьюнити..?
            0
            Очень интересно, на работе скоро придется писать масштабное десктоп-приложение, а так как я веб-разработчик, то склоняюсь к Adobe Air, но вы дали еще один повод для размышлений. Посмотрю, что за Titanium :)
              +5
              Однозначно Air.

              Я не знаю, как с версией 1.0+, но 0.9.3 и 0.9.4 были достаточно жуткими.

              «Облако» в котором то ли компилируется, то ли хранится (я, честно признаться так и не понял, что в нем происходит, но собрать программу без него нельзся, только debug), периодически «падает» (понятия не имею, как «облако» может упасть, но факт остается фактом) и приходится ждать пока оно поднимется.

              Куча поддерживаемых языков? Ну-ну. Во всяком случае, поддержка PHP ОЧЕНЬ оригинальна. Программа написанная на PHP периодически отказывалась компилироваться. Причины по которым это происходило так и остаются неясными. Т.е., допустим, собираете пакет. Закрываете Developer. Открываете Developer. Пытаетесь пересобрать (без изменений в коде), получаете сообщение об ошибке. Причем помощи от этого сообщения — ноль, ибо оно абсолютно неинформативно и даже гугл не помогает. И так раз пять подряд, пока на шестой программа вдруг (мистическим образом) не собирается.

              Документация… Ну, она, как бы, есть. На самом деле конкретно по Desktop версии приходится гуглить чуть ли не по каждому вопросу. Отдельные моменты в документации описаны как «имяФункции(парам1, парам2)» ни зачем, ни к чему это все пояснений не дается.

              Возможно, Mobile версия более стабильна, но для Desktop приложения я на «этом» больше писать не планирую. Хватило одного, которое писалось 2 часа, тестировалось 3 и собиралось в общей сложности около 18 (учитывая «падения» «облака» и странные ошибки при сборке).

              Но, опять таки это было в версии 0.9.4. Возможно, релиз что-то изменил. Попробуйте, может действительно теперь это стоящая вещь. Хотя, ответ на вот этот Q в их разделе Q&A, подсказывает, что ничего не изменилось: developer.appcelerator.com/question/18311/packaging-error
                +2
                Это все так, ну может немного получше, да и Mobile версия далека от идеала. Весь Titanium — суровая бета. Я просто смотрю на платформу с оптимизмом и собираю некий cookbook для найденных и решенных проблем, так как я пишу в свое удовольствие в свободное от работы время, я могу позволить себе поковыряться в их коде и разобраться почему это не работает и где проблема — во мне, в документации или в коде
                  0
                  Я обеими руками за cookbook, но, судя по всему, некоторые проблемы там просто из разряда магии и, соответственно, работоспособность рецепта будет меняться от версии к версии SDK. Например, проблему с компиляцией предлагалось решить устновкой SDK пред-предыдущей версии. Причем из треда с обсуждением данной проблемы так и осталось неясным — работает этот способ или нет, т.к. половина разработчиков говорила спасибо, вторая утверждала, что ничего не работает и все так же как было :-(

                  Кстати, я так и не понял, зачем они убрали форум в старом виде? IMHO, было значительно удобнее, чем с нынешней Q&A.

                  Ну а с точки зрения «нечем заняться», платформа, безусловно интересная. Просто для бизнес задач (читай разработки на заказ для «дяди»), ИМХО, пока не совсем готова.
                  +1
                  Спасибо большое за такое подробное мнение. Мне все таки предстоит писать коммерческий софт, поэтому такая нестабильность во время разработки, плохенькая документация, все это = потерянное время. Так что видимо остановлюсь на Air, а Appcelerator добавлю в закладки и вернусь к нему позже.
                  +4
                  Если нужен именно десктоп (а не мобильник) — можете еще посмотреть что за XULRunner от Мозиллы (на котором Firefox написан).
                    0
                    Спасибо, посмотрю.
                    +2
                    Посмотрите еще GWT. Я сейчас заканчиваю одно приложение на Javascript и уже жалею, что не начал делать его не на GWT.
                      0
                      Посмотрел, как я понял там получается на выходе js-код, который работает в браузере. То есть написать локальное приложение, взаимодействующее с файловой системой, базами данных и т.п. вроде как проблематично.
                    0
                    Самый большой минус — это невозможность нативной разработки в Xcode, которая есть в PhoneGap.
                    Зато у Titanium в отличии от PhoneGap более широкое API для нативный контролов.
                    В десктопной версии есть тоже минусы, это долгий запуск + инсталяция программы с загрузкой фреймворка Titanuim.
                      0
                      Не очень пока разобрался, только заинтересовался проектом, но пробежался по Getting Started и вроде как фреймворк можно включить в приложение. А «долгий запуск» на сколько долгий? :)
                        0
                        Но все равно он ставится :)
                        Запуск нативных приложений быстрее раза в два.
                          +1
                          Свои два цента: запуск программ — не такой уж долгий, субъективно — быстрее, чем мои же поделки на Adobe AIR. Запускаю я приложение на нетбуке, а уж на нормальном десктопе старт мгновенный
                          +1
                          Для меня отвязка от XCode — самый большой плюс, я пишу в vim и часто под Windows. Кстати генерация валидного XCode-проекта — одна из последних фич Titanium, только боюсь генерация односторонняя
                          +1
                          Когда я пробовал его в последний раз, меня неприятно удивил гигантский размер программы после инсталляции. Как с этим сейчас? Вот Ваша программа — сколько «весит»?
                            +2
                            Я пакую в режиме Bundled — весит 19М, что сравнимо, для примера, с дистрибутивом программы на Qt
                              +1
                              19 Мб, прямо скажем, тоже не подарок… А после развёртывания оно сколько занимает?
                                +1
                                f кому сейчас это важно? зато у каждого приложения своя среда, а не разделяемая как у AIR
                                  0
                                  Примерно год назад, когда я это тестировал, программа класса “hello, world” спокойно отжирала сотню мегабайт диска. Понятно почему — вместе с программой инсталлировались, по сути, Хром, база данных и т. д. Причём располагалось всё это в весьма неочевидных местах… Мне такая избыточность показалась тогда чрезмерной.
                            +3
                            мои впечатления о Titanium Mobile:
                            — писать легко, написал Radio-T App за один вечер (в AppStore проходит без проблем)
                            — багов в Titanium Mobile вагон, но их быстро фиксят
                            — основной упор Appcelerator делает на разработку под iPhone, в итоге новые фичи появляются в фрейвройке под iPhone, а под Android намного позже
                            — поддержка очень дорогая — $200, но есть триал, правда мои кредитки принимать не захотели
                              0
                              Да, поддержка — недешевая вещь даже для буржуев, на сайте периодически всплывают топики типа «Вы случаем не оборзели?», но разработчики на провокации не ведутся и молчат :)
                                0
                                $200 за месяц?
                              +2
                              Думаю, на вопрос «А зачем нам второй Adobe AIR?» разработчики отвечали не раз и не два. Думаю, все дело в своем Лунапарке. Если основная идея Adobe AIR это «Запускайте все подряд, каждое приложение в своей песочнице, в ущерб возможностям», то Titanium это гораздо более богатый API, но и отсутствие какого-либо контроля за приложением. Что доступно: все, что может дать Adobe AIR плюс процессы (создание, ввод/вывод), HTTP сервер, готовая очередь для асинхронных событий, интеграция с growl и аналогами.

                              Ну разработчики ответили, что: «And Titanium apps take up to 1/10th the memory that AIR apps do.» (т.е. приложения пожирают одну десятую ресурсов памяти от приложений на AIR). Отсюда: www.appcelerator.com/products/titanium-desktop-application-development/

                              А от себя, как человека разбиравшегося с Titanium, могу сказать, что главная проблема — мало документации.

                              А в целом, идея отличная, и разработчики молодцы.
                                +1
                                запутанно написано — всё таки на html/css писать можно?
                                  +1
                                  да. + JS конечно
                                    +2
                                    Для десктоп приложений вы можете использовать HTML+CSS+Javascript, как в веб-приложении. Для мобильных приложений только Javascript, или использовать компонент WebView, куда можно загрузить HTML+CSS, и взаимодействовать с этим компонентом из основной программы
                                    0
                                    но iphone приложения, я так понимаю, всё равно под windows писать нельзя?
                                      +2
                                      Titanium Developer'у всё равно требуется родной iPhone SDK (паковка/компиляция приложения/заливка в телефон/эмулятор).
                                      +3
                                      Первый шаг был сделан давно — js под windows и asp.
                                      Сейчас всё повторяется упором на технологии: и вот мы увидели node.js, а также сабж.
                                      Итак, сервер на яваскрипт, клиент на яваскрипт, програма не декстопе на яваскрипт, скрипт для windows на яваскрипт, серверный язык под windows-платформу — на яваскрипт.
                                      Остался игровой 3d и физический движок.
                                      Мне это всё, как минимум, нравится.
                                        0
                                        Остался игровой 3d и физический движок

                                        Уже давно есть: unity3d.com/ (http://unity3d.com/unity/features/scripting). При том, там реальное 3D, а не какая то псевдо эмуляция.
                                          0
                                          ну он же не на javascript
                                          –2
                                          А я в ужасе :) Сейчас пришлось столкнуться с javascript при написании кода в 3-4К строк и теперь я понимаю зачем парни из Google сделали GWT.
                                          0
                                          Идея супер кайф, реализация ну почти, документации ваще нет…
                                          ну и огромный плюс — невозможно собрать приложение, пакайджинг не работает никогда!!!

                                          Я смотрел только Desktop. Конечно он круче AIR, в разы. Только вот AIR работает.
                                            0
                                            Это не совсем правда, в моем случае packaging работает в 95% случаев без каких-либо проблем для всех платформ
                                            0
                                            А у них совсем полноценный js? В частности, можно подключить jQuery? А то я не понял из поста, вроде как изначально он был, а потом не было…

                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                            Самое читаемое