Какую инфраструктуру графического интерфейса Java выбрать сейчас? [закрыто]

17

Какой графический интерфейс / библиотека GUI вы бы выбрали, если бы вы начали новый проект сейчас или в ближайшем будущем?

Он должен быть бесплатным для коммерческого использования и перекрестной платформы.

Я был счастливым пользователем swing, но Sun, похоже, нажал swing на устаревание, нажав Javafx , который еще не готов к прайм-тайму.

Существует также SWT , но похоже, что он имеет проблемы с Linux.

Какова ваша библиотека / рамки Gui?

EDIT: Sun отменил проект swingx . Из комментариев к форуму на Ссылка кажется, что большинство ресурсов Sun, которые ранее работали над ядром swing, теперь разрабатывают JavaFx полный рабочий день.

    
задан Marko 11.11.2008 в 17:14
источник
  • @Marko: Почему вы думаете, что Swing будет устаревшим? И как вы считаете javafx заменой? –  Andrew Turner 11.11.2008 в 17:25
  • Является ли JavaFX доступным даже в не-бета-формате? Я не думал, что JavaFX будет конкурентом Swing. Они казались дополняющими, когда я впервые посмотрел на JavaFX ... –  Brian Knoblauch 11.11.2008 в 18:09
  • SwingX не отменяется и не является Swing. SwingX - проект с открытым исходным кодом для добавления расширений поверх Swing. То, что было сказано, что Sun в настоящее время не имеет собственного персонала, посвященного SwingX. Очевидно, что в настоящее время в JavaFX много усилий прилагается. Рабочий стол JavaFX использует Swing. –  Tom Hawtin - tackline 11.11.2008 в 19:31

3 ответа

7

Я думаю, что, несмотря на бесхозяйственность Sun, Swing все еще отличная рамка. Вы можете сделать с ним lot , особенно если эта «партия» включает персонализированные элементы управления пользовательского интерфейса. Если вашему приложению нужен фирменный LAF или даже несколько сложных пользовательских элементов управления здесь и там, Swing - именно то, что вы хотите.

На другой стороне монеты я очень люблю SWT. Он получает плохой рэп, потому что все привыкли думать, что это была уловка IBM, чтобы взять на себя Java, но это действительно просто еще одна инфраструктура пользовательского интерфейса, которая вполне дополняет Swing. Я бы не советовал использовать SWT для суперкомплексного графического рендеринга (в частности: композитинг) или для создания действительно нетривиальных пользовательских элементов управления, но для всего остального это действительно денди. Сам API получает много критики из-за таких вещей, как уверенность в бит-масках и управляемый пользователями цикл отправки событий, но большинство из этих вещей довольно прозрачны, как только вы привыкнете к ним. Сами компоненты намного проще, чем Swing (с точки зрения расширяемости и тому подобного), что означает, что API может быть пропорционально проще. Я действительно могу запомнить, как создавать и заполнять таблицу в SWT; в то время как я не думаю, что я когда-либо обрабатывал это в Swing без помощи Google.

Самая большая проблема SWT сейчас - стабильная версия, зависящая от Carbon в Mac OS X. Это означает, что приложения SWT могут запускать только 32-разрядные версии на Java 5 (или 32 бит на SoyLatte). Что касается других платформ, SWT феноменальна для Windows (Vista и XP) и почти так же хороша в GTK Linux. У меня нет (в последнее время) каких-либо проблем с SWT в Linux, поэтому я немного удивлен, что вы упомянули бы это как больной.

Возвращаясь к вашему вопросу: все зависит от того, что нужно вашему приложению. Если это потрясающее приложение с обычным дизайном с множеством пользовательских элементов управления и сложным композитингом, Swing - единственная игра в городе. Однако, если более простой API более важен для вас, или если ваши пользователи требуют максимальной точности в платформе LAF, лучшим выбором будет SWT.

    
ответ дан Daniel Spiewak 11.11.2008 в 17:58
  • Я согласен с тем, что SWT - довольно хороший графический интерфейс. Также работает на PocketPC, а это означает, что вы можете создать мобильную версию своего приложения, которая будет достаточно быстро, когда руководство сделает спрос! –  JeeBee 11.11.2008 в 18:23
4

Прямо сейчас я использую SWT или Qt (Jambi).

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

Между SWT и Qt я предпочитаю использовать Qt, потому что это очень зрелая и мощная структура, созданная людьми, которые знают, что они делают (ну, в большинстве случаев :)) и SWT, если лицензия на новый проект не совместим с Qt's.

    
ответ дан Aaron Digulla 11.11.2008 в 17:37
3

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

    
ответ дан Elie 11.11.2008 в 17:16
  • Да, он поддерживается в том, как поддерживается AWT, но никакой новой разработки на стороне разворота не будет. –  Marko 11.11.2008 в 17:22
  • Ahh, но если текущая версия делает то, что вам нужно, то кого это волнует, если нет новой разработки? Если он не сломался, не исправляйте его. –  Elie 11.11.2008 в 17:27