Cайт веб-разработчика, программиста Ruby on Rails ESV Corp. Екатеринбург, Москва, Санкт-Петербург, Новосибирск, Первоуральск

Будущее мобильных приложений - нативные или HTML

Меня искренне удивляет уверенность некоторых разработчиков в том, что исключительно нативные (native - собственный, уроженец, абориген) мобильные приложения будут основой для мобильных устройств, что за ними (нативными приложениями) будущее. Во-первых - это сложность написания самого по себе нативного кода, так как приходится практически все механизмы реализовывать самостоятельно, особенно то, что преподносится как основное приемущество - непосредственный доступ к функциям мобильного устройства, во-вторых - чтобы достичь совместимости и работы нативного мобильного приложения хотя бы на многих мобильных устройствах (я уж не говорю обо всех), надо очень и очень постараться, а это опять же усложнение кода приложения - уже получается набор "костылей" какой-то, инвалид. Как следствие - совершенный разброд в рядах разработчиков - каждый реализует снова и снова свои собственные алгоритмы работы приложения, борется за совместимость с различными ОС и платформами. Но это ж бред какой-то!... прошлый век!

Мне это чем-то напоминает ОС DOS 90-х годов... только там хотя бы была одна операционка, зато программы - кто во что горазд! Только собственный код, только собственные алгоритмы. Был уже период нативных приложений, все это уже было. Пришли 2000-е годы, появился Интернет, а с ним - хоть какая-то, но стандартизация - ибо невозможно предусмотреть все устройства, существующие в Сети. Наконец-то пришли к поистине тонким клиентам - есть серверы баз данных, серверы Интернет - они выполняют хранение и обработку порой просто огромных объемов данных, и это правильно, и это хорошо! На стороне клиента остался браузер - человек видит только результаты, пользуется ими. Да, была война браузеров, но и она по сути закончилась - все пришли к более-менее единому знаменателю - есть стандарты HTML, CSS. Я с уверенностью могу сказать как разработчик - использование HTML, CSS и какого-либо скриптового языка программирования - это просто, удобно и эффективно!

Сейчас поистине стало удовольствием писать приложения для Интернет, веб-приложения, сайты (я сам занимаюсь профессиональной разработкой) - с большей уверенностью в том, что мое веб-приложение будет работать на подавляющем большинстве клиентских устройств. Я думаю, что сейчас уже никто не будет оспаривать удобство и пользу Интернет. А по большому счету это произошло потому, что когда есть стандарты, разработчику уже не приходится сочинять различные "костыли" в своей программе - он уже пользуется этими стандартами, описывает внешний вид приложения с помощью HTML, CSS, пишет код приложения, бизнес-логику и уже не задумывается о том, что где-то может не быть какой-то библиотеки или где-то не обработаются какие-то данные, или где-то надо специально что-то реализовать, чтобы пользователь увидел все так как надо. Люди пишут бизнес-логику приложений, а не борются с особенностями поведения и реализаций различных ОС и платформ. Используют SQL-серверы для обработки данных, используют библиотеки, пользуются стандартными механизмами.

Лично мое мнение, что этот новый виток мобильных войн закончится тем, что так же как и на десктопных, персональных компьютерах все придет к тому, что появится некоторая "прослойка" стандартная, сейчас это называется браузер, возможно, на мобилах это назовут как-то иначе. Суть даже не в этом. По сути мобильные устройства сейчас - это некий переходный период к более серьезным мобильным устройствам, у которых не будет уже тех ограничений что сейчас - маленький экран, низкая скорость соединения с Интернет. А ведь именно эти факторы подталкивают к написанию нативных приложений, просто не доросли еще чуток мобильные устройства до мэйн-стрима, до нормального Интернет.

Я так думаю, что Марк Цукерберг поспешил обвинять HTML5 в неперспективности. Почему-то мне кажется, что и с мобильными нативными приложениями любовь у него продлится недолго. Да и в общем-то не такой уж и авторитет этот Марк, хотя ход довольно неплох - списать неудачи на "неперспективный HTML5", а заодно взять фору - нативные приложения ведь тоже надо еще написать, а это еще года 2. Позиция Гугл (Google) тут совершенно ясна - вдолбить в голову всем, что нативные приложения - это единственное правильное решение, свелое будущее, тем самым просто продвинуть Android на большее количество мобильных устройств. Совершенно те же цели и у Apple - продвинуть свою платформу на мобильные устройства.

Весь этот ажиотаж поддерживается отчасти и искусственно - у кого достаточно средств, те запросто могут и официальные отчеты предоставить, которые им подходят. У меня есть живой пример - Google Chrome преподносится как перспективный браузер, популярный, впереди планеты всей, но тем не менее по своей статистике посещений своих сайтов я наблюдаю совсем иную картину - FireFox превосходит Google Chrome в 2-3 (!) раза. Так что, не не стоит всему так безоговорочно верить, полезно перепроверять и включать мозг.

Вообще всегда полезно задаваться вопросом - а кому это выгодно? Что бы ни происходило. Сейчас происходит дележка рынка мобильных устройств, только и всего. Весь вопрос только в том - чья платформа соберет больше поклонников. А откуда поклонники? Все верно - тут большую роль играют именно разработчики мобильных приложений, именно нативных, чтобы неповадно было переходить к конкурентам-то!... Будет независимость от платформы, тогда гораздо сложнее удержать потребителя на каком-то конкретном устройстве. Подумайте сами, кому выгодна сейчас вся эта сложность и неразбериха в нативных мобильных приложениях?... Почему никто не хочет договариваться о каких-то общих стандартах и облегчении жизни разработчиков? Да просто рынок еще не поделен, Господа Уважаемые.

Вот когда определятся основные игроки на рынке мобильных устройств, тогда и вернемся мы все снова в Интернет, к давно уже существующим стандартам. Пусть это будет называться не HTML, это не столь важно, как это назовут, факт, что это будет не натив. А разработчики мобильных приложений?... Ну что ж, спасибо им за службу. Тем более, что многие так ратуют за монетизацию приложений. Монетизировали, заодно и очень помогли гигантам индустрии. А теперь все вздохнем с облегчением и продолжим спокойную разработку на HTML(какой-то версии) и еще каких-то стандартных технологиях. Неужели кто-то серьезно думает, что невозможна монетизация стандартных интернет-приложений? Бред!... Любой механизм можно реализовать, стоит только задаться целью. Опять же - а кому это выгодно? Вот, кстати, и довольно показательная статья от разработчика мобильного приложения появилась (уже после прошествия некоторого времени написания мной статьи, как-будто в подтверждение) насчет того, кому все-таки более выгодно размещение платных приложений во всяких там ***Store. Выдержка из той статьи:

Чтобы понять, в чем суть сложности заработка в Аппсторе, стоит подумать над вопросом: в чем, собственно, состоит задача Аппстора для Apple? Это экосистема, которая направлена на развитие и продвижение всей платформы iOS и продажу новых iOS-девайсов. Не на то, чтобы пользователи быстро находили в Аппсторе нужные приложения (кто пользовался поиском внутри Аппстора, тот поймет), а на топ всего из нескольких десятков самых ярких и привлекательных продуктов. В общем смысле выгодоприобретатель в Аппсторе только Apple, и никак не разработчик.

Поэтому несколько наивно ожидать, что ваше приложение зафичерят за то, что оно такое полезное, хорошее и аккуратно выполненное. На мой взгляд, это как было, так и остается самым распространенным заблуждением разработчиков относительно сегодняшних мобильных приложений. Редакторы Аппстора следят не столько за полезностью и уникальностью приложения, сколько за тем, как приложение помогает Apple развивать платформу iOS, выражать ее уникальность, демонстрировать насколько платформа удобна и инновационна. Блоги и сайты, которые пишут обзоры приложений, действуют примерно так же. С Google Play и другими платформами я не работал, но думаю, что там ситуация аналогичная.

И, кстати, еще о монетизации. Многие наивно полагают, что разработчики пишут нативное приложение для мобильных устройств, выкладывают его на какой-нибудь ***store и получают деньги за использование этого приложения. Как бы не так! Мы попробовали найти разработчика мобильного приложения, заказать разработку. По состоянию на май 2013 года разработка нативного приложения для мобильных устройств стоит примерно 250 (!) тысяч рублей (в Екатеринбурге), тогда как разработка средненького интернет-магазина - от 50 тысяч рублей. Почувствуйте разницу! Я не думаю, что за такие деньги будет заказано и написано достаточное количество полезных мобильных приложений.

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

Да, я понимаю молодых разработчиков, которые с каждым новым своим приложением одерживают очередную победу, самоутверждаются, когда их приложение таки заработало на еще одной платформе. Ура! Каски и чепчики в воздух! Тем более, когда происходит такая революция - это поистине вдохновляет молодые умы, это даже не оспаривается. Сам в свое время сколько удовольствия получал от ковыряния в операционных системах, но по сути это совершенно бесполезная трата времени, единственное наверное - это опыт программирования, самообразование, самоутверждение, а вот практической пользы от таких "побед" над ОС нет никакой. Могу посоветовать - вы попробуйте писать на ассемблере тогда - вот уж где поистине нативный код и абсолютно прямой доступ к аппаратуре, вот где настоящий экстрим программирования! Ну это ж глупо - писать под определенную ОС, да еще и на Java и при этом фыркать и чертыхаться в сторону браузеров, называя их "прослойками", вы ведь сами пользуетесь как минимум двумя прослойками - ОС и JVM (Java Virtual Machine), да еще и в рамках определенного API, любезно предоставленного вам.

Люди взрослеют и постепенно уже хочется определенности и занятия более серьезными вещами, задачами, чем борьба с несовместимостью различных мобильных устройств. Уже пора задуматься о написании действительно чего-то полезного, а не говорящих котов и летающих птичек, не очередной погодной или новостной ленты, не очередного навигатора или измерителя скорости. Кстати, именно молодым свойственно отрицание прошлого опыта - "то, что придумали до нас - это как-то так, не особо, а вот мы сейчас ого-го чего придумаем и сделаем!". Нужен разумный копромисс - именно это самое правильное решение. Я думаю, что не стоит отрицать HTML и думать, что только за нативными приложениями будущее.

Вся история движется по спирали, и я как-будто вернулся в те времена, когда появлялись первые персональные компьютеры. Поверьте мне, очень и очень похоже. Мобильные нативные приложения в итоге выполнят свою миссию - увеличат производительность мобильных устройств. Да-да, именно так, потому как написание собственных приложений без особой стандартизации всегда приводит к "распуханию" этих приложений, прожорливости до памяти и ресурсов процессора. Именно то же самое происходило и с персоналками - появлялись все более прожорливые приложения, в итоге сейчас считается нормой жесткий диск 500 гигабайт - 1 терабайт, оперативная память 4 - 16 Гигабайт, а еще помню те времена, когда дискеты на 360 килобайт вполне хватало для множества программ, а жесткий диск на 10 мегабайт - даже и не понимали, как такой объем можно чем-то реально заполнить. Опять же - двигатель прогресса!

Написание собственных мобильных приложений приводит к увеличению мощности мобильных устройств. Придет время, когда будет уже более-менее достаточно ресурсов у мобильных устройств, тогда и выйдет на сцену прослойка в виде браузера (или нечто подобное). Многие уже как-то подзабыли о том, что гугл совершенно недавно преподносил браузер (именно браузер ! ) как универсальную платформу для приложений (Chrome OS). Я думаю, что эту идею они не выбросили, не забыли и не отказались от нее, только пока еще не совсем время, сначала надо сделать ход конем - завоевать рынок и заодно дождаться приемлемой скорости как мобильных устройств, так и скорости беспроводного Интернет - вот тогда и можно будет снова продвинуть идею некоторй "прослойки" универсальной для приложений. А пока многие считают, что вроде как у HTML5 и возможностей недостаточно, и скорость не та. Да-да-да, зато ведь многие разработчики гораздо лучше все сумеют сделать, чем множество людей до них, которые годами двигались к созданию стандарта HTML и CSS, не так ли?

И вот, кстати, о скорости веб-приложений - уже появляются первые ласточки: модуль OdinMonkey, Asm.js - новый JS-движок для создания быстрых веб-приложений, Pixi.js - быстрая 2D графика, 2D движок с прозрачной поддержкой WebGLИгры с физикой благодаря HTML5 и JS (добавил 29.03.2013), В Firefox добавили флэш-плеер Shumway, написанный на HTML5 (добавил 03.10.2013).

Да еще и Firefox OS вдруг появилась... с чего бы это вдруг? Или ребята из Mozilla совсем из ума выжили, чтобы делать ставку на неперспективную технологию веб-приложений на мобильных устройствах? Firefox OS - будущее уже наступило! А еще совместно с Samsung Mozilla начали новый проект: Mozilla и Samsung создают браузерный движок нового поколения Servo (новость 04.04.2013). В Samsung, вероятно, тоже не идиоты работают, а Samsung - лидер на рынке мобильных устройств в 2012 - 2013.
Похоже, FireFox OS двигается уже дальше мобильных устройств (новость от 04.06.2013): Mozilla и Foxconn представили первый планшет на основе Firefox OS

На выставке Mobile World Congress 2014 года компания Mozilla показала мобильный аппарат, который стоит 25 долларов и при этом является смартфоном — работает на базе операционной системы Firefox OS.

Даже сама Google добавила в Android компонент WebView для встраивания в любое приложение веб-браузера. Похоже, от веб-приложений никто не собирается отказываться, наоборот, происходит более глубокая интеграция Интернет и веб-приложений в мобильные устройства. (2015 год)

WebVew отображает веб-страницы. Этот класс является основой, на которой вы можете реализовать свой собственный веб-браузер или просто отображать интернет-контент в вашем приложении. Он использует WebKit движок для отображения веб-страниц и включает в себя методы для навигации вперед и назад по истории, увеличение и уменьшение масштаба, поиск текста и многое другое.

Я совершенно не противник прогресса, очень даже за! Этот очередной виток приведет к развитию мобильных устройств, что очень даже хорошо! Но я совершенно уверен в том, что это будут совсем не смартфоны. Появятся новые технологии, еще больше разовьются существующие технологии - что, кстати, еще более увеличивает шансы использования именно HTML, а не повальный переход на нативные приложения с лозунгом "мы старый мир разрушим, а на обломках новый, лучший мир возведем". И я все же считаю, что будущее совсем не за нативными мобильными приложениями - уж слишком это хлопотно и затратно, слишком много лишних и ненужным деталей, слишком большая зависимость от конкретных устройств и операционных систем. Тот же HTML не стоит на месте, он развивается вместе с мобильными приложениями, чтобы предоставить еще большие возможности, что приведет скорее к более развитым механизмам в HTML, расширению стандарта до взаимодействия с мобильными устройствами, чем к отказу от него и тотальному переходу на натив.

Да, мобильные приложения останутся, точно так же, как сейчас есть огромное множество приложений для Windows, которые мало относятся к Интернет - офисные приложения, программы обработки графики, работа со звуком и видео. Но набор таких приложений вполне конечен - человеку достаточно ограниченного набора стандартных приложений для своей жизнедеятельности. Но и на этом поле многое уже меняется и уходит в Интернет, превращается в веб-приложения. Я с уверенностью могу сказать как профессиональный разработчик, что мне сейчас гораздо проще написать веб-приложение, чем писать программу с тем же функционалом для Windows. Возможно, это еще и потому, что я занимаюсь автоматизацией обработки данных (базы данных), автоматизацией бизнес-процессов, а не пытаюсь написать, например, еще один текстовый редактор или программу обработки изображений. Интересно будет посмотреть на тех нынешних приверженцев "только нативные, собственные приложения!", когда они будут писать очередную "прослойку" для успешной работы обычных веб-приложений на различных мобильных устройствах, на различных ОС.

Человек всегда стремится к упрощению, чтобы абстрагироваться от деталей, потому как именно тогда удобнее управлять именно полезным процессом, а не бороться с деталями, поэтому я считаю, что разработчики все же устанут бороться с нативным кодом. Время, как говорится, покажет, но моего опыта уже достаточно, чтобы наблюдать за процессами и делать выводы.

Позволю себе некоторые выдержки из статей, которые нашел сразу на первой странице поиска "будущее мобильных приложений нативные или HTML":

В Opera Software делают ставку на язык разметки HTML5 в мобильных браузерах, который позволит избавиться от проклятия жуткой фрагментированности экосистемы мобильных приложений, когда программы для одной платформы не подходят для другой (несовместимость нативных приложений для разных платформ - жуткая головная боль разработчиков).

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

HTML5 откроет пути и решения для оснащения веб-приложений богатым графическим наполнением и доступом к локальному хранению данных, притом что имеется полная переносимость на другие платформы.

...мобильный мир быстро шагает вперед, и при таком темпе инноваций решения на базе стандартов вряд ли могут стать правильным подходом к написанию приложений. Интересен тот факт, что Microsoft не навязывает для собственной мобильной платформы стратегию стандартов. В стандарте обычно заинтересованы мелкие конкуренты, Microsoft же мыслит шире. С одной стороны, Microsoft подталкивает разработчиков к использованию своих средств Visual Studio при создании приложений для платформы Windows Phone. Но одновременно та же Microsoft сделала крупную ставку на внедрение HTML5 и JavaScript в разработке для Windows 8. “Большинство известных приложений для Windows 8 и Windows Phone написаны на C# в нативном подходе. Поэтому, вероятно, большинство разработчиков создает нативные приложения и, по-видимому, будет продолжать это делать”. Intel тоже уделяет сильное внимание HTML5.

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

На одном из популярных зарубежных ресурсов был проведен опрос, в ходе которого пользователям предлагалось определить, в каком направлении будут двигаться мобильные приложения дальше.

В результате, 20% проголосовавших выбрали сочетание HTML5 и нативных языков. Полностью нативные приложения набрали 36% голосов. А первое место заняли приложения, разработанные при помощи веб-инструментов, то есть на языке HTML5. 44% пользователей считают, что будущее мобильных приложений за этим инструментом.

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

 

22 февраля 2013