Конечно же, под ту, под которую писать уже умеешь. И не важно, насколько сложен язык, знакомый тебе не хуже русского, и насколько удобна среда разработки, которой ты владеешь лучше, чем стоящей дома стиральной машиной. Но если опыт разработки ПО для мобильных платформ равен нулю, то вопрос, вынесенный в заголовок статьи, становится далеко не праздным...
Конечно, в современных рыночных условиях правильнее было бы ставить вопрос не в форме "Под какую мобильную платформу проще писать?", а "Под какую мобильную платформу писать выгоднее?". Но ответить на оба вопроса, достаточно сложных, в рамках одной статьи, боюсь, вряд ли возможно, поскольку для ответа на второй необходимо пользоваться данными рыночных исследований, проводимых серьезными организациями, и, опять-таки, ответ не в последнюю очередь будет обусловлен идеей самого приложения, а также скоростью его написания. Ну а скорость, само собой, будет напрямую зависеть как от опыта работы разработчиков данного мобильного приложения с одной конкретно взятой платформой, так и от принципиальной простоты разработки приложений под неё. То есть, в итоге технические сложности всё-таки становятся одним из ограничивающих факторов, который вполне способен заметно повлиять на рыночный успех (или провал) разрабатываемого приложения. Так что фактор простоты или сложности программирования под конкретную платформу тоже должен приниматься во внимание при оценке рынка вашего будущего приложения.
Мобильных операционных систем сегодня много, даже, можно сказать, очень много. И новые появляются с завидной популярностью, поэтому успеть сделать версии приложения для каждой достаточно, скажем так, проблематично. Для начала совсем не лишним будет составить "топ" тех мобильных платформ, которые стоит сегодня рассматривать всерьёз. Собственно говоря, вот он, список:
- iOS;
- Android;
- Blackberry;
- Symbian;
- Windows Mobile/Windows Phone;
- MeeGo;
- Bada;
- WebOS;
- Maemo;
- MobiLinux;
- OpenMoko.
Список, конечно, больше, чем он мог бы быть - в реальности для широкого охвата рынка смартфонов будет достаточно первых четырех-пяти строчек. Однако нужно также смотреть и на перспективу: ещё буквально год назад Android не мог похвастаться тем, что может всерьёз конкурировать с самой Apple iOS. Поэтому совсем не стоит сбрасывать со счетов те же WebOS или Windows Phone 7, к которым сегодня рынок относится достаточно настороженно и даже, пожалуй, в некотором роде скептически. Появление Android тоже вызвало в своё время немало скепсиса со стороны экспертов в области мобильного рынка, однако, как видите, время всё расставило на свои места, и сегодня Android действительно успешно конкурирует с "яблоками" и "ежевикой".
Впрочем, давайте лучше поговорим о каждой из этих мобильных платформ, поскольку более-менее подробного обсуждения в рамках статьи заслуживают все.
iOS
Думаю, ни у кого не вызовет сомнений тот факт, что сегодня на рынке смартфонов и коммуникаторов лидером является именно компания Apple со своей системой iOS. Можно бесконечно спорить о плюсах и минусах этой платформы, о маркетинговых приемах и методах самой "яблочной" корпорации, но отрицать многомиллионный ежедневный оборот, генерируемый магазином мобильных приложений Apple AppStore, совершенно невозможно. Поэтому если вы собираетесь писать приложение только для одной платформы, то подумайте о том, чтобы ею была именно iOS.
Не столь давно на страницах "Компьютерных вестей" я уже рассказывал о том, каким именно образом сегодня пишутся программы для данной платформы. iOS действительно не слишком дружелюбна к среднестатистическому белорусскому программисту, который должен выучить язык Objective C (что, конечно, вовсе не помешает ни для общего развития, ни для профессионального роста, но потребует достаточно больших вложений времени), купить себе компьютер от Apple и сам iPhone/iPad/iPod, а затем ещё заплатить Apple за то, чтобы та рассмотрела возможность добавить написанное им приложение в свой магазин программ для iOS - знаменитый, если не сказать легендарный (да-да, настоящая живая легенда!), AppStore.
Конечно, это не самая высокая цена за то, что ваше приложение может дать сотни тысяч долларов дохода - всемирно известные истории успеха авторов мобильных приложений до сих пор служат источником вдохновения для множества тех программистов, которые самозабвенно изучают тонкости iPhone SDK, грезя о пляже с банкоматом. Хотя в последнее время такие случаи в AppStore стали, скорее, исключением, чем правилом - все-таки высокая популярность платформы уже начала играть с ней нехорошие шутки, поскольку в огромном количестве приложений, имеющихся сегодня в AppStore, новые программы, добавляемые туда одиночками или небольшими компаниями, решившими начать свой путь с создания iPhone-приложения, просто теряются в общей массе. Конечно, на самом деле всё не так уж и катастрофично, и при наличии соответствующего продвижения вполне можно иметь неплохой доход, как, впрочем, и на любом другом рынке.
Впрочем, мы собирались обсуждать не столько особенности продвижения или рынка, сколько технические сложности, связанные с написанием приложений. Основная сложность - это, конечно, совершенно автономная экосистема средств разработки (Objective C, XCode и т.д.), сложившаяся стараниями Apple вокруг этой системы. В то же время удобство всех этих инструментов и наличие альтернативных решений в виде MonoTouch делают iOS не таким уж и "страшным зверем", как могло бы показаться поначалу. Разработанные Apple "гайдлайны" и компоненты пользовательского интерфейса тоже облегчают труд разработчиков продукта, особенно тех, кто занят разработкой в одиночку, позволяя сэкономить время на проектировании пользовательского интерфейса, которое нередко происходит дольше, чем его непосредственная реализация в программном коде. В общем, уникальное положение iOS на рынке мобильных операционных систем вызывает определенные затруднения в оценке средней сложности программирования под эту платформу. Можно сказать, что она не слишком высока и сопряжена, скорее, с первоначальными затратами времени и денег, чем с дальнейшей разработкой программного кода.
Android
Как уже говорилось выше, еще год-полтора назад трудно было предположить, что всё сложится именно так, как сложилось, хотя, вроде, никто и не спорил с тем, что у "Андроида", разработки Google, потенциал очень велик. Сегодня же рынок приложений для Android сопоставим с рынком приложений для iPhone, а количество моделей телефонов от разных производителей, поддерживающих эту операционную систему, растёт быстрыми темпами буквально ежедневно. Думаю, что в силу того, что Android до сих пор находится в позиции системы, догоняющий "старшую" платформу от Apple, а также в силу того, что о разработке под iOS я уже много всего рассказал читателям "Компьютерных вестей", думаю, вполне логичным и разумным будет построить рассказ об Android'е в сравнении с "яблочной" платформой.
Во-первых, язык. Для iOS, как уже говорилось выше, главным языком программирования является Objective C - в случае с Android'ом мы получаем возможность работы с Java или C. С одной стороны, и тот, и другой явно распространен гораздо шире, чем Objective C, а это означает легкость в поиске готового кода, более простой подбор команды разработчиков для реализации масштабных проектов и массу других "бонусов". Но, как оказывается на практике, существуют ситуации, в которых Java проявляет меньшую гибкость, чем Objective C (очень хороший пример этого можно увидеть здесь: blog.screencustoms.com/post/638061945/pesky-java-limitation). Хотя, в общем-то, во многом это до сих пор именно вопрос удобства и владения тем или иным инструментом.
Что не может не радовать разработчика, это бесплатность (и, более того, открытость) основных инструментов разработки, в том числе и плагина для Eclipse. Вместе с тем, как свидетельствуют многочисленные примеры тех, кто занимался (или до сих пор продолжает заниматься) параллельной разработкой для двух платформ (iOS и Andoid), в целом, качество Andoid-инструментов заметно ниже качества аналогичных решений для разработки под iPhone и иже с ним. Eclipse, плагин для которого предлагает Google, не устраивает многих разработчиков из-за низкой стабильности работы этого плагина. Есть, конечно, и альтернативные Eclipse решения - например, можно разрабатывать Android-приложения, используя IntelliJ IDEA. Естественно, такое положение вещей становится причиной того, что в действие вступает закон рынка (когда спрос рождает предложение). Сейчас можно встретить большое количество разнообразных и зачастую достаточно странных решений для Android-разработки, которые вряд ли сумеют когда-либо вырваться за пределы небольшой кучки энтузиастов, их разрабатывающих и использующих.
Минус "Андроида" - это, ко всему прочему, ещё и настоящий "зоопарк" из разнообразных устройств, имеющих самые разные параметры, начиная с производителя и размера экрана и заканчивая версией "прошивки". Соответственно, для того, чтобы проверить, как приложение будет выглядеть и работать на экране каждого из этих устройств, нужно потратить очень много сил и времени. В этом плане крайне ограниченный спектр устройств с iOS "на борту" выглядит, нужно сказать, достаточно привлекательно. Разработчики, которые сталкиваются с этой проблемой, переходя на Android с опытом создания приложений для iPhone за плечами, говорят, что в программировании под мобильные девайсы на Java мало что изменилось со времен J2ME - до сих пор остались нерешенными проблемы совместимости, и принцип Java "написано один раз, запускается везде" на мобильных платформах работает по-прежнему не очень хорошо.
Есть, конечно, в арсенале Android такая "фишка", которая вряд ли когда-либо появится у iOS. Это, App Inventor, в котором как элементы интерфейса, так и фрагменты кода изображены в виде графических блоков, которые можно комбинировать и встраивать друг в друга для получения необходимого функционала. Пока что это, в общем-то, просто занятная игрушка, но, кто знает, может, однажды созданное с её помощью приложение станет настоящим хитом, и на App Inventor взглянут по-другому?
В общем и целом, как видите, у Android есть также свои минусы, но, в целом, сложности с разработкой приложений для него привычнее рядовому разработчику, а инструменты - ближе и понятнее. Таким образом, в среднем, никогда не писавшему для мобильных ОС человеку одно и то же мобильное приложение будет проще написать всё-таки для Android'а, а не для iOS.
Продолжение обсуждения популярных мобильных платформ ищите в следующем номере "КВ".
Вадим СТАНКЕВИЧ,
[email protected]
Комментарии
Ребята забывают, что компилятор не желает что-то "додумывать" за тебя, чтобы твой код был "секси".
Такие методы прокатывают в конструкциях на С/С++ и прочих языках, но и являются причиной багов, когда кто-то другой или даже сам ты через полгода при изменении кода с ходу "не воткнешься" в свой "секси" финт ушами :)