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

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

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

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

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

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

Жду ваших предложений, заранее спасибо. 

 За 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. 

 QFile QDirectory, впрочем там полным полно у Qt кроссплатфоменных библиотек) 

 Qt, однако вам придется делать условную компиляцию, ибо есть различия в файловых системах для Win и *nix. 

 Первые версии клиента Dropbox были написаны на Python. Возможно Вам тоже подойдет, имеется много библиотек по написанию графического интерфейса, в том числе биндинги к Qt. 

<https://github.com/filcuc/DOtherSide> + [dlang.org](http://dlang.org/)  
  

Будет гораздо более прост в переносе, чем любые другие связки технологий и языков. Если QML не нравится можете попробовать sfmt <https://github.com/Jebbs/DSFML> 

 Я на оборот с изучения Qt перешёл на java.   

Ну во первых с Qt придётся таскать ворох библиотек, которые сожрут много места (для меня критично).   

Во вторых я не уверен, что без гемора удастся сделать что-то кросплатформенное (это лично моё, т.к. хотел запилить на android и iOS, но не знаю ни одной из этих платформ и неимением мака под рукой, думаю при попытке позднее перенести на iOS, я бы прострелил себе обе ноги. В итоге выбрал Java, ели проект поедет, уж на swift я перепишу код, имея под рукой рабочее приложение на java 

 Если нужна безболезненная кросплатформенность, то JavaFX. Полгода пишу на ней проект, очень приятная вещь )  

До этого писал на swing (после него, как глоток свежего воздуха) и чуть-чуть на qt, на java скорость разработки заметно выше.