Кроссплатформенная разработка мобильных приложений подразумевает использование одного и того же программного кода на всех платформах (android/iOS). Это позволяет писать приложения быстрее и эффективнее. Но не всё так просто. Для того, чтобы код мог работать на разных платформах, используют различные подходы. Например, есть вариант, когда написанный программный код превращается в нативный для определенной платформы. По факту, один язык программирования переводится на другой. Или существует вариант, когда написанному коду добавляют “обёртку”, которая позволяет при работе приложения транслировать вызовы из неродного кода к родным функциям системы.
В “Digital nomads” мы пишем кроссплатформенные приложения на React Native и Flutter.
React Native.
Первый релиз состоялся в 2015 году. React Native - это платформа с открытым исходным кодом, созданная Facebook. Приложения пишутся на JavaScript и с использованием CSS-подобных стилей. Общая архитектура -на платформе пишутся нативные плагины, а параметры передаются через мост. В промежутке между JS и платформой находится Yoga — кроссплатформенный движок, который реализует flex-box layout на целевой платформе. Интерфейс получается родным, а код распознаётся уже на платформе.
Flutter.
Первый релиз состоялся в конце 2018 года. Flutter - платформа для разработки мобильных приложений, созданная Google. Архитектура Flutter отличается от React Native тем, что не превращает исходный код, а сам рисует каждый пиксель, контролирует жесты и анимацию.
В качестве языка используется «фирменный» Dart, который Google создал как усовершенствованную версию JavaScript. Преимущества такой разработки в том, что внешне интерфейсы будут идентичны. А недостатки в том, что на прорисовку каждого интерфейса тратится программное время и память.
Платформа Flutter очень молода, её активно развивают. В теории она будет поддерживать всё, что угодно. На практике хорошо поддерживаются iOS и Android. Активно развивается Web. Фактически успех на web-поприще определит дальнейшую популярность фреймворка во всем мире.