Java-приложения рабочего стола: СВТ и качели [закрыт]
Я веб-разработчик в день и думать о создании моего первого реального настольного приложения. Идея состоит в том, чтобы создать инструмент, который автоматизирует очень повторяющуюся задачу в веб-приложении, где нет API.
Я знаю, что хочу использовать Java. Я использовал его раньше для веб-материалов, знаю синтаксис довольно хорошо и хочу, чтобы приложение было перекрестным plattform как можно проще.
где я не так уверен, если я должен использовать SWT или качели. Поскольку моя основная аудитория использует Windows, я хотите выглядеть там как можно роднее. Linux и Mac должны работать, но внешний вид здесь не так важен.
Итак, каковы аргументы за и против каждой структуры пользовательского интерфейса, Swing или SWT?
спасибо.
PS: я разрабатываю на Windows, используя Eclipse. Но думал об игре с Netbeans.
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.
и вот сайт, где вы можете получить учебник по существу ничего на 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 имеет хорошую структуру, которая помогает с большим количеством кода котельной плиты.