Что я должен выбрать SWT или Swing для программирования GUI на Java? - PullRequest
8 голосов
/ 17 февраля 2010

Мне нужно создать приложение с графическим интерфейсом на Java. Я только что понял, что у меня есть разные дополнительные пути (среди них SWT и Swing).

Я уже выяснил, что существует много дискуссий о том, какой путь лучше, и я не хочу углубляться в эти дискуссии (я новичок).

Меня не волнуют все аспекты этой дилеммы. У меня есть только несколько основных требований, перечисленных ниже:

  1. Это должно быть просто в использовании (легко создавать то, что я хочу).
  2. В конце я хотел бы иметь только один файл, который может быть легко выполнен (без каких-либо дополнительных хитростей, настроек и установок), как отдельное приложение.
  3. Он должен быть независимым от платформы. Точнее говоря, приложение должно нормально работать в Microsoft-Windows и Ubuntu (Linux).

Ответы [ 8 ]

6 голосов
/ 03 мая 2010

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

Мое решение, в конце концов, привело к SWT по следующим причинам:

  • Пользователи Buisiness обычно используют терминальные серверы и RDP для своих приложений. Каждое приложение Swing очень медленное по сравнению с RDP, потому что приложение должно рендерить каждый пиксель снова и снова. Попробуйте использовать Photoshop или Gimp поверх RDP и начните прокручивать изображение. Это производительность, которую вы имеете с Swing в таблицах.
  • Некоторые очень хорошие компоненты графического интерфейса доступны только как COM-объекты. Я хотел иметь возможность использовать их, и, поскольку 100% всех бизнес-клиентов являются пользователями Windows, они принимают тот факт, что ваше программное обеспечение работает только на Windows. (У нас также есть клиенты linux, но только для машинных терминалов ввода, которым не нужны полноценные графические интерфейсы Windows)
  • Мы используем SWTDesigner в качестве дизайнера графического интерфейса, который так же хорош, как SwingDesigner для Swing (оба являются лучшими дизайнерами графического интерфейса). Они стоят ценника, если вам нужно создать несколько сотен масок.
  • Наш графический интерфейс выглядит на 100% встроенным, учитывает большие шрифты, которые они используют на своих рабочих столах, и работает быстро.

Мы очень довольны SWT, но у него есть некоторые недостатки:

  • Нативные компоненты Java немного редки. На свинговой стороне жизни есть еще что-то.
6 голосов
/ 17 февраля 2010

Исходя из ваших требований, я бы сказал, Swing. SWT имеет более специфичный для платформы взгляд, но Java поставляется со встроенным Swing, нет проблем с внешними библиотеками, как с SWT, хотя использование Eclipse может сделать это намного проще (я все еще разрабатываю довольно много своих вещей из командная строка к сожалению).

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

Это мой совет. Не стесняйтесь принимать или игнорировать или даже называть меня старой лысиной. Я не буду обижаться: -)

3 голосов
/ 17 февраля 2010

Я бы предложил использовать библиотеки Java Swing, если вы не знакомы с разработкой графического интерфейса Java. Они очень хорошо документированы, и есть много учебных материалов, в том числе на веб-сайте Sun Java ( здесь ).

Разработка графического интерфейса на Java не очень проста, но доступные инструменты постоянно улучшаются. Я бы посоветовал вам попробовать IDE NetBeans, в котором есть хороший визуальный дизайнер для компонентов GUI. Я не использовал конструктор графического интерфейса Eclipse IDE, но я также понял, что это хорошо. Вам нужно будет разобраться с паттерном MVC, но это должен быть хороший опыт обучения.

Короче, мой голос за использование Swing / JFC, особенно если вы новичок в разработке Java GUI.

РЕДАКТИРОВАТЬ - Вы можете очень легко контролировать внешний вид приложения Java. Если вы используете независимый от платформы внешний вид (Metal), ваш графический интерфейс будет выглядеть практически одинаково в Windows и Linux. Конечно, Java-приложение будет прекрасно работать в Windows * nux, если установлена ​​поддерживаемая JVM.

2 голосов
/ 17 февраля 2010

Исходя из ваших требований, я рекомендую использовать Swing:

  • SWT требует дополнительных собственных библиотек (нарушает пункт № 2),
  • Скорее всего, вы найдете больше инструктивного материала по Swing (поскольку вы новичок),
  • Оба решения в некоторой степени независимы от платформы и поддерживаются на обеих платформах, о которых вы упоминали, но SWT не одинаково поддерживается на всех платформах,
  • Существует больше инструментов WYSIWYG, поддерживающих Swing, которые могут помочь с кривой обучения.

Обратите внимание, что API похожи и иногда идентичны, поэтому изучение одного дает вам преимущество перед другим.

2 голосов
/ 17 февраля 2010

Я не могу добавить комментарий, потому что я здесь новичок (пожалуйста, измените меня, чтобы я мог комментировать), но выбор Swing или SWT зависит от используемой вами IDE.

Если вы используете Eclipse, то оба в порядке.

Если вы используете бесплатную версию IntelliJ IDEA для сообщества, вы предпочтете использовать Swing, поскольку редактор графического интерфейса IDE "Swing only".

Я так понимаю, вы используете Eclipse?

1 голос
/ 18 февраля 2010

Качели,

SWT работает на Ubuntu, но не так хорошо, как на Windows, это, по крайней мере, мой опыт. Основная причина выбора SWT - это если вы хотите построить свое приложение на платформе Eclipse RCP (где вы получаете закрепляемые представления / редакторы, механизм плагинов, автоматические обновления, роли пользователей. Справочный браузер, механизм предпочтений и т. Д.) Или если приложение, чтобы иметь этот отполированный внешний вид.

1 голос
/ 17 февраля 2010

Я считаю, что визуальный редактор перетаскивания Netbeans и предварительно подключенный шаблон приложения Swing Desktop гораздо проще использовать по сравнению с Eclipse, поэтому я бы предложил это.

Он автоматически создаст исполняемый jar-файл и позволит вам создать средство запуска Java Web Start, если вы тоже этого пожелаете. И будучи Java, он не зависит от ОС.

Вот ссылка на краткие учебные пособия .

0 голосов
/ 17 февраля 2010

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

ПРИМЕЧАНИЕ. В последний раз я занимался разработкой графического интерфейса на Java 4 года назад.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...