Приложение Java Desktop: SWT против Swing

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

Я знаю, что хочу использовать Java. Я использовал его раньше для веб-материалов, хорошо знаю синтаксис и хочу, чтобы приложение было максимально простым.

Где я не уверен, если я должен использовать SWT или Swing. Поскольку моя основная аудитория использует Windows, я хочу посмотреть ее как можно более родную. Linux и Mac должны работать, но внешний вид здесь не так важен.

Итак, каковы аргументы для и против каждого интерфейса пользовательского интерфейса, Swing или SWT?

Спасибо.

PS: Я разрабатываю Windows, используя Eclipse. Но думал о том, чтобы играть с Netbeans.

Ответ 1

Плюсы:

  • часть библиотеки java, не нужно дополнительные собственные библиотеки
  • работает одинаково на всех платформах.
  • Встроенный графический редактор в Netbeans и Eclipse
  • хорошие онлайн-учебники от Sun/Oracle
  • Поддерживаются официальные расширения Java (например, java OpenGL)

Против свинг:

  • Собственный внешний вид может вести себя отличается от реального родного система.
  • тяжелые компоненты (native/awt) скрывают компоненты swing, а не большую часть времени, так как использование тяжелых компонентов довольно редко.

Преимущества SWT:

  • использует, по возможности, собственные элементы, поэтому всегда собственное поведение
  • поддерживаемый eclipse, редактор GUI VEP (VEP также поддерживает Swing и AWT)
  • большое количество примеров онлайн
  • имеет встроенный мост awt/swt, позволяющий использовать компоненты awt и swing.

Cons SWT:

  • требуется наличие собственных библиотек для каждого поддерживаемая система
  • может не поддерживать любое поведение на всех системах из-за используемые ресурсы (подсказки)
  • управление собственными ресурсами, в то время как собственные компоненты часто удаляются с их родительскими другими ресурсами, такими как шрифты должны быть вручную выпущены или зарегистрированы как отправитель для компонента для автоматического выпуска.

Ответ 2

Важно отметить, что некоторые пользователи и некоторые реселлеры (Dell) устанавливают 64-разрядную виртуальную машину на свои 64-битные Windows, и вы не можете использовать одну и ту же SWT-библиотеку для 32-разрядных и 64-разрядных виртуальных машин.

Это означает, что вам нужно будет распространять и тестировать различные пакеты в зависимости от того, есть ли у пользователей 32-разрядная или 64-разрядная виртуальная машина Java. См. эту проблему с Azureus, например, но вы также имеете ее с Eclipse, где на сегодняшний день сборки на первой странице загрузки не запускаются на 64-битной виртуальной машине.

Ответ 3

pro swing:

  • Самое большое преимущество swing IMHO в том, что вам не нужно отправлять библиотеки с вашим приложением (что позволяет избежать дюжины MB (!)).
  • Родной внешний вид намного лучше для качелей, чем в ранние годы.
  • производительность сравнима с swt (swing не медленный!)
  • NetBeans предлагает Matisse в качестве удобного компоновщика компонентов.
  • Интеграция компонентов Swing в JavaFX проще.

Но в нижней строке я бы не предложил использовать "чистый" свинг или swt;-) Существует несколько рамок приложения для swing/swt. Посмотрите здесь. Крупнейшими игроками являются netbeans (swing) и eclipse (swt). Еще одна приятная структура может быть грифоном, и хороший "набор компонентов" является поворотным (swing). Griffon очень интересен, потому что он объединяет множество библиотек и не только качается; также pivot, swt и т.д.

Ответ 4

Я бы использовал Swing по нескольким причинам.

  • Это было дольше и было больше усилий в области Это. Следовательно, это скорее всего особенность полный и (возможно) имеет меньше ошибок.

  • Существует много документации и другие рекомендации по производству приложений.

  • Кажется, как изменения Swing распространяются на всех платформ одновременно изменения в SWT кажутся Сначала Windows, затем Linux.

Если вы хотите создать очень многофункциональное приложение, вы можете проверить NetBeans RCP (Rich Client Platform). Там есть кривая обучения, но вы можете быстро собрать хорошие приложения с небольшой практикой. У меня недостаточно опыта работы с платформой Eclipse, чтобы принять правильное решение.

Если вы не хотите использовать весь RCP, NetBeans также имеет много полезных компонентов, которые можно вытащить и использовать самостоятельно.

Еще одно слово совета, посмотрите на разных менеджеров макетов. Они долгое время спотыкали меня, когда я учился. Некоторые из лучших даже не в стандартной библиотеке. MigLayout (для Swing и SWT) и JGoodies Инструменты форм - два из лучших, на мой взгляд.

Ответ 5

Я бы выбрал swing только потому, что он "родной" для java.

Плюс, посмотрите http://swingx.java.net/.

Ответ 6

Для ваших требований это звучит так, как в нижней строке будет использовать Swing, так как немного легче начать работу, а не так сильно интегрировать в собственную платформу, как SWT.

Качание обычно является безопасной ставкой.

Ответ 7

Интересный вопрос. Я не слишком хорошо знаю SWT, чтобы похвастаться этим (в отличие от Swing и AWT), но здесь сравнение сделано на SWT/Swing/AWT.

http://www.developer.com/java/other/article.php/10936_2179061_2/Swing-and-SWT-A-Tale-of-Two-Java-GUI-Libraries.htm

И здесь сайт, на котором вы можете получить учебное пособие в основном о чем-либо на SWT (http://www.java2s.com/Tutorial/Java/0280__SWT/Catalog0280__SWT.htm)

Надеюсь, вы примете правильное решение (если есть правильные решения в кодировании)...: -)

Ответ 8

Если вы планируете создавать полнофункциональные приложения с более чем несколькими функциями, я предлагаю перейти к использованию Eclipse RCP в качестве платформы.

Если ваше приложение не станет слишком большим или ваши требования слишком уникальны, чтобы работать с нормальной бизнес-картой, вы можете спокойно прыгать с Swing.

В конце дня, я предлагаю вам попробовать обе технологии, чтобы найти один костюм вам лучше. Как и Netbeans vs Eclipse vs IntelliJ, здесь нет абсолютно правильного ответа, и обе структуры имеют свои недостатки.

Pro Swing:

  • больше экспертов
  • больше Java-подобных (почти нет публичного поля, нет необходимости распоряжаться ресурсом)

Pro SWT:

  • больше родных ОС
  • быстрее

Ответ 9

Одна вещь, которую нужно учитывать: Скринсейверы

По некоторым причинам некоторые компоненты Swing не работают хорошо при использовании прошивки (и Java AccessBridge для Windows). Знайте, что разные программы чтения штрих-кода приводят к поведению. И, по моему опыту, SWT-Tree работает намного лучше, чем Swing-Tree в сочетании с прошивкой. Таким образом, наше приложение оказалось в использовании компонентов SWT и Swing.

Для распространения и загрузки соответствующей SWT-библиотеки вы можете найти эту ссылку полезным: http://www.chrisnewland.com/select-correct-swt-jar-for-your-os-and-jvm-at-runtime-191

Ответ 10

SWT был создан как ответ на медлительность Swing в начале века. Теперь, когда различия в производительности становятся небрежными, я думаю, что Swing - лучший вариант для ваших стандартных приложений. SWT/Eclipse имеет приятную структуру, которая помогает с большим количеством кодовых табличек.