Межплатформенный язык/инструментарий GUI

Я пытаюсь записать межплатформенное приложение GUI, которое было бы развернуто на Windows, Mac OS X и Linux. Мои требования:

  1. Единственная кодовая база для всех трех платформ развертывания, без большой суммы условной логики для обработки различий между платформами.
  2. Взгляды максимально близко к "собственному компоненту" на всех трех платформах.
  3. Легко распространяемый на все три платформы, в том смысле, что это могло быть легко установлено конечными пользователями и не страдает от экстремального чрезмерного увеличения размера (как обсуждено в этой статье ArsTechnica.)

На основе этих требований я сузил выбор инструментариев к QT и wxWidgets, начиная ни с одного из других инструментариев, о которых я знаю (включая Swing Java и SWT, Flex, AIR, и т.д.) удовлетворяют "собственно выглядящее" требование. Среди этих двух заключительных соперников QT, кажется, предлагает лучшую поддержку приложений, что собственный компонент стиля на всех трех из моих платформ развертывания, но я готов рассмотреть мнения об обратном.

Я предпочел бы не использовать C++ в качестве языка реализации, но я не уверен, существуют ли какие-либо практические альтернативы. Моя самая большая озабоченность по поводу использования языка реализации кроме C++ является проблемой развертывания. Как обсуждено в статье Ars Technica, PyQt не отвечает "простому развертыванию' требование ни в каком практическом смысле, и я подозреваю, что большинство других привязок к языку для QT пострадало бы от тех же проблем развертывания (по крайней мере, на Mac OS X). Java (или Scala) с QtJambi? QtRuby? wxPython?

Кто-либо знает о какой-либо комбинации языка и инструментария, который удовлетворяет все три из указанных выше требований?

6
задан Jason Voegele 9 March 2010 в 13:55
поделиться

6 ответов

  1. Это зависит от ваших потребностей. Но в целом Qt Framework (с любым языком) и Java SE (с любым языком) намного лучше, потому что в нем есть не только библиотеки графического интерфейса между ОС, но и сети между ОС, потоки, ... wxWidgets - это только графический интерфейс.
  2. И Qt, и wxWidgets хороши. По моему опыту Qt лучше. Свинг это ... Ну, не очень-то приятно.
  3. Приложения Qt и wxWidgets, написанные на C ++ и Java Swing, несложно развернуть в Windows, Mac и Linux. Правило состоит в том, что развертывание выполняется просто, если вы программируете на «родном» языке. Под «родным» языком я подразумеваю язык, на котором написан сам фреймворк.

PyQt не отвечает требованию «простого развертывания» ни в каком практическом смысле ...

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

Так что, вероятно, у вас есть 2 варианта:

  1. C ++ / Qt или C ++ / wxWidgets.
  2. Java / Swing, если родной внешний вид - не очень строгое требование.
8
ответ дан 8 December 2019 в 13:45
поделиться

Java / SWT - один из хороших вариантов. Вы можете найти много информации об этом здесь .

0
ответ дан 8 December 2019 в 13:45
поделиться

wxWidgets довольно хорош и содержит некоторый код, не связанный с графическим интерфейсом пользователя (вопреки тому, что сказал kemiisto): потоки, сокеты и т. Д.

Хорошая особенность wxWidgets заключается в том, что wxPython на самом деле довольно легко развернуть в OS X Есть и другие языковые привязки для wx, но wxPython, вероятно, одна из самых старых.

4
ответ дан 8 December 2019 в 13:45
поделиться

Java действительно поддерживает приложения, выглядящие "как родные", с помощью SystemLookAndFeel. Самый быстрый способ попробовать - вызвать следующее при запуске приложения.

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

Посмотрите здесь более подробную информацию о доступных Look и Feel в Java.

http://java.sun.com/docs/books/tutorial/uiswing/lookandfeel/plaf.html

0
ответ дан 8 December 2019 в 13:45
поделиться

.Net (C # или VB.Net) - это то, что я бы использовал для этого (на самом деле, это - это то, что я использую для своего собственного приложения). Благодаря проекту Mono приложения .Net могут работать на Mac и Linux, а также в Windows без каких-либо изменений кода (если вы не вызываете функции Windows API). Вам даже не нужно компилировать разные версии вашей программы: один и тот же EXE будет работать на всех платформах.

0
ответ дан 8 December 2019 в 13:45
поделиться

Вы смотрели Xojo ? Он определенно соответствует всем трем вашим требованиям, и его намного проще изучить и использовать, чем C ++.

1
ответ дан 8 December 2019 в 13:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: