Что лучше javafx или swing
Swing vs JavaFx for desktop applications [closed]
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
I have a very big program that is currently using SWT. The program can be run on both Windows, Mac and Linux, and it is a big desktop application with many elements. Now SWT being somewhat old I would like to switch to either Swing or JavaFX. And I would like to hear your thoughts on three things.
My main concern is what will be better for a desktop GUI application? (I looked online and a lot of people suggest that JavaFX is just as good as Swing, but I didn’t see many valid arguments except simple opinion flame wars). It has to work on both Windows, Mac and some popular Linux distributions.
What will be cleaner and easier to maintain?
and what will be faster to build from scratch?
I am using MVC methology in my application, if that is of any help.
6 Answers 6
What will be cleaner and easier to maintain?
And what will be faster to build from scratch?
Highly dependent on what you’re building. Swing has more components around for it (3rd party as well as built in) and not all of them have made their way to the newer JavaFX platform yet, so there may be a certain amount of re-inventing the wheel if you need something a bit custom. On the other hand, if you want to do transitions / animations / video stuff then this is orders of magnitude easier in FX.
One other thing to bear in mind is (perhaps) look and feel. If you absolutely must have the default system look and feel, then JavaFX (at present) can’t provide this. Not a big must have for me (I prefer the default FX look anyway) but I’m aware some policies mandate a restriction to system styles.
Personally, I see JavaFX as the «up and coming» UI library that’s not quite there yet (but more than usable), and Swing as the borderline-legacy UI library that’s fully featured and supported for the moment, but probably won’t be so much in the years to come (and therefore chances are FX will overtake it at some point.)
Java Swing против Java FX
Разница между Java Swing и Java FX
Когда дело доходит до экосистемы Java, Swing выступает в качестве инструментария для графического виджета. Swing отвечает за предоставление API, за создание пользовательского интерфейса для программ Java. До появления Swing AWT, т.е. Abstract Window Toolkit, отвечал за предоставление расширенной формы компонентов пользовательского интерфейса. Но Swing заменяет библиотеку AWT и создает внешний вид, напоминающий большинство платформ. Эти созданные компоненты пользовательского интерфейса являются не только передовыми с точки зрения внешнего вида и ощущений, но и по своей природе подключаемыми. Это означает, что базовая платформа не ограничена определенным набором компонентов пользовательского интерфейса. Компоненты пользовательского интерфейса, такие как кнопки, метки и флажки, могут быть легко созданы с помощью API Swing. Таким образом, Swing более гибок по своей природе, чем AWT.
Swing не только предоставляет дизайнеру обычный компонент пользовательского интерфейса, но и продвинутые компоненты, такие как панель с вкладками, панели прокрутки, таблицы, деревья и т. Д. Swings имеет некоторые дополнительные преимущества по сравнению с AWT, что делает Swing обгонять AWT при разработке компонентов пользовательского интерфейса. Компоненты пользовательского интерфейса в Swing полностью разработаны на Java и, таким образом, они не зависят от платформы, в отличие от компонентов AWT. Платформой, принятой Swing, является MVC, то есть Model-view-controller, который обеспечивает абстракцию между графическим интерфейсом пользователя и базовой структурой кода. Эта абстракция помогает составителю компонентов пользовательского интерфейса поддерживать «разделение интересов», например архитектуру. Любой разработчик может иметь доступ ко всем доступным классам Swing с их полной документацией в руководстве по API Java. Одним из классических аспектов Swing является его модульная архитектура, поскольку этот разработчик может создать собственную реализацию пользовательского интерфейса стандартных компонентов пользовательского интерфейса, что приведет к переопределению реализации по умолчанию с использованием концепции наследования Java.
JavaFX действует как стандартная библиотека графического интерфейса пользователя, имея обширную поддержку настольного компьютера и различных веб-браузеров в разных операционных системах, таких как Windows, Linux и т. Д. Настольные приложения могут эффективно создаваться с использованием JavaFX, выступающего в качестве программной платформы. В более ранней редакции JavaFX для создания приложений JavaFX использовались сценарии, эти сценарии носили декларативный и статический характер. Но с появлением версии JavaFX 2.0 она реализована в виде библиотеки Java, что означает, что приложения теперь могут быть написаны с использованием собственного кода Java вместо сценариев. С помощью JavaFX разработчики Java могут решать все проблемы, связанные с современным дизайном пользовательского интерфейса. В современном пользовательском интерфейсе требуется сложный набор элементов управления, быстродействие пользовательского интерфейса сильно зависит от параллелизма, но многопоточный код Java требует большого количества стандартного добавления кода.
Все эти проблемы могут быть успешно решены с помощью JavaFX. Стратегия Sun по созданию многофункциональных интернет-приложений упрощает жизнь Java-разработчика, что соответствует Adobe Flex и инструменту Microsoft Silver light. Легкий инструмент Flex и Silver использует XML, декларативный язык, тогда как JavaFX использует собственную версию сценариев. Все Java-разработчики, хорошо знакомые с API-интерфейсами Swing, могут легко противостоять сценариям JavaFX и переписывать свои компоненты пользовательского интерфейса, более универсальные и насыщенные интернетом приложения. Эти сценарии JavaFX не только включают новые API, но также имеют доступ ко всем пакетам Java. Сцена создается как иерархия визуальных узлов и может быть создана с помощью API сцены, в результате чего графическая сцена может эффективно реагировать на взаимодействие с пользователем. Уровень абстракции, предоставляемый API, эффективен и обеспечивает все виды автоматической оптимизации. Любое обычное Java-приложение также может использовать API графа сцены. JavaFX 8, представил некоторые из новых функций, таких как поддержка 3D-графики, поддержка расширенного текста, поддержка сенсоров и т. Д.
Сравнение лицом к лицу между Java Swing и Java FX (Инфографика)
Ниже приведено 6 лучших отличий между Java Swing и Java FX.
Ключевые различия между Java Swing и Java FX
Java Swing против Java FX Сравнительная таблица
Основа сравнения между Java Swing и Java FX
Java Swing и Java FX активно используются в экосистеме Java для создания компонентов пользовательского интерфейса. Эти компоненты пользовательского интерфейса основаны на шаблоне MVC и имеют подключаемый характер. Другой аспект заключается в том, что они не зависят от базовой платформы, разработчики должны знать о концепциях Java и могут создавать компоненты пользовательского интерфейса. Swing имеет внушительное количество доступных компонентов пользовательского интерфейса, которые имеют встроенные классы для каждой потребности пользовательского интерфейса, например кнопки, панели, фрейма и т. Д. Java FX, с другой стороны, имеет компоненты пользовательского интерфейса, которые изначально основаны на Swing, так как Swing прибыл много раньше, чем JavaFX.
JavaFX может предоставить программную платформу для написания многофункционального интернет-приложения с современным пользовательским интерфейсом, со сложным внешним видом. Он все еще развивается и, как ожидается, будет расти в будущем. С точки зрения разработчика Java, обе технологии очень полезны при написании подключаемых компонентов пользовательского интерфейса. Имея обширную библиотеку компонентов пользовательского интерфейса, Swing может предоставить разработчикам дополнительные преимущества, тогда как когда дело доходит до разработки современного и многофункционального интернет-приложения, JavaFX может заменить Swing.
Рекомендуемые статьи
JavaFX против Swing
Различия между JavaFX и Swing
1. Что такое JavaFX?
Параметры JavaFX
2. Что такое свинг?
Swing API может быть набором расширяемых частей графического интерфейса, чтобы упростить жизнь разработчика и сформировать основанные на JAVA приложения Front End / GUI. Он включает в себя простую часть AWT API и выступает в качестве замены AWT API, поскольку практически каждое управление сопоставимо с элементами управления AWT. Часть Swing следует дизайну Model-View-Controller для соответствия последующим критериям.
Особенности Swing
Сравнение лицом к лицу между JavaFX и Swing
Ниже приведены 6 лучших сравнений между JavaFX и Swing.
Сравнительная таблица JavaFX против Swing
Ниже приведен список пунктов, опишите сравнение между JavaFX и Swing
| С. Нет. | JavaFX | свинг |
| 1 | В JavaFX макеты являются подклассами категории Node, аналогичными элементам управления и фигурам. Макеты содержат группу узлов, и любой узел, содержащийся во время макета, часто является любым разумным узлом: оттиском, формой или другим макетом. | В Swing макет связан с JPanel. Командный JPanel обеспечивает фундаментальную компоновку кадра. Если вы хотите вложить дополнительные макеты с интервалами командного макета, вам нужно создать дополнительные JPanels, установить связанные с ними макеты, а затем добавить их в макет более высокого уровня. |
| 2 | События в JavaFX более продуманы и согласованы, чем их эквиваленты в Swing. | События в Swing не настолько последовательны |
| 3 | JavaFX поддерживает идеи свойств и широко использует свойства в своих категориях. Проще говоря, свойство может быть переменной, цена которой часто определяется. Кроме того, вы сможете привязать свойства к каждой альтернативе, а это означает, что если изменяется одна цена на недвижимость, с ней механически изменяется противоположная цена на недвижимость. | Обработка событий Swing не поддерживается |
| 4 | JavaFX имеет много привлекательных элементов управления, которых нет в Swing, например, складное управление Titled Pane и управление Accordion, которое организует несколько элементов управления Titled Pane во время стека. | Swing имеет базовые элементы управления, такие как кнопки, флажки и полосы. |
| 5 | JavaFX имеет встроенную поддержку стильных анимаций, которые будут применяться к любому узлу в графе сцены. Вы сможете использовать одну из множества внутренних категорий переходов для выполнения обычных анимаций, похожих на замирания, вращения или способы движения. Или вы сможете использовать категории KeyFrame и Timeline для простого запуска пользовательских анимаций. | Анимация возможна в Swing, однако Swing не дает никакой миссии для нее. Чтобы анимировать часть Swing, вам нужно запустить свои собственные таймеры и создать собственную логику для выполнения анимации. |
| 6 | JavaFX имеет встроенную поддержку жестов подписи, напоминающих прокрутку, пролистывание, вращение и масштабирование. | В Swing отсутствует какая-либо поддержка современных сенсорных устройств. |
JavaFX предназначен для создания приложений с такими тонкими параметрами графического интерфейса пользователя, как анимация, веб-представления, воспроизведение аудио и видео, а также проекты, поддерживаемые каскадными таблицами стилей (CSS).
Рекомендуемая статья
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. Соответственно, это то, что я рекомендую для вашей ситуации:
что было бы проще и чище поддерживать
что бы быстрее построить с нуля
поддержка шаблона MVC
для получения дополнительной информации, пожалуйста, посмотрите эти FAQ сообщение Oracle относительно JavaFX здесь.
никто не упоминал об этом, но JavaFX не компилируется или не запускается на определенных архитектурах, считающихся «серверами» Oracle (например, Solaris), из-за отсутствия «jfxrt.jar » поддержка. Придерживайтесь SWT, до дальнейшего уведомления.
Я не думаю, что есть какой-то один правильный ответ на этот вопрос, но мой совет был бы придерживаться SWT, если вы не сталкиваетесь с серьезными ограничениями, которые требуют такого масштабного ремонта.
кроме того, SWT на самом деле новее и более активно поддерживается, чем Swing. (Это было изначально разработанный как замена для качания используя родные компоненты).
Я бы посмотрел вокруг, чтобы найти некоторые (3rd партия?) компоненты, которые делают то, что вы хотите. Мне пришлось создать пользовательские компоненты Swing для представления повестки дня, где вы можете заказать несколько ресурсов, а также сетку Excel, которая хорошо работает с навигацией по клавиатуре и так далее. У меня было ужасное время, чтобы заставить их работать хорошо, потому что мне нужно было вникать во многие из многих тонкостей свинга, когда я сталкивался с проблемой. Мышь и Фокус поведение и многое другое может быть очень трудно получить правильно, особенно для случайного пользователя Swing. Я надеюсь, что JavaFX немного более ориентирован на будущее и сглажен из коробки.
Swing vs JavaFx для настольных приложений [закрыто]
У меня есть очень большая программа, которая в настоящее время использует SWT. Программа может быть запущена на Windows, Mac и Linux, и это большое настольное приложение с множеством элементов. Теперь SWT несколько стар, я хотел бы переключиться на Swing или JavaFX. И я хотел бы услышать ваши мысли о трех вещах.
Что будет чище и проще в обслуживании?
и что будет быстрее строить с нуля?
Я использую MVC methology в своем приложении, если это может помочь.
6 ответов:
что будет чище и проще в обслуживании?
при прочих равных условиях, вероятно, JavaFX-API гораздо более согласован между компонентами. Однако это зависит гораздо больше от как пишется код, а не какая библиотека используется для его написания.
и что будет быстрее строить с нуля?
сильно зависит от того, что вы строите. Качели имеет больше компонентов вокруг для этого (3rd party, а также встроенный), и не все из них пробились на новую платформу JavaFX, поэтому может быть определенное количество повторного изобретения колеса, если вам нужно что-то немного обычное. С другой стороны, если вы хотите делать переходы / анимации / видео вещи, то это на порядки проще в FX.
еще одна вещь, которую нужно иметь в виду, это (возможно) внешний вид. Если вы абсолютно должны иметь внешний вид системы по умолчанию, то JavaFX (в настоящее время) не могу этого обеспечить. Не большой должен иметь для меня (я все равно предпочитаю внешний вид FX по умолчанию), но я знаю, что некоторые политики предусматривают ограничение на системные стили.
лично я вижу JavaFX как библиотеку пользовательского интерфейса «вверх и вперед», которая не совсем там еще (но более чем пригодный для использования), и качели как пограничная библиотека унаследованного пользовательского интерфейса, которая полнофункциональна и поддерживается на данный момент, но, вероятно, не будет так много в ближайшие годы (и поэтому есть вероятность, что FX обгонит его в некоторая точка.)
Как заявил Oracle, JavaFX является следующим шагом в их Java на основе богатой клиентской стратегии. Соответственно, это то, что я рекомендую для вашей ситуации:
что было бы проще и чище поддерживать
что бы быстрее построить с нуля
поддержка шаблонов MVC
для получения дополнительной информации, пожалуйста, взгляните на эти вопросы и ответы от Oracle относительно JavaFX здесь.
никто не упоминал об этом, но JavaFX не компилируется и не запускается на определенных архитектурах, которые считаются «серверами» Oracle (например, Solaris), из-за отсутствия «jfxrt.банку» поддержку. Придерживайтесь SWT, до дальнейшего уведомления.
Я не думаю, что есть какой-то один правильный ответ на этот вопрос, но мой совет будет придерживаться SWT, если вы не сталкиваетесь с серьезными ограничениями, которые требуют такого масштабного ремонта.
кроме того, SWT на самом деле новее и более активно поддерживается, чем Swing. (Это было изначально разработанный как замена для качания используя родные компоненты).
Я бы посмотрел вокруг, чтобы найти некоторые (3rd party?) компоненты, которые делают то, что вы хотите. Мне пришлось создать пользовательские компоненты Swing для представления повестки дня, где вы можете забронировать несколько ресурсов, а также сетку Excel, которая хорошо работает с навигацией по клавиатуре и так далее. У меня было ужасное время, чтобы заставить их работать хорошо, потому что мне нужно было вникать во многие из многих тонкостей свинга, когда я сталкивался с проблемой. Мышь и Фокус поведение и многое другое может быть очень трудно получить правильно, особенно для случайного пользователя качели. Я надеюсь, что JavaFX немного более ориентирован на будущее и сглажен из коробки.



