У меня есть очень большая программа, которая в настоящее время использует SWT. Программа может быть запущена на Windows, Mac и Linux, и это большое настольное приложение со многими элементами. Теперь, когда SWT несколько устарел, я бы хотел перейти на Swing или JavaFX. И я хотел бы услышать ваши мысли о трех вещах.
Моя главная проблема в том, что будет лучше для настольного приложения с графическим интерфейсом? (Я посмотрел онлайн, и многие люди считают, что JavaFX так же хорош, как Swing, но я не видел много веских аргументов, кроме простых войн за пламя мнения) Он должен работать как на Windows, Mac, так и на некоторых популярных дистрибутивах Linux.
Что будет чище и проще в обслуживании?
и что будет быстрее строить с нуля?
Я использую методологию MVC в своем приложении, если это поможет.
Ответы:
При прочих равных, возможно, JavaFX - API гораздо более согласован между компонентами. Однако это зависит в большей степени от того, как написан код, а не от того, какая библиотека используется для его написания .
Сильно зависит от того, что вы строите. Swing имеет больше компонентов для него (как сторонних, так и встроенных), и еще не все из них пробились на более новую платформу JavaFX, поэтому может потребоваться определенное количество изобретать колесо, если вам нужно что-то немного на заказ. С другой стороны, если вы хотите делать переходы / анимацию / видео, то это на порядок проще в FX.
Еще одна вещь, которую нужно иметь в виду, - это (возможно) внешний вид. Если вам абсолютно необходимо иметь внешний вид системы по умолчанию, то JavaFX (в настоящее время) не может обеспечить это. Для меня это не так уж важно (я все равно предпочитаю внешний вид FX по умолчанию), но я знаю, что некоторые политики требуют ограничения для системных стилей.
Лично я вижу JavaFX как готовую библиотеку пользовательского интерфейса, которая еще не готова (но более чем пригодна для использования), а Swing - пограничную библиотеку пользовательского интерфейса, которая полностью функционирует и поддерживается на данный момент, но, вероятно, не будет так много в ближайшие годы (и, следовательно, шансы на то, что FX обгонит его в какой-то момент).
источник
Как утверждает Oracle, JavaFX - это следующий шаг в их стратегии расширенного клиента на Java. Соответственно, это то, что я рекомендую для вашей ситуации:
Для получения дополнительной информации, пожалуйста, ознакомьтесь с этой статьей часто задаваемых вопросов Oracle относительно JavaFX здесь.
источник
Никто не упоминал об этом, но JavaFX не компилируется и не запускается на определенных архитектурах, которые Oracle считает «серверами» (например, Solaris), из-за отсутствующей поддержки «jfxrt.jar». Придерживайтесь SWT, до дальнейшего уведомления.
источник
Я не думаю, что есть какой-то один правильный ответ на этот вопрос, но мой совет будет придерживаться SWT, если вы не сталкиваетесь с серьезными ограничениями, которые требуют такого масштабного пересмотра.
Кроме того, SWT на самом деле новее и более активно поддерживается, чем Swing. (Первоначально он был разработан как замена Swing с использованием собственных компонентов).
источник
Я бы посмотрел вокруг, чтобы найти некоторые (сторонние?) Компоненты, которые делают то, что вы хотите. Мне пришлось создать пользовательские компоненты Swing для представления повестки дня, где вы можете забронировать несколько ресурсов, а также сетку, подобную Excel, которая хорошо работает с навигацией с помощью клавиатуры и так далее. У меня было ужасное время заставить их работать хорошо, потому что мне приходилось вникать во многие тонкости Swing всякий раз, когда я сталкивался с проблемой. Поведение мыши и фокусировки, а также многое другое может быть очень трудно понять, особенно для обычного пользователя Swing. Я хотел бы надеяться, что JavaFX немного более ориентирован на будущее и является гладким из коробки.
источник
На старых ноутбуках со встроенным видео приложение Swing запускается и работает намного быстрее, чем приложение JavaFX. Что касается разработки, я бы рекомендовал перейти на Scala - сопоставимое приложение Scala Swing содержит в 2,3 раза меньше кода, чем Java. Что касается Swing против SWT: графический интерфейс Netbeans значительно быстрее, чем Eclipse ...
источник