Кросплатформенная разработка на примере Sencha

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

В начале этой недели мне посчастливилось близко познакомится с одним из таких решений от компании Sencha - Sencha Touch. Посчастливилось, потому что я давно хотел попробовать, а лучший способ разобраться в чем-то - это получить реальную задачу. Наша компания купила лицензию на Sencha Architect 2.1 - IDE, разработанная специально для работы с фреймворками компании Secnha - Sencha Touch и Ext JS.

sencha

Sencha Touch и Ext JS - это веб фреймворки. Первый служит для разработки под мобильные платформы, второй - для разработки полноценных веб-приложений для десктопов. Основой обоих фреймворков является язык JavaScript.

Имея большой опыт разработки под веб, и прочитав документацию на официальном сайте, я довольно быстро разобрался как писать мобильные приложения на Sencha Touch. Документация, кстати, очень подробная. В ней можно найти описание всех модулей, функций, свойств, объектов и т.д., которые используются во фреймворке. Также в ней можно найти пошаговые инструкции с примерами приложений, из которых тоже можно очень много полезного почерпнуть.

С документациeй я работал следующим образом: я разбил задачу на много маленьких подзадач, подумал, как бы я решал эти подзадачи, если бы писал нативное приложение на Objective-C, после этого искал, как можно решить эти подзадачи при помощи Sencha Touch.

В общем будучи информационно подкован, и имея план проекта в голове, я открыл Sencha Architect и начал реализовывать задуманное.

Пара слов про IDE.

IDE выглядит довольно неплохо. Удивительно, как быстро и незаметно я привык к автосохранению в Xcode. Раньше после каждого действия я жал CMD+S, но с автосохранением эта привычка исчезла сама собой. В Sencha Architect автосохранения нет, что для меня оказалось не удобно, но терпимо. Также напрягает то, что интерфейс IDE немного подтормаживает. Но это не мешает работать. Слава богу, что она не вылетает :).

Так как вся разработка ведется на JavaScript, HTML и CSS, то самая большая проблема - это писать правильно. В принципе можно вообще все приложение написать в одном JS файле, и все будет работать. Удивительно, но в интернете полно примеров именно такого подхода, тогда как официальная документация говорит, что это плохой способ, что при разработке нужно использовать MVC патерн. В этом очень помогает Secnha Architect. В этой IDE очень сложно совершить ошибку. Так как там просто нет никакой возможности писать код в те файлы, которые не нужны для решение конкретной подзадачи. Файлы будут открыты только для чтения. Поэтому я быстро столкнулся с тем, что если в интернете находил решение своей проблемы, то зачастую, его просто было невозможно имплементировать, так как среда не давала этого сделать. Приходилось рыться в документации и смотреть, как нужно делать правильно. Ребята из Sencha проделали огромную работу и создали неплохой инструмент для разработки.

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

В общем разработка приятна настолько, насколько может быть приятна веб фронтенд разработка. Если вы большой фанат фронтенда, то наверное вам будет приятнее, чем мне :). У меня же этот процесс проходил без трепета в душе, но опять же терпимо. Новая для меня технология, поэтому было интересно.

Теперь о грустном.

Первое, на что я обратил внимание - это поведение приложение на iPhone. Я сразу понял, что приложение не нативное. Нет той плавности интерфейса при переходе между окнами, при нажатии на кнопки. Анимация делается при помощи JavaScript или CSS3 вместо UIView animation, что заметно, по крайней мере для меня. Вроде бы все очень похоже, но ощущается, что не то. Пропадает ощущение качества и целостности.

Второе - размер приложения. Когда я посмотрел сколько весит скомпилированный бинарник моего довольно простого приложения с 4-мя окнами, я не поверил своим глазам - 17 мегабайт. А все потому, что приложение тянет за собой весь фреймворк Sencha Touch, который и занимает 90% приложения. Остальные 8% занимает графика и только 2% код. Ну это просто никугда не годится. Такое же приложение на Objective-C заниамло было 500-600 килобайт. Я уже не говорю о том, что Senha не поддерживает в полной мере работу с железом устройства.

В общем мое мнение, что кросплатформенная разработка на веб технологиях - это костыль, который подходит только для простых проектов, где лучше сделать responsive layout, чем писать приложение. Скупой платит дважды, лучше таргетировать мобильные платформы по очереди, делая нативные приложения под каждую платформу, используя специфику платформы и устройств, чем выпускать некачественный продукт. Как ни пытался Facebook продвигать свое HTML5 приложение, в итоге, признав свою ошибку, они переписали все нативно под каждую платформу. Чего и вам желаю.

Show Comments