Идем в обход: альтернативные платформы разработки под iOS

:

Примечание от редакции. Мы продолжаем публиковать материалы, связанные с программированием под девайсы Apple. Сегодняшнюю статью по просьбе AppleInsider подготовил ведущий разработчик компании Parallels Александр Швецов (на фото). Он хорошо знаком с платформой iOS еще по самому первому «Айфону», ну и, конечно, по работе над несколькими версиями Parallels Desktop для Mac, как известно, самого производительного и быстрого приложения для запуска Windows на Mac. Данной заметкой мы открываем подборку статей «для продвинутых». Обращаем внимание читателей на то, что вы можете задать автору вопросы или предложить новую тему для материала. Приятного чтения!

iOS уже далеко не новая платформа.«Кул хацкеры» (а с ними и автор этих строк), ломавшие выпущенные эксклюзивно для AT&T iPhone первого поколения, следуя, разумеется, окольными путями, писали под них еще в 2007-м, да и «цивильный» способ разработки — официальный SDK — вышел уже около трех лет назад. Но речь сегодня пойдет не о нем, а об альтернативных средствах разработки.
Для того, чтобы отвернуться от традиционных Objective-C и Cocoa Touch, может быть много причин — кросс-платформенность, существующие наработки, опыт, команда, или просто предпочтения. Но главное — для этого шага есть много возможностей: Corona, Unity, Appcelerator, PhoneGap, MonoTouch, XnaTouch, BatteryTech, или даже «хардкорный» C. И хотя у нас в Parallels и Cocoa, и Cocoa Touch активно используется (как в Parallels Desktop, так и в Parallels Mobile), не буду скрывать: лично мне Objective-C не нравится, Почему? Да потому что Apple делает свои продукты исключительно для пользователей, а к разработчикам поворачивается тем местом, что находится пониже поясницы. Другими словами, в фирменных продуктах Apple для девелоперов нет ни нормальной среды разработки, ни вменяемой документации. Поэтому я расскажу обо всех альтернативах, которые я сумел найти и попробовать, прежде чем нашел удобное и кросс-платформенное решение.

Corona

http://www.anscamobile.com/corona/

Разработчики каждой платформы очень хотят кушать и ездить на хороших немецких машинах, поэтому Corona SDK платный. Стоит она $199 на iOS, $349 — на iOS и Android. Платить нужно только за возможность публикации в AppStore и Android Marketplace (как бонус — доступ к закрытым разделам форума и ежедневным сборкам). А разработка, включая отладку на устройстве при наличии подписки ADC, бесплатна.

Единственный язык программирования, поддерживаемый Короной — Lua, которая, на мой взгляд, есть нечто среднее между JavaScript, ActionScript и Delphi (правда, команда “end” почему-то используется без “begin”). Одним словом — на любителя.

Впрочем, и сама платформа — на любителя. Делать на ней можно только игры, причем только двумерные. Приложение с нативным интерфейсом с помощью «Короны» сделать не получится.

Почитать туториал и посмотреть на примеры можно у них же на сайте — http://developer.anscamobile.com/resources/docs/ .

Unity3D

http://unity3d.com/

«Юнити» — это и мощный кросс-платформенный движок, и кросс-платформенная среда разработки (интегрированная с MonoDevelop или VisualStudio под Windows), и конвертер всевозможных форматов ресурсов, и симулятор. А еще сервер ресурсов (если захотите сделать свой World of Warcraft). А в довесок — магазин ресурсов для независимых разработчиков.

Есть только одно “но”. «Юнити» — самое дорогое из решений. Бесплатно доступна только разработка под Windows и Mac (включая браузерные игры), для разработки под iOS придется отдать от $400 до $3000 (за свой сплеш-скрин, плагины, аудиофильтры и пиксельные шейдеры), Android обойдется столько же, а цена за полный кросс-платформенный комплект — $4500!!! Другими словами — платформа серьезная, и по меркам независимых разработчиков стоит изрядных денег. Получить качественный и многофункциональный инструментарий на халяву не получится – будущим «убийцам Angry Birds» стоит это учесть. Стоимость исходного кода, ученических лицензий и лицензии для разработки под консоли не разглашается. Для всех версий, конечно же, есть триал на 30 дней.

При разработке под мобильные платформы можно использовать два распространенных языка — JavaScript и C#, для настольных игр — еще и Boo, который весьма похож на Python.

Разобраться в «Юнити» непросто, а рассказать о ней во всех подробностях в рамках этой статьи — просто невозможно. Для тех, кто все-таки решится попробовать этого гиганта на зуб, советую начать с основ ( http://unity3d.com/support/documentation/Manual/Unity%20Basics.html ), поучить интерфейс, а потом взяться за мой любимый туториал по созданию трехмерного платформера — http://unity3d.com/support/resources/tutorials/3d-platform-game .

PhoneGap

http://www.phonegap.com/

Хоть создатели PhoneGap и не сознаются, но идея их детища явно навеяна Palm WebOS, само название которой говорит нам о том, что разработка под нее сродни созданию веб-приложений. Но, в отличие от WebOS, PhoneGap мне совершенно не нравится, и я бы не советовал его использовать. Почему? Потому что приложения на PhoneGap — это по сути полноэкранный браузер, внутри которого доступны некоторые «хвосты» наружу — к файловой системе, сети или геолокации. Лучше попробуйте Appcelerator.

Но раз платформа существует, значит, это кому-нибудь нужно. А если это кому-то нужно, значит, платформа достойна внимания. Как минимум интересен тот факт, что команда PhoneGap работает над облачным сервисом сборки и упаковки приложений — http://build.phonegap.com/ , в том числе включающий поддержку iOS, а это значит что с помощью PhoneGap можно будет писать под iOS без Мака.

Appcelerator

http://www.appcelerator.com/

«Аппселератор» я обнаружил случайно попробовав одно из приложений написанных с его помощью — Wunderlist. Привлекло меня в первую очередь то, что для разработки приложений используется лаконичный JavaScript, а сама платформа на 90% бесплатна. Платить придется только за расширенную техническую поддержку, модули для платежных систем, штрих-кодов и омнитуру.

Но самое удивительное в этой платформе то, что приложения построенные на ней не просто выглядят нативно и на Android, и на iOS, они и есть нативные: вы создаете кнопку средствами JavaScript, а рисует ее сама iOS.

Начать изучение «Аппселератора» стоит с классического «Getting Started» — http://wiki.appcelerator.org/display/guides/Getting+Started+with+Titanium , постепенно переходя к использованию документации по API — http://developer.appcelerator.com/apidoc/mobile .

MonoTouch и XnaTouch

http://monotouch.net/ и http://monogame.codeplex.com/

«Моно», как открытый порт Microsoft .NET разрабатывается с начала 2000-х. При активной поддержке Novel «Моно» начала особенно активно развиваться после открытия Microsoft исходного кода их фреймворка, а так же публикации стандартов языка C# под открытой лицензией. Это отличный проект.

Но с мобильными версиями — MonoTouch, Mono for Android — явно что-то не так. С первого взгляда — мощный и функциональный инструмент, но почему тогда на нем нет достойных приложений? Непонятно. Пока что я бы посоветовал использовать его только для портирования приложений с Windows или Windows Phone, а писать новое приложение на MonoTouch пока бы не стал.

BatteryTech

http://www.batterypoweredgames.com/batterytech

BatteryTech, как заявлено, — это высокопроизводительный фреймворк для iOS и Android, построенный на понятии игровых объектов и использующий C++. Я очень старался связаться с создателями этой платформы, что бы узнать, а потом и рассказать подробнее об этой платформе, но не получилось — почта молчит, а копирайты обновлялись последний раз аж 2 года назад. Хотя официальная страница проекта на Facebook время от времени подает признаки жизни.

Что еще?

Сообщество Qt портирует Lighthouse и Quick на Android и iOS. Appcelerator получает большой объем инвестиций, покупает платформу для разработки веб-приложений и планирует покорять Blackberry (бета уже доступна для платных подписчиков) и Windows Phone 7. А Unity3D идет на консоли третьего поколения.

Тщательно все взвесив, для себя я сделал выбор — Appcelerator для обычных приложений и Unity3D для игр. Именно об этих инструментах, а так же Objective-C и даже о проблемах, возникающих уже после выпуска своего приложения, я с радостью готов рассказывать в будущих заметках.

Кстати, вопросы и идеи для будущих статей в комментариях всячески приветствуются!