Swing vs JavaFx для настольных приложений [закрыто]

У меня очень большая программа, которая в настоящее время использует СВТ. Программа может быть запущена на Windows, Mac и Linux, и это большое настольное приложение с множеством элементов. Теперь SWT несколько стар, я хотел бы переключиться на Swing или JavaFX. И я хотел бы услышать ваши мысли по трем вопросам.

моя главная забота-что будет лучше для настольного приложения GUI? (Я посмотрел онлайн, и многие люди предполагают, что JavaFX так же хорош, как Swing, но я не видел много веских аргументов, кроме простого мнения flame wars). Он должен работать как на Windows, Mac, так и на некоторых популярных дистрибутивах Linux.

  • Что будет чище и проще в обслуживании?

  • и что будет быстрее строить с нуля?

Я использую метологию MVC в своем приложении, если это поможет.

6 ответов


что будет чище и проще в обслуживании?

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

и что будет быстрее строить с нуля?

сильно зависит от того, что вы строите. Swing имеет больше компонентов вокруг для этого (3rd party, а также встроенный), и не все из них сделали свой путь к более новой платформе JavaFX, поэтому может быть определенное количество повторного изобретения колеса, Если вам нужно что-то немного обычай. С другой стороны, если вы хотите делать переходы / анимацию / видео, то это на порядок проще в FX.

еще одна вещь, которую нужно иметь в виду, это (возможно) внешний вид. Если вы абсолютно должны иметь внешний вид системы по умолчанию, то JavaFX (в настоящее время) не могу этого обеспечить. Не большой должен иметь для меня (я все равно предпочитаю FX по умолчанию), но я знаю, что некоторые политики требуют ограничения на системные стили.

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


Как указано Oracle, JavaFX является следующим шагом в их богатой клиентской стратегии на основе Java. Соответственно, это то, что я рекомендую для вашей ситуации:

что было бы проще и чище поддерживать

  • JavaFX ввел несколько улучшений над Swing, таких как возможность разметки UIs с помощью FXML и тематизации с помощью CSS. Он имеет большой потенциал написать модульное, чистое & ремонтопригодное код.

что бы быстрее построить с нуля

  • это сильно зависит от ваших навыков и инструментов, которые вы используете.
    • для качания, различные Иды предлагают инструменты для быстрого развития. Лучшее, что я лично нашел, это GUI builder в NetBeans.
    • JavaFX также поддерживает различные IDEs, хотя и не так зрело, как поддержка Swing на данный момент. Однако его поддержка разметки в FXML и CSS делает разработку GUI на JavaFX интуитивно понятной.

поддержка шаблона MVC

  • JavaFX очень дружелюбен с шаблоном MVC, и вы можете четко разделить свою работу как: презентация (FXML, CSS), модели(Java, объекты домена) и логика(Java).
  • IMHO, поддержка MVC в Swing не очень привлекательна. Поток вы увидите различных компонентов не хватает консистенция.

для получения дополнительной информации, пожалуйста, посмотрите эти FAQ сообщение Oracle относительно JavaFX здесь.


никто не упоминал об этом, но JavaFX не компилируется или не запускается на определенных архитектурах, считающихся "серверами" Oracle (например, Solaris), из-за отсутствия "jfxrt.jar " поддержка. Придерживайтесь SWT, до дальнейшего уведомления.


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

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


Я бы посмотрел вокруг, чтобы найти некоторые (3rd партия?) компоненты, которые делают то, что вы хотите. Мне пришлось создать пользовательские компоненты Swing для представления повестки дня, где вы можете заказать несколько ресурсов, а также сетку Excel, которая хорошо работает с навигацией по клавиатуре и так далее. У меня было ужасное время, чтобы заставить их работать хорошо, потому что мне нужно было вникать во многие из многих тонкостей свинга, когда я сталкивался с проблемой. Мышь и Фокус поведение и многое другое может быть очень трудно получить правильно, особенно для случайного пользователя Swing. Я надеюсь, что JavaFX немного более ориентирован на будущее и сглажен из коробки.


на старых ноутбуках со встроенным приложением Video Swing запускается и работает намного быстрее, чем приложение JavaFX. Что касается разработки, я бы рекомендовал переключиться на Scala - сопоставимое приложение Scala Swing содержит 2..В 3 раза меньше кода, чем Java. Что касается Swing vs SWT: NetBeans GUI значительно быстрее, чем Eclipse...