Поддержать TUT.BY
61 день за решеткой. Катерина Борисевич
Коронавирус: свежие цифры


Вадим Станкевич

Часть 1

Платформа Google Android продолжает вызывать большой интерес как у потенциальных пользователей мобильных устройств, разработчиков приложений для этих устройств, так и мобильных операторов. И, что интересно, несмотря на то, что сама эта платформа вышла уже достаточно давно, о ней по-прежнему ходит много слухов, которые настало время развеять.
 
Для начала стоит напомнить, что Android – это операционная система для портативных устройств, основанная на ядре GNU/Linux. Первая версия Android вышла осенью 2008-го года, и уже тогда вызвала большой интерес у публики. Практически сразу после выхода платформу начали сравнивать с мобильной платформой от Apple, которая сегодня называется iOS. В этом нет ничего удивительного – собственно говоря, с самого начала было понятно, кто является основным конкурентом новой платформы от Google.
 
Можно долго и со вкусом сравнивать эти две платформы с точки зрения пользователя – в Сети уже выложено немалое количество подобных сравнений. Мы же сейчас посмотрим на них глазами разработчика.
 
Первое отличие между iOS и Android заключается в языках программирования, которые можно использовать для создания программного обеспечения под эти платформы. Если для "яблочной" платформы производитель настойчиво рекомендует использовать Objective C (хотя с недавних пор можно воспользоваться Mono Touch для написания программ на C#, но так пока что делает сравнительно небольшое число iPhone-разработчиков), то для Android доступны более привычные для большинства программистов языки – а именно, Java и C. Казалось бы, нужно этому радоваться – но, как оказывается на практике, существуют ситуации, в которых Java проявляет меньшую гибкость, чем Objective C (очень хороший пример этого можно увидеть здесь).
 
Впрочем, язык программирования и его удобство – это субъективные для каждого разработчика предпочтения. Есть и более насущные для Android-разработчиков проблемы. Например, отсутствие действительно хорошей и удобной среды разработки. Eclipse, плагин для которого предлагает Google, довольно популярен среди разработчиков, однако не смотря на свои плюсы имеет ряд недостатков. Есть, конечно, и альтернативные Eclipse решения – например, можно разрабатывать Android-приложения, используя IntelliJ IDEA. Сейчас можно встретить большое количество разнообразных и зачастую достаточно странных решений для Android-разработки (например, вот это: http://www.onebitwonder.com/projects/android).
 
Впрочем, как говорят разработчики, которые успели поработать с XCode при написании приложений для iPhone/iPad, по удобству разработки все ухищрения для Android-разработчиков не слишком превосходят старый добрый "блокнот". Впрочем, разрабатывать все равно в чем-то нужно, а поэтому можно просто вооружиться своим любимым IDE для Java и следовать инструкциями, изложенным Google в следующем документе: http://developer.android.com/guide/developing/other-ide.html.
 
Есть у "Андроида" и другие минусы, которые тоже не сразу бросаются в глаза начинающему работать с этой платформой разработчику. Например, Apple предлагает разработчикам вести разработку под очень ограниченный набор устройств с заранее известными разрешениями экрана и только одного производителя, что заведомо значительно упрощает для разработчиков процесс тестирования написанного ими ПО. С Android ситуация совершенно иная – производителей несколько, устройств – просто целый зоопарк, причем устройства довольно разительно отличаются друг от друга (кто не верит – обратитесь  в каталог Onliner.by и поищите там Android-устройства). Соответственно, для того, чтобы проверить, как приложение будет выглядеть и работать на экране каждого из этих устройств, нужно потратить очень много сил и времени.
 
Разработчики, которые сталкиваются с этой проблемой, переходя на Android с опытом создания приложений для iPhone за плечами, говорят, что в программировании под мобильные девайсы на Java мало что изменилось со времен J2ME – до сих пор остались нерешенными проблемы совместимости, и принцип Java "написано один раз, запускается везде" на мобильных платформах работает по-прежнему не очень хорошо.
 
Но наибольшие нарекания у Android-разработчиков вызывает пользовательский интерфейс, предлагаемый Google. Конечно, Apple славилась и славится своими интерфейсами не зря – недаром же из их продуктов заимствуют интерфейсные решения в самом буквальном смысле все, кому не лень, включая таких гигантов, как Microsoft. Благодаря продуманным "гайдлайнам", предлагаемым Apple, интерфейсы большинства приложений, разработанных для "яблочных" платформ, отличаются привлекательным внешним видом. У Google с пользовательским интерфейсом, конечно, нет таких давних и таких теплых отношений, что чувствуется и по стандартному UI Adroid’а – многих элементов управления, по отзывам разработчиков, не хватает, и их приходится дописывать самостоятельно, из-за чего теряется единообразие интерфейса и снижается его удобство для конечного пользователя.
 
Часть 2
 
Говоря о разработке приложений Android и сравнивая её с разработкой приложений под iOS, мы немного упустили из виду других видных участников рынка мобильных операционных систем – Windows Mobile и Symbian. Поэтому сейчас пару слов будет и о них.
 
С Windows Mobile всё практически так же хорошо, как и с iPhone – за исключением, разве что, того, что для этой платформы пока что нет такого удобного средства продвижения и продажи приложений, как Apple AppStore. Хотя Microsoft уже запустила Windows Marketplace for Mobile, и, вполне возможно, что с ресурсами этой корпорации ей действительно удастся повторить если не весь успех Apple, то, по крайней мере, значительную его часть. Со средствами разработки и компонентами интерфейса для Windows Mobile все обстоит просто замечательно – разрабатывать приложения в Visual Studio весьма удобно, а большое количество как "родных", так и написанных сторонними разработчиками элементов управления позволяет создавать удобные интерфейсы без особых затрат сил и времени. Да и в целом, NET Compact Framework позволяет создавать приложения с большим комфортом, чем Android SDK. Хотя, конечно, проблема адаптации интерфейса под разные устройства остается актуальной.
 
Что касается Symbian, то под эту платформу принято писать приложения в основном на C++ (хотя если есть желание, то можно найти и другие варианты, вплоть до Visual Basic’а), а программирование на этом языке в силу ряда его особенностей считается более сложным, чем программирование на C# или Java. Причем для программирования под Symbian используется свой диалект C++. Впрочем, писать под Symbian на Java тоже вполне можно. Для разработки интерфейса можно воспользоваться библиотекой Qt, хорошо известной, тщательно "вылизанной" и не вызывающей никаких нареканий у разработчиков. Соответственно, и в качестве среды разработки можно использовать Qt Creator – но можно предпочесть и проверенные временем CodeWarrior или Carbide. Проблема "зоопарка устройств" для Symbian так же актуальна, как для Android и Windows Mobile. Так что для того, чтобы приложение хорошо выглядело  везде , придется постараться.
 
Что же можно сказать, прочитав все сказанное выше? Вывод в стиле "iPhone рулит, Android маст дай" был бы слишком простым… и слишком неправильным. Просто все-таки Android – довольно молодая платформа, и, в отличие от iOS, не интегрированная с какими-то определенными устройствами. Возможно, Google действительно несколько поспешила, выпустив на рынок немного сыроватую платформу, но писать код для неё уже сейчас вполне можно – пошаговые инструкции на сайте http://developer.android.com позволят взяться за разработку под эту платформу даже тому программисту, кто никогда и не помышлял о создании собственного мобильного приложения. К слову, таких набралось уже не мало – под платформу Android, уже написано около ста тысяч приложений. Это меньше почти в два раза, чем под iOS, тем не менее, все равно впечатляет.
 
Думаю, по мере увеличения количества разработок под Android подтянутся и производители IDE, и проектировщики интерфейсов, и производители устройств – это все просто вопрос времени. И, судя по темпам развития Android’а, время это измеряется не в десятках лет, а в считанных месяцах.
 
Вадим Станкевич
 
-25%
-12%
-20%
-20%
-10%
-20%
-10%
-20%
-50%