Рынку мобильных приложений уже больше десяти лет, однако он до сих пор бурно развивается. Спрос на создание мобильных приложений со стороны компаний постоянно растёт и он всё ещё заметно превышает предложение, что приводит к постоянному удорожанию разработки. Одно из решений в удешевлении этого процесса — кроссплатформенная разработка, когда один и тот же программный код используется на всех платформах.
В прошлый раз мы касались кроссплатформенной разработки мобильных приложений больше двух лет назад и с тех пор многое изменилось. Настала пора поговорить о методах и инструментах снова.
Давайте для начала пройдемся ещё раз по терминологии.
Родные
Преимущества нативных приложений:
- скорость работы и отклика интерфейса. Приложение реагирует на нажатия мгновенно, практически отсутствуют задержки в анимации, скроллировании, получении и выводе данных;
- понятный и простой доступ к функциям и датчикам устройства. Для разработчика не представляет проблемы работа с геолокацией, , съёмкой фото и видео через камеру, звуком, акселерометром и другими датчиками;
- возможность углублённой работы с функциями смартфона. Как и в предыдущем пункте, такие вещи, как анимации, создание сложных интерфейсов и работа нейросетей прямо на устройствах реализуются, может быть, и не просто, но прогнозируемо;
- родной для платформы интерфейс. Нативные приложения обычно оперируют «платформенными» элементами интерфейса: меню, навигация, формы и все остальные элементы дизайна берутся от операционной системы и потому привычны и понятны пользователю.
Недостаток один — дороговизна разработки и поддержки, в том числе потому, что для каждой платформы надо писать свой код.
Что учить новичку в Android: Java vs Kotlin? Мобильный разработчик [Ru, Android]
И не родные
Кроссплатформенные приложения пишутся сразу для нескольких платформ на одном языке, отличном от нативного. Как такой код может работать на разных устройствах? Тут тоже есть два подхода.
Первый заключается в том, что на этапе подготовки приложения к публикации он превращается в нативный для определённой платформы с помощью транспилера. Фактически один кроссплатформенный язык программирования «переводится» на другой.
Второй — в том, что к получившемуся коду добавляется определённая обёртка, которая, работая уже на устройстве, на лету транслирует вызовы из неродного кода к родным функциям системы.
Предполагается, что большая часть такого кода может переносится между платформами — очевидно, что, например, логика совершения покупок, сохранения товара в корзину, просчёта маршрута для такси, написания сообщения в мессенджер не меняется в зависимости о того, Android у клиента или iOS. Нужно лишь доработать UI и UX для платформ, но сейчас, в определённых пределах, даже это можно объединить — например, активно используется как на Android, так и на iOS. Так что даже внесений исправления в интерфейс для того, чтобы приложение отвечало духу и букве нужной платформы — вопрос желания, необходимой скорости и качества разработки.
Почему Java для десктопа это плохая идея и какие есть аналоги
- стоимость и скорость разработки. Так как кода надо писать заметно меньше, то и стоимость работ снижается;
- возможность использовать внутренние ресурсы компании. Как мы покажем дальше, разработку кроссплатформенных приложений зачастую можно осуществить силами уже существующих у вас программистов.
- неродной интерфейс или, как минимум, необходимость работы с интерфейсом каждой платформы отдельно. У каждой системы свои требования к дизайну элементов и иногда они взаимоисключающи. При разработке это необходимо учитывать;
- проблемы в реализации сложных функций или возможные проблемы работы даже с простыми процедурами в силу ошибок самих фреймворков разработки. Кроссплатформенная среда лишь транслирует запросы к системным вызовам и интерфейсам в понимаемый ею, системой, формат, и потому на этом этапе возможны как сложности с пониманием, так и возникновение ошибок внутри самого фреймворка;
- скорость работы. Так как кроссплатформенная среда является «надстройкой» над кодом (не всегда, но в определённых ситуациях), в ней возникают свои задержки и паузы в отработке действий пользователя и выводе на экран результатов. Это было особенно заметно несколько лет назад на смартфонах, более маломощных относительно сегодняшних, однако сейчас, с ростом производительности мобильных устройств, этим уже можно пренебречь.
Как видите, эти два метода практически являются зеркальным отражением друг друга — то, что плюсы у нативной разработки приложений, минусы у кроссплатформенной, и наоборот.
Популярные платформы и инструменты кроссплатформенной мобильной разработки
Как мы написали выше, есть два подхода — превращение кода в нативный на этапе сборки или добавление определённой обёртки, транслирующей вызовы к системе и от неё.
Cordova и PWA — два инструмента, работающие как раз в идеологии обёртки.
Cordova и HTML5
Одно из самых популярных направлений в кроссплатформенном программировании, которое часто называют PhoneGap. Фактически создаётся мобильный сайт, который «оборачивается» небольшим платформенным кодом, транслирующим вызовы от системы к приложению и обратно.
Все недостатки и достоинства тут выражены как нигде ярко. Вы можете использовать (HTML, CSS и JavaScript как основные технологии) и за месяц или даже пару недель сделать первую версию приложения за относительно небольшие деньги. Да, она будет подтормаживать в работе, возможно, в ней будет не совсем точная геолокация, но она будет работать на всех устройствах и позволит вам, как минимум, протестировать спрос со стороны клиентов на мобильных устройствах.
Для такого подхода создано огромное количество фреймворков, но все они делают фактически одно и тоже. Различие между ними в том, что Cordova (PhoneGap) не задаёт ограничений и шаблонов на логику и UI для вашего , а фреймворки оперируют собственными готовыми , имитирующими мобильные платформы, и своей логикой разработки. В качестве примера такого подхода можно указать: Ionic Framework — обёртка; Framework7, Mobile Angular UI, Sencha Touch, Kendo UI — интерфейсные фреймворки.
PWA
Модная технология от Google — это те же самые , но за счёт использования определённых технологий (в первую очередь это так называемые Service Worker — работающие в фоновом режиме скрипты, и Web App Manifest — описание в понятном для мобильной системы виде) они без обёртки из PhoneGap могут работать как нативные. Они могут устанавливаться на домашний экран в обход магазина приложений, работать в офлайне, работать с , с нативными функциями.
Проблема в том, что не все платформы даже сейчас поддерживают эти «определённые технологии». В первую очередь это касается Apple, которой, видимо, очень не нравится возможность распространять приложения в обход App Store.
Учтя все недостатки , многие компании создали инструменты, которые позволяют писать код на одном, не нативном, языке, а он потом транслируется в нативный. Так убивается два зайца одновременно: кодовая база получается одна, а приложения получаются максимально близки к нативному.
Xamarin
Платформа компании Microsoft. Используется стандартный для язык программирования С#, кроссплатформенная среда разработки — Visual Studio. На выходе — нативные приложения для iOS, Android и Windows. Правда, относительно большого размера.
React Native
Платформа от Facebook — приложения пишутся на JavaScript и с использованием стилей. Интерфейс получается родной, а код интерпретируется уже на платформе, что придаёт ему нужную гибкость.
Будучи относительно молодой платформой, React Native пока очевидно (хоть и не катастрофически) страдает от недостатка средств разработки и документации.
Flutter
Естественно, не мог обойти тему кроссплатформенной разработки Android и iOS-приложеий и такой гигант, как Google. Flutter, пока, правда, существующий только в , исповедует отличный от React Native и Xamarin подход. Он не превращает исходный код в нативный, который выполняется платформой, а на самом деле рисует окно на экране смартфона и отрисовывает все элементы сам. В качестве языка используется «фирменный» Dart, который Google создал как усовершенствованную версию JavaScript.
У этого есть как преимущества (например, внешне идентичные интерфейсы), так и недостатки (например, перерисовка интерфейса требует определённых затрат памяти и процессорного времени).
Платформа быстро развивается и Google вкладывает в это много сил и средств. Но по сравнению с Flutter даже React Native кажется вполне устоявшейся и впечатляющей экосистемой.
Что выбрать
У вас уже наверняка пошла голова кругом, а понимания что выбрать, так и не появилось. Давайте представим простой список вопросов, который вам поможет:
- должно хоть работать на любом устройстве? Выбирайте HTML как основу;
- у вас достаточно средств, нет спешки и вы хотите самое качественное приложение? Вам прямой путь в нативную разработку;
- у вас есть «встроенный» или вы просто хотите быстро и просто попробовать мобильное приложение в деле? Тут можно рекомендовать Cordova/HTML или PWA;
- у вас есть собственная и поддерживающий ее C#-разработчик? Берите Xamarin;
- вы «хотите попробовать», но надо сделать всё красиво и модно? Смотрите в сторону React Native или Flutter.
Можно зайти и с другой стороны. Посмотрите на функциональность, которая вам потребуется в приложении, и исходите из этого:
- простое ? Возьмите React Native или HTML5 и вы получите две платформы за минимальную цену;
- у вас есть сайт с большой посещаемостью и вам нужно протестировать гипотезу присутствия в мобильном пространстве? HTML5;
- сложные приложения с доступом к нужным функциям устройств? Нативная разработка, Xamarin, React Native.
Кроссплатформенная разработка — не панацея
При выборе нужно исходить из поставленных задач и существующих ресурсов. Кроссплатформенная разработка — хорошее и понятное направление, но со своими преимуществами и недостатками, которые нужно иметь в виду ещё до запуска проекта. Сделанное кроссплатформенное приложение очевидно лучше несделанного нативного. Вы можете быстро и дёшево разработать его, загрузить в магазин и просто проверить спрос со стороны пользователей — ищет ли кто приложение от вас, устанавливает ли, какие функции использует. По результатам такого эксперимента можно будет решать судьбу мобильного направления в вашей компании и инвестиций в него.
У вас остались сомнения и вопросы о кроссплатформенных приложениях? Почитайте о том, как мы создавали приложение ClassBoom для быстрого получения абонемента в одно из спортивных заведений города и попробуйте приложение ВсеПлатежи для оплаты всевозможных видов услуг — от ЖКХ до заказов в . А лучше запишитесь на бесплатную консультацию, заполнив форму с указанием примерного бюджета и кратким описанием идеи или свяжитесь с нашим менеджером Катей по телефону .
Источник: livetyping.com
Языки веб программирования необходимые программисту
С момента изобретения вычислительных машин человеком было придумано свыше 8000 языков программирования, и с каждым годом это число увеличивается. Многие из них применяются лишь для специфических задач, а некоторые вовсе придуманы ради шутки. Но есть языки web-программирования, без применения которых появление Интернета в известном нам сегодня виде было бы попросту невозможным. Предлагаем рассмотреть эту категорию языков более подробно.
Что такое язык программирования?
Согласно официальному определению, язык программирования представляет собой формальный язык, используемый для записи программ, выполняемых компьютером. Он включает набор семантических, лексических, синтаксических правил, в соответствии с которыми выглядит и работает написанная программа. Под последней понимается набор инструкций, выполняемых ЭВМ по заданному программистом порядку. Обычно это вычислительные процессы, управление разного рода объектами, другие задачи, например, манипулирование структурами данных.
Виды языков программирования
- Клиент. Этот термин характеризует браузер пользователя, через который к сайту поступает запрос. Клиентские приложения пишутся преимущественно на JavaScript, значительно реже на VisualBasicScript. Для их обработки браузеры имеют интерпретатор.
- Сервер. Компьютер, на котором располагаются файлы сайта, базы данных и все, что нужно для обработки запросов клиента. Для написания таких приложений применяются: PHP, Python, Java (не путать с упомянутым ранее JavaScript), Perl, C, Ruby, многие другие.
Разработка клиентских приложений относится к сфере frontend, куда также входит создание пользовательского интерфейса, например, дизайна. Серверная часть относится к backend. Также используется понятие fullstack — комплексная разработка обеих упомянутых выше составляющих.
Популярные языки web-программирования
Несмотря на многообразие средств для создания веб-приложений, круг популярных инструментов весьма ограничен. Для frontend-разработки в большинстве случаев используется только JavaScript. Его средствами веб страницы становятся интерактивными, например, за счет анимации элементов.
Методы backend-разработки куда многочисленны. Особенно популярны перечисленные ниже:
- Java. Один из самых востребованных инструментов для разработки веб-приложений. Достаточно дружелюбный даже для начинающих пользователей, пусть не настолько лаконичный по сравнению с Python. Программист со знанием Java без труда найдет работу.
- Python. Универсальный вариант, который одинаково хорошо подходит для создания логики работы сервера, управления большими объемами данных, проектирования нейросетей.
- C#. Мощное средство для написания крупных проектов большой производительности. Является некоторой альтернативой Java, легко учится после изучения последнего.
- PHP. На нем написаны сотни тысяч иностранных, российских проектов. Примечателен относительно низким порогом входа, быстродействием, широкими возможностями.
- Ruby. По некоторым параметрам похож на упомянутый ранее Python. Отличается простым синтаксисом, используется преимущественно для разработки скриптов, приложений.
Умение оперировать хотя бы одним из перечисленных средств дает разработчику возможность создавать достаточно мощные программы. Однако на одном языке зацикливаться не стоит. Важное качество любого программиста — умение и желание постоянно обучаться новому в профессии.
Что нужно знать программисту для успешной работы?
В любой сфере выбор инструмента зависит от запланированных задач. То же правило действует в среде веб-разработки. Определитесь, какую часть хотите писать — клиент либо сервер. Первый вариант значительно сокращает набор необходимых знаний до следующего списка:
- JavaScript. Основа при разработке интерактивных элементов сайтов, веб-приложений.
- HTML. Инструмент для гипертекстовой разметки, на которой строится структура сайта.
- CSS. Применяется при верстке страниц. Неразрывно связан с упомянутым HTML.
Современному программисту, который интересуется веб со стороны backend, нужно знать как минимум один основной язык, на котором пишутся серверные приложения. Это может быть Python, Java или C#. Управление базами данных требует понимания SQL, а написание веб сценариев, скриптов невозможно без знания PHP, Lisp, Ruby. Fullstack-программисту нужно иметь навык работы с инструментами как для разработки интерфейса веб, так и для настройки сервера.
Источник: synergy.ru