Python + QT, Windows Forms или Swing для кроссплатформенного приложения?

Я бы хотел разработать кроссплатформенное приложение малого / среднего размера (включая графический интерфейс).

Мой опыт: в основном веб-приложения с архитектурой MVC, как Python (Pylons + SqlAlchemy), так и Java (хорошо знаю язык, но не очень его люблю). Я также немного знаю C #. Пока у меня нет графического интерфейса. опыт программирования (ни Windows Forms, ни Swing, ни QT).

Я планирую использовать SQLite для хранения данных: это хорошее кроссплатформенное решение, обладающее некоторыми мощными функциями (например, полнотекстовый поиск, которого нет в SQL Server Compact). ).

Я провел небольшое исследование, и это мои любимые варианты:

1) QT, Python (PyQT или PySide) и SQLAlchemy

Плюсы:

  • Python - язык
  • открытый исходный код силен в мире Python (множество библиотек и пользователей)
  • SQLAlchemy: фантастический способ взаимодействия с базой данных и невероятно хорошо документированный!

минусы:

  • компиляция, распространение и развертывание сложнее?
  • нет опыта работы с QT
  • QT Designer не так хорош, как конструктор Visual Studio Winforms

2) .NET / Mono , Windows Forms, C #, (свободно) NHibernate, System.Data.SQLite

плюсы:

  • C # (мне нравится, особенно по сравнению с Java, и хотелось бы получить больше опыта в нем)
  • Графический интерфейс Winforms дизайнер в Visual Studio кажется действительно изящным
  • IntelliSense
  • Развертывание ClickOnce (?)
  • Windows Forms хорошо выглядят и удобны в Windows

минусы:

  • (Свободно) NHibernate гораздо менее документирован, чем SQLAlchemy; также раздражает: Fluent docs относятся к документации NHibernate, которая относится к Hibernate (aargh!). Но простой NHibernate + XML выглядит не очень удобно.
  • Windows Forms не будет выглядеть + вести себя нативно в Linux / Mac OS (верно?)
  • меньше библиотек с открытым исходным кодом в.NET, меньше пользователей OSS, меньше документации в целом
  • нет опыта работы с WinForms и NHibernate

3) JVM, Java + Jython, Swing, SQLAlchemy
(я эмоционально настроен против этого , но перечислены для полноты)

плюсы:

  • JVM / Swing хорошо работают на кроссплатформенной основе
  • Jython
  • SQLAlchemy
  • множество библиотек с открытым исходным кодом

минусы:

  • Swing кажется уродливым и сложным для компоновки
  • не хватает хорошего дизайнера графического интерфейса
  • Предполагаю, что я не смогу избежать использования Java для пользовательского интерфейса
  • Не уверен, насколько стабильна интеграция Jython / Java

(Параметры, которые Я исключил ... просто чтобы не обсуждать эти вопросы):
- wxWidgets / wxPython (теперь, когда QT имеет LGPLed)
- GTK / PyGTK

Для меня очень важен внешний вид финального приложения. Вышеупомянутые технологические стеки сильно различаются (PyQT, .NET WinForms, JVM Swing) и требуют некоторого времени для освоения навыков, поэтому:

Какую альтернативу вы бы порекомендовали и почему?

11
задан Martin S. 10 November 2010 в 14:11
поделиться