Будни Android разработчика (ч.5 - Мобильная разработка - это темный лес, верно?)

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


Занимаясь фрилансом, очень часто можно заметить ситуацию, что заказчикам нужно приложение, которое работает одновременно и под Android и под iOS (а ещё, чтобы оно умело *огромный список функций*, сделать за неделю, за $100, опыт у разработчика 5+ лет. Эх... романтика бирж фриланса). Подобные моменты могут вызвать фрустрацию у неопытного разработчика. По крайней мере у меня вызывали первое время.


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


В списке рассматриваемых мною фреймворков были:


Ionic Native:

Оф. сайт: https://ionicframework.com/docs/native/

Язык разработки: JavaScript, HTML

Гибридный фреймворк, который использует плагины Cordova и PhoneGap, чтобы получить доступ к нативным функциям. Ionic работает на базе фреймворка AngularJS, что упрощает веб разработчикам, которые знаком с этим фреймворком процесс вхождения в мобильную разработку.

По порядку: что значит гибридный? Приложение, созданное с помощью подобного фреймворка - это, грубо говоря, браузер, который отображает приложение. Таким образом для разметки пользовательского интерфейса используется HTML и CSS. Нативные функции же - это есть системные функции устройства: уведомления, звонки, акселерометр и т.д.

Концепция гибридного фреймворка мне не очень понравилась. Да и с Angular'ом я совсем не знаком. Поэтому я решил не останавливаться на данном фреймворке.


Xamarin:

Оф. сайт: https://www.xamarin.com/

Язык разработки: C#

Здесь уже мы имеем дело с нативным фреймворком, т.е. на этот раз никаких "браузеров", а только "настоящее приложение". В принципе, фреймворк действительно хорош. Очень много положительных отзывов о нём, однако C#. После всего плохого (мягко говоря) кода, что я писал на этом языке в универе и во время геймдева на Unity, я просто не могу снова открыть Visual Studio. Идём дальше.


React Native:

Оф. сайт: https://facebook.github.io/react-native/

Язык разработки: JavaScript

Описание: Кросс-платформенный движок на основе фреймворка для веб-разработки React. Девиз фреймфорка React - "Learn once, write anywhere", т.е. овладев фреймворком React можно свободно писать как веб приложения, так и мобильные. React, как и Xamarin, является нативным фреймворком. Учитывая тот момент, что я, хоть и очень слабо, но был знаком с React'ом и мне нравился его принцип работы, я остановился на нём.


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


Нативная разработка, в свою очередь, так же не лишена преимуществ. Зачастую разработка кросс-платформенного приложения на нативном фреймворке включает в себя и элементы обычной нативной разработки. Ведь нативные функции iOS и Android могут отличаться, поэтому и некоторые модули стоит делать раздельными. Помимо доступа ко всем нативным функциям, к преимуществам нативной разработки можно так же отнести возможно использовать все самые новые функции, появляющиеся с новыми версиями ОС. Фреймворки же не всегда сразу же поддерживают самые новые функции ОС.


На сегодня у меня всё. Занимайтесь мобильной разработкой, а не войной.

Спасибо за внимание.


1 часть:

https://pikabu.ru/story/budni_android_razrabotchika_ch1_5261...

2 часть:

https://pikabu.ru/story/budni_android_razrabotchika_ch2__rab...

3 часть:

https://pikabu.ru/story/budni_android_razrabotchika_ch3__moy...

4 часть:

https://pikabu.ru/story/budni_android_razrabotchika_ch4__pro...