Java-приложения рабочего стола: СВТ и качели [закрыт]


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

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

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

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

спасибо.

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

10 151

10 ответов:

Плюсы Качания:

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

Минусы Качания:

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

плюсы SWT:

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

минусы SWT:

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

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

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

про качели:

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

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

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

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

  • есть много документации и другие руководящие указания по производству приложения эффективным.

  • кажется как изменения в Swing распространяются на все платформы одновременно изменения в SWT, похоже, появляются на Окна сначала-Linux.

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

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

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

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

плюс, взгляните на http://swingx.java.net/.

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

качели, как правило, является безопасная ставка.

интересный вопрос. Я не знаю 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)

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

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

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

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

Про Качели:

    одна вещь, чтобы рассмотреть: утилита для чтения с экрана

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

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

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