Является ли Flutter от Google еще одной попыткой спасти неудавшийся язык — Dart — или это будущее мобильной разработки? На самом деле еще рано говорить, но с выпуском Flutter 1.0 баланс, похоже, смещается в сторону будущего.
Dart — ничем не примечательный язык — подумайте о другом языке C-типа, блочно-структурированном языке с объектами; или подумайте о JavaScript со всеми убранными новаторскими элементами. То, что он скучный, не означает, что это бесполезный язык, поскольку скучный не является требованием хорошего языка. Однако это не удалось, потому что он не поддерживался в браузере кем-либо, кроме Google, и быстро стало очевидно, что ни один другой производитель браузеров не собирался поддерживать что-то, изобретенное Google, в качестве замены JavaScript.
Так что Дарт как бы ушел в глушь, пока кому-то не пришла в голову блестящая идея — Флаттер.
Дарт — Флаттер — видишь связь?
Возьмите язык Dart и добавьте среду выполнения или «движок приложений» на языке Flutter, и у вас будет что-то, что может работать вне браузера. Сделайте среду выполнения доступной для Android и iOS, и у вас будет способ создавать приложения, которые не являются родными, но которые ближе к нативным, чем веб-приложения. Отсюда вы можете расширить среду выполнения для работы в браузере или на рабочем столе, и у вас есть полное кроссплатформенное решение на одном языке и одной платформе.
Некоторые называют это новым, но, конечно, это совсем не ново. Любая виртуальная машина, как в Java VM, является движком приложения. Так было с Silverlight и любой надстройкой браузера, позволяющей запускать другой язык. Xamarin выполняет ту же работу для Android, iOS и других. Совсем недавно PhoneGap или Cordova работают точно так же, только с Cordova, поскольку «движок приложения» — это компонент браузера, который запускает HTML / JavaScript в собственном приложении. Фактически, Flutter ближе всего к Кордове, чем что-либо другое; только это собственное приложение с настраиваемым движком приложения, а не компонент браузера.
Итак, я полагаю, что реальный вопрос заключается в том, зачем переходить на Flutter, если вы можете выбрать Cordova или Xamarin?
Хороший вопрос, на который сложно ответить.
Скажем, языку Dart нечего предложить по сравнению с C #, и хотя вы можете считать его лучшим JavaScript, вы можете использовать TypeScript и Cordova.
Официальная версия гласит, что Flutter работает быстро. Он утверждает, что компилируется в собственный 32-битный и 64-битный код ARM — без упоминания x86. В нем также говорится, что он использует графический движок Skia 2D, который используется Chrome и Android, но не iOS, на который они не указывают. Заявлена анимация со скоростью 60 кадров в секунду, а в будущем возможно 120 кадров в секунду.
Настоящая проблема в том, как вы делаете UI?
Flutter поставляется со своим собственным UI-фреймворком, который очень похож на любой другой UI-фреймворк. В нем есть множество объектов-представлений, которые вы встраиваете в иерархии с помощью контейнера. Быстрый взгляд на доступные объекты напомнит вам почти любую другую структуру пользовательского интерфейса. Действительно, он очень похож на раннюю платформу Android с линейным расположением строк и столбцов, стеком и сеткой. Чего не хватает, так это печально известного сложного — извините, что я хотел сказать сложного — макета ограничений, который навязывается программистам Android.
Большой шок в том, что весь макет выполнен в коде. Вы пишете операторы Dart для создания своего пользовательского интерфейса. Не существует эквивалента XML или XAML и, конечно же, нет конструктора с перетаскиванием. Это могло бы быть хорошо, но в моих тестах цикл редактирования-компиляции-выполнения был слишком медленным, чтобы можно было быстро разработать сложный пользовательский интерфейс.
Возможно, вам не нравятся редакторы перетаскивания, но если Flutter хочет привлечь новичков, он ему нужен.
Вы можете использовать его через плагин для Android Studio, Intellij или Visual Studio Code. Я попробовал это в Android Studio и обнаружил, что инструкции по установке не совсем понятны. Возможно, однажды в Android Studio появится встроенная опция Flutter, но пока выделите время для ее установки. Когда он будет установлен, будьте готовы дождаться первой компиляции. Медленно даже по сравнению с Android. Перекомпиляция выполняется быстрее, но все же недостаточно быстро. Это серьезная проблема.
На данный момент вы можете подумать, что вердикт вынесен и Flutter больше мертвый лист, чем бабочка, но нет …
Это правда, что на данный момент я бы не отказался от встроенного Android в Kotlin для Flutter, даже если у него есть проблемы. Я также не откажусь от использования Cordova для кроссплатформенности, хотя и с этим тоже есть проблемы, но я все равно буду следить за Flutter.
Почему?
Первая причина заключается в том, что Google, похоже, использует его для внутренних целей, а это означает, что у Flutter больше будущего, чем вы думаете. Операционная система Google Fuchsia также изначально запускает приложения Flutter — что бы это ни значило. Android — это огромный, чрезмерно развитый беспорядок, и через десять лет Google вполне может найти замену. Возможно, появление большого количества приложений Flutter упростит внедрение Fuchsia.
Да, если Google действительно удастся справиться со второй хитовой ОС с Fuchsia, Flutter где-то там будет, но это долгий путь, а не годы, а не месяцы.
Между тем стоит отметить, что Flutter Desktop находится на ранней стадии разработки для Windows, MacOS и Linux. Есть даже инструкции, чтобы запустить его на Raspberry Pi. Возможно, при достаточной поддержке это может быть интересным способом создания приложений.
Майк Джеймс — автор книг «Программирование Android в Kotlin: Начиная с приложения» и «Программирование Android в Java: Начиная с приложения», 3-е издание, посвященное Android Studio 3.