aminought
@aminought

Какие технологии выбрать для создания кроссплатформенного файлового менеджера?

Здравствуйте. Знаю, что собираюсь писать велосипед, но суть вопроса ведь не в этом, правда? Вопрос состоит именно в выборе технологии. Принимаются любые предложения, если они обоснованы. Расскажу про свой довольно поверхностный ход мыслей.

Думая о кроссплатформенности, первым делом я решил использовать Java и JavaFX. Почитал туториалы, накидал главное окно в SceneBuilder, запустил. Первое, что бросается в глаза: медленный запуск. Что поделать, за кроссплатформенность приходится платить. Из плюсов: высокоуровневый язык программирования, относительно минимальное количество кода, ясный MVC, благодаря которому сложно будет написать что-то неправильное, стилизация с помощью CSS. Из минусов: скорость, а в файловом менеджере она важна, необходимость предварительной установки JRE или же таскать с приложением целый рантайм.

Но ведь можно попробовать уклониться от уплаты? Ясно, что можно попробовать что-то кроссплатформенное на уровне компиляции. Выбор пал на Qt. Опять же почитал туториалы, разобрался с сигналами, слотами, накидал форму в QtDesigner, запустил. Плюсы: скорость работы, относительно понятный принцип деплоя на основные платформы. Минусы: не совсем понятный с ходу MVC, с таким подходом можно запросто выделить каждой форме по одному классу и не париться с архитектурой, что ни к чему хорошему не приведёт, отсутствие исключений. Не знаю, стоит ли относить сам С++ к минусам, но для меня важна скорость разработки, а на нём она будет явно меньше, чем на Java. Также я видел что-то про Qt Quick и QML, попробовал что-то накидать, запустил, но заметил какие-то лаги при изменении размера окна, как на JavaFX. Думаю, это плохой знак. Если кто-то может рассказать подробнее, буду только рад.

Когда читал про Qt, заметил, что его часто сравнивают с WPF. Сам я им не пользовался, но говорят, что WPF гораздо мощнее, чем Qt. Если не ошибаюсь, то это совсем не кроссплатформенное решение, даже в Mono его не смогли портировать из-за множества низкоуровневых вещей. Опять же, если можете рассказать про WPF что-то еще, я буду благодарен.

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

Жду ваших предложений, заранее спасибо.
  • Вопрос задан
  • 1461 просмотр
Решения вопроса 1
Nipheris
@Nipheris Куратор тега C#
За JavaFX говорить не буду, вроде штука развивается, возможно наконец будет нормальная джава для десктопа; сравнивать не могу, не пользовался
Также я видел что-то про Qt Quick и QML

пожалуй это и стоит рассматривать для новых проектов.
Сам я им не пользовался, но говорят, что WPF гораздо мощнее, чем Qt

Раньше, когда появился - да, был значительно мощнее (до появления QML). Вообще был наверное самой продвинутой технологией для десктопа. Но уже 2015-й год, Qt Quick 2 и все такое, так что Qt и WPF уже вполне сравнимы.
Если не ошибаюсь, то это совсем не кроссплатформенное решение

Да, к сожалению. Поэтому вам резонно вернуться к рассмотрению Qt.
рассказать про WPF что-то еще, я буду благодарен.

дотнетовская технология, появилась в .net 3.0, использует direct3d для отрисовки, windows-only. Если нужны еще подробности - пишите в комментарии.
то я больше склоняюсь к Qt, так как скорость работы всё же важнее скорости разработки

хороший выбор для кроссплатформенного файлового менеджера, только замечу, что вы выбираете вы достаточно смело - в 95% случаев люди ищут либу к знакомому языку/платформе, т.к. обычно именно язык новый язык изучить не могут/не хотят. Если вы уверены, что C++ вы тянете, то тогда без вариантов - Qt.
Ответ написан
Пригласить эксперта
Ответы на вопрос 6
Drakonn
@Drakonn
Инженер-программист
QFile QDirectory, впрочем там полным полно у Qt кроссплатфоменных библиотек)
Ответ написан
Комментировать
yarosroman
@yarosroman Куратор тега C#
C# the best
Qt, однако вам придется делать условную компиляцию, ибо есть различия в файловых системах для Win и *nix.
Ответ написан
eastywest
@eastywest
Backend developer
Первые версии клиента Dropbox были написаны на Python. Возможно Вам тоже подойдет, имеется много библиотек по написанию графического интерфейса, в том числе биндинги к Qt.
Ответ написан
Комментировать
@beduin01
https://github.com/filcuc/DOtherSide + dlang.org

Будет гораздо более прост в переносе, чем любые другие связки технологий и языков. Если QML не нравится можете попробовать sfmt https://github.com/Jebbs/DSFML
Ответ написан
@Neonoviiwolf
Flutter developer
Я на оборот с изучения Qt перешёл на java.
Ну во первых с Qt придётся таскать ворох библиотек, которые сожрут много места (для меня критично).
Во вторых я не уверен, что без гемора удастся сделать что-то кросплатформенное (это лично моё, т.к. хотел запилить на android и iOS, но не знаю ни одной из этих платформ и неимением мака под рукой, думаю при попытке позднее перенести на iOS, я бы прострелил себе обе ноги. В итоге выбрал Java, ели проект поедет, уж на swift я перепишу код, имея под рукой рабочее приложение на java
Ответ написан
mystdeim
@mystdeim
Если нужна безболезненная кросплатформенность, то JavaFX. Полгода пишу на ней проект, очень приятная вещь )
До этого писал на swing (после него, как глоток свежего воздуха) и чуть-чуть на qt, на java скорость разработки заметно выше.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы