Я хотел бы разработать кросс-платформенное приложение для малого и среднего размера (включая графический интерфейс).
Мой фон: в основном веб-приложения с архитектурой MVC, как Python (Pylons + SqlAlchemy), так и Java (хорошо знаю язык, но не нравится это так много). Я также знаю некоторые С#. Пока у меня нет опыта программирования GUI (ни Windows Forms, ни Swing, ни QT).
Я планирую использовать SQLite для хранения данных: это похоже на кросс-платформенное решение и обладает некоторыми мощными функциями (например, полнотекстовый поиск, которого не хватает SQL Server Compact).
Я провел некоторое исследование, и это мои любимые варианты:
1) QT, Python (PyQT или PySide) и SQLAlchemy
плюсы:
- Язык Python
- С открытым исходным кодом сильный в мире Python (множество библиотек и пользователей)
- SQLAlchemy: фантастический способ взаимодействия с БД и невероятно хорошо документированный!
минусы:
- сбор, распространение и развертывание сложнее?
- нет опыта QT
- Дизайнер QT не так хорош, как разработчик Visual Studio Winforms
2).NET/Mono, Windows Forms, С#, (Fluent) NHibernate, System.Data.SQLite
плюсы:
- С# (мне нравится, особенно по сравнению с Java и хотелось бы получить больше опыта в нем)
- Дизайнер GUI Winforms в Visual Studio кажется действительно гладким
- IntelliSense
- Развертывание ClickOnce (?)
- Windows Forms выглядят и чувствуют себя хорошо в Windows
минусы:
- (Fluent) NHibernate гораздо менее документирован, чем SQLAlchemy; также раздражает: Свободные документы относятся к документам NHibernate, которые относятся к Hibernate (aargh!). Но простой NHibernate + XML выглядит не очень удобно.
- Windows Forms не будет выглядеть + вести себя на Linux/Mac OS (правильно?)
- меньше библиотек с открытым исходным кодом в мире .NET, меньше пользователей OSS, меньше документации вообще
- нет опыта WinForms и NHibernate
3) JVM, Java + Jython, Swing, SQLAlchemy
(Я эмоционально предвзято отношусь к этому, но указан для полноты)
плюсы:
- JVM/Swing хорошо работают как кросс-платформенная основа.
- Jython
- SQLAlchemy
- множество библиотек с открытым исходным кодом
минусы:
- Свинг кажется уродливым и трудным для макета
- отсутствует хороший дизайнер GUI.
- Угадай, что я не смогу избежать Java для создания пользовательского интерфейса.
- Не уверен, насколько стабильна интеграция Jython/Java
(Варианты, которые я исключил... просто чтобы не обсуждать их):
- wxWidgets/wxPython (теперь QT является LGPLed)
- GTK/PyGTK
Внешний вид окончательного приложения очень важен для меня. Вышеупомянутые технологические стеки очень разные (PyQT,.NET WinForms, JVM Swing) и требуют некоторого времени для получения опыта, поэтому:
Какой вариант вы бы порекомендовали и почему?