Pull to refresh

Comments 54

  1. Flutter не обращается к нативу. Вместо этого Dart запускает собственный контейнер на устройстве, который отображает весь контент Flutter. За счет этого Flutter быстрее других кроссплатформенных фреймворков.

Если он не обращается к нативу, то за счет чего быстрее? Как, в принципе, можно быть быстрее натива?

Привет! Ответ кроется в вопросе, Flutter не быстрее натива, но быстрее других кроссплатформенных фреймворков, которые пытаются обращаться к нативу и из-за этого проигрывают в скорости.

Так "быстрее" в данном случае имелось ввиду "быстрее идет разработка"?

p.s. Для ленивых ссылка на канал LazyLoad Dart & Flutter

и да, ты абсолютно прав. Разработка на Flutter идет быстрее чем разработка параллельно на Kotlin и Swift.

тем что натив как правило реализуется засчет софвер части, например Qt (но не QML) или Win32. Флаттер (и QML) в данном случаем может ускорять именно рендеринг засчет opengl/vulkan бэкендов

Во многом за счет того, что сам Dart достаточно быстрый

Все описанные вами якобы преимущества есть у Qt. Чем Flutter лучше Qt? Единственный минус, Qt в некоторых случаях платная. Но Flutter - инструмент одной компании, которая любит хоронить проекты и двигать разработку туда, куда сама хочет.

Qt и C++, Kotlin Multiplatform — как езда на машине с ручной коробкой передач по бездорожью. Есть доступ к самому низкому уровню, где почти нет ничего готового. Либо нужно писать все самостоятельно, вплоть до отрисовки внешнего вида кнопок, либо реализовывать отдельно для каждой платформы связь со стандартными компонентами. Получить выгоду в таком подходе получается только для специфических задач, обычно все наоборот.

Кхм. Основная фича Qt это как раз native look всех компонент. Как бонус, можно тот же material design использовать, если нужен одинаковый вид на всех платформах. Так что тут как раз всё гибко. За те 8 лет что я на Qt мне ни разу не приходилось программно рисовать компоненты. Подскажите, какой у вас опыт работы с Qt?

небольшой. Делал 3D Viewer на Qt и проклинал все что можно :)

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

Да. В четвёртой версии они использовали нативные виджеты, но в пятой почему-то от этого ушли.

Не использовали они. Вы путаете с WxWidegts. Qt под капотом не создаёт контролы, но для отрисовки по умолчанию используется платформенный апи. Поэтому, к примеру, даже при изменениях в стилях винды всё будет работать без перекомпиляции.

https://doc.qt.io/qt-5/qwidget.html#native-widgets-vs-alien-widgets

Introduced in Qt 4.4, alien widgets are widgets unknown to the windowing system. They do not have a native window handle associated with them. This feature significantly speeds up widget painting, resizing, and removes flicker.

До 4.4 родные контролы всё-таки были. Правда, тут объясняется, почему они от этого ушли.

Нет их там и никогда не было, нативные окошки по ссылке это совсем под другое. По сути Qt это просто "рисовалка", ей нужен лишь достаточный механизм, чтобы нарисовать собственный растр в окошке и обработать ввод.

Может быть я, что-то не понимаю, но по ссылке из виджетов, есть только нативный тулбар.

Ну так это частный случай. В Qt даже есть апи, чтобы создать наитивное окно и получить его хэндл. Используется если вам надо что-то внешнее встроить. Например, вы редактор игр делаете и нужно встроить рендер игрового движка.

Все стандартные контролы рисуются средствами ОС. Но только рисуются. Поведение обрабатывается уже внутри Qt.

Вы явно плохо понимаете что такое "низкий уровень" и Kotlin Multiplatform. Ваши слова справедливы лишь относительно C++/Qt, отчасти.

У C++ большой порог вхождения по сравнению с Dart. И у Google больше денег чем у The Qt Company.

По мне так куда проще использовать один язык вместо двух. Вы же не будете логику приложения писать целиком на Dart?

Ни разу не проще если это C++. Куча времени и сил было потрачено, что бы отлавливать крешы C++ https://habr.com/ru/post/333448/

Тот же 2gis в своё время портанул Qt4 на Android/iOS. А потом стал переписывать на нативные.

Инструментарием лучше.

И Qt платная не в некоторых, а практически во всех случаях. За то время пока с лицензиями Qt разберёшься - можно приложение на Flutter целиком написать.

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

Qt изначально был коммерческий проект.

Обновил воспоминания. Действительно, у Qt с самого начала была двойная лицензия, стало быть подлянка by design. Заодно обновил представления о LGPL - как же красиво прекраснодушных дурачков натянули! И теперь либо нарушение LGPL, либо никаких приложений для iOS и Android.

Поэтому рядом с тем, что free as in beer, всякого Qt прошу не упоминать.

В чём-то вы правы. Впрочем, учитывая превосходную документацию, качество кода самого Qt и в целом стабильность и зрелость, я выберу платный Qt.

Но, конечно, если речь не о коммерческой разработке, а о pet проектах или попытках сэкономить то да, Qt не лучший выбор.

Под android проблем с LGPL нет. Насколько помню Apple против GPL/LGPL. Напоминаю, что xamarin то же был не бесплатный https://www.g2.com/products/xamarin/pricing

Это единственный способ монетизировать UI Framework, если за ним не стоит FAANG.

Точно не единственный - Unreal и Unity монетизируют же. И ещё есть платная поддержка. И ещё есть обучение. И спонсоры, коим интересно влиять на направление разработки.

То, что делает Qt, не только омерзительно, но и, скорее всего, не оптимально. Сравним с Эппл - мастерами высасывать деньги. Хочешь xCode - купи Мак, $800+. Не хочешь Мак - купи iPad, $320, и пользуйся Playgrounds. Будут не все возможности и удобства, но до магазина можно дойти. И так со всеми IDE, начиная с VS.

А с LGPL на Андроид, насколько я её понимаю, проблема - LGPL требует поместить код в динамическую библиотеку и обеспечить каждому возможность замены поставляемой библиотеки на свою, а какая на Андроид замена?

Проблема в чем? Распокавать пакет, поменять либу, запаковать в пакет.

Как минимум - более удобный и простой в освоении язык разработки. Dart практически идентичен C# и Java. Более подходит для высокоуровневой разработки. Для движков игр и пр. - C++, конечно, лучше.

Мало того что платная.
не в некоторых случаях.
А в случае коммерческого использования!
читай если вы на работе, то она платная.
так еще в РФ нельзя вообще купить теперь.
запрет на покупки.
только для некоммерческого использования.

Qt это тоже инструмент одной компании.
и к РФ Qt относится гораздо хуже чем гугл.
что ставит крест на ее коммерческом использовании в РФ.

Qt идет с исходным кодом, можно делать коммерческую разработку под LGPL. Qt это огромный фреймворк-комбайн сопоставимый по функционалу с .NET

с базовым .net, но остальное либо платное, либо плохого качества

В разработке я 3 года,

а до этого чем занимался?
Выбрал я Flutter из-за его основного плюса — кроссплатформенности.

почему не тот же Golang?

А что go может предложить для мобильной разработки, или даже вообще в UI?

а причем тут «мобильной разработки, или даже вообще в UI»? когда ТС черным по-русски написал — кроссплатформенность… сюда бэкмшенд на сервере прекрасно влазит…

P.S. для mortadella372 а не ковыряться с UI так это вообще отдельное счастье

А вот это - прокол. Может предложить, Fyne и не только. И Rust может предложить. И Python. И Kotlin.

Могли бы и заметить - все, кому неприятна обочина Истории, стали кросс-платформенными, это предварительное условие выживания.

Golang больше относят к многопоточности, нежели к кроссплатформе. Вычислить, посчитать, написать бота. Но никак не создание мобильного приложения :)

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

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

Было не просто много, а достаточно для того, чтобы понять что работает и что нет. Похоронить - точно не работает. Общая бизнес-логика точно работает. Общий интерфейс точно работает если он оригинальный, значит либо игры, либо что-то типа SimpleMind, кстати рекомендую, хотя он может уже и санкционный. Если интерфейс нормальный - может работает а может и нет.

И Flutter так и написан, только 3D игр не хватает. Хотя, на первый взгляд, кто приспособился поиметь Skia - у того interop с С норм, значит берём какой-нибудь Godot и вперёд на Dart.

фреймворк, с бесплатным и открытым набором данных

Что за формулировка такая вообще?

Основные компоненты Flutter включают язык программирования Dart, движок Flutter и библиотеку Foundation.

Не очень шарю во флаттере, но что такое «движок Flutter»? Для рендеринга используется движок skia, который к флаттеру мало отношения имеет. Рантайм? Так рантайм дарта. Флаттер это фреймворк, но никак не движок.

Выбрал я Flutter из-за его основного плюса — кроссплатформенности.

Этот «плюс» куча фреймворков имеет, от вебных корнями до 1с и делфи. Совершенно непонятно по каким критериям выбор был.

Синтаксис Dart мощный и чистый.

Мощным и чистым он может и станет когда то, но пока сильно уступает kotlin/swift тем же.

Он создает такие условия, в которых можно создавать кастомный дизайн приложения, при этом сохранять четкую архитектуру.

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

Если вы уже знаете Java, C# и им подобные, вы легко изучите Dart, значит сможете быстро вникнуть и работать на Flutter.

Странное утверждение. Зная один ООП язык изучить любой другой достаточно просто в основе. Из чего не следует что получится легко и быстро изучить принятые подходы, стайлгайды, библиотеки, системы сборки, особенности рантайма, баги разных версий и прочее.

Уже на этих строках устал разбирать статью. Много слов, часто некорректных или с некорректной логикой, и все ради рекламы телеграм канала в конце.
Не очень шарю во флаттере, но что такое «движок Flutter»? Для рендеринга используется движок skia, который к флаттеру мало отношения имеет. Рантайм? Так рантайм дарта. Флаттер это фреймворк, но никак не движок.

Вообще-то почти правда — была Skia. Но будет другой движок. github.com/flutter/flutter/wiki/Impeller

Flutter это не только библиотеки написанные на Dart, но и Flutter Engine. github.com/flutter/engine

Dart там действительно есть, потому что Dart VM встраивается во Flutter Engine. github.com/dart-lang/sdk/blob/main/runtime/include/dart_api.h Но именно в это порядке — снаружи именно Flutter Engine.

Всё так интересно пишите, спасибо вам. Я когда-то в универе познакомился с Андроид разработкой. И учил Котлин + Android Studio. Пытался попасть на стажировку в одну компанию, но не взяли. И теперь вообще запутался. Учить снова Котлин или учить Dart + Flutter

Нужно не "учить", а делать. Работодателю не интересно, что вы там выучили (и забыли). Нужно, чтобы вы умели решать конкретные проблемы. Создание своего проекта – это конкретная проблема )

И с чего вы вообще решили, что нужно выбирать? Если вы собираетесь в ИТ, то изучение новой технологии не должно быть проблемой. "Флаттер за 30 минут" на ютубе – и вперёд, закрывать таски.

Ты бы лучше рассказал как реализована поддержка баз данных и можно ли написать монолит по типу с# wpf, avalonia+ entity framework, и будет ли это удобно или костыли. Я хотел попробываит написать чт то на модном tauri, а там все через костыли и это исключительно интерфейс

Можете про tauri конкретнее написать что там нет так? Просто хочу узнать какие у него грабли

Учитывая как гугл поддерживает свои разработки (closure например) учить дарт вообще не охото. подождем tauri

Sign up to leave a comment.

Articles