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



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



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




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


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



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

681   6  

6 ответов:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Comments

    Ничего не найдено.