Swing vs JavaFx для настільних додатків [закрито]


195

У мене дуже велика програма, яка наразі використовує SWT. Програму можна запускати як на Windows, Mac, так і на Linux, і це великий настільний додаток з багатьма елементами. Тепер SWT, який є дещо старшим, я хотів би перейти на Swing або JavaFX. І я хотів би почути ваші думки про три речі.

Моє головне питання - що буде краще для настільного GUI-програми? (Я подивився в Інтернеті, і багато людей припускають, що JavaFX так само хороший, як і Swing, але я не побачив багатьох вагомих аргументів, окрім простих вогневих вогнів думки). Він повинен працювати як на Windows, Mac, так і на деяких популярних дистрибутивах Linux.

  • Що буде чистіше і простіше в обслуговуванні?

  • і що буде швидше будувати з нуля?

Я використовую методологію MVC у своїй програмі, якщо це допоможе.


23
JavaFX добре, що ви починаєте з нуля. Також тому, що JavaFX офіційно замінює Swing як бібліотеку інтерфейсу Oracle для Java. Це не означає, що Swing закінчено. Це просто означає, що JavaFX буде отримувати набагато більше уваги в кожному випуску. З урахуванням сказаного, в цій мережі є вже мільйон і півтора запитань на цю тему, як в Інтернеті, так і в інших місцях.
nico_c

3
stackoverflow.com/questions/10587713/… Я також згадував Google. Тут вже багато.
nico_c

Гаразд, тому пропозиція справді здається невідповідною, я буду тримати це відкритим, але, напевно, прийму відповідь. Дякуємо за посилання.
Кільйон

1
Ось короткий підсумок JavaFX, хоча будь-який з SWT, Swing або JavaFX буде працювати над створенням настільних додатків.
jewelsea

Ніхто не згадував про це, але JavaFX не компілює та не працює на певних архітектурах, які Oracle (наприклад, Solaris), які вважаються "серверами", через відсутність підтримки "jfxrt.jar".
Малькольм Боекхофф

Відповіді:


155

Що буде чистіше і простіше в обслуговуванні?

Якщо всі рівні, можливо, JavaFX - API набагато послідовніший у всіх компонентах. Однак це значно більше залежить від того, як написаний код, а не від того, яка бібліотека використовується для його запису .

А що буде швидше будувати з нуля?

Сильно залежить від того, що ви будуєте. У Swing є більше компонентів для нього (як сторонні, так і вбудовані), і не всі вони вже пробралися до новішої платформи JavaFX, тому може виникнути певна кількість переназначення колеса, якщо вам потрібно щось біт на замовлення. З іншого боку, якщо ви хочете робити переходи / анімації / відеоролики, то це на порядки простіше у FX.

Ще одне, що слід пам’ятати, - це (можливо) зовнішній вигляд. Якщо ви абсолютно повинні мати системний вигляд за замовчуванням, то JavaFX (в даний час) не може цього надати. Для мене це не є великим (я все-таки віддаю перевагу FX-вигляду за замовчуванням), але я знаю, що деякі політики передбачають обмеження на стилі системи.

Особисто я бачу JavaFX як «і найближчий» бібліотека UI, це не зовсім там ще (але більш придатні до вживання), і свінгу як прикордонні-успадкованого бібліотеки призначеного для користувача інтерфейсу , який повнофункціональний і підтримується на даний момент, але , ймовірно , Не буду стільки в наступні роки (і, отже, ймовірність, що FX в якийсь момент його наздожене).


1
Я вважаю, що всі ці пункти стосуються світу .NET, а також у світі GUI настільних інтерфейсів, де Фонд презентацій Windows - це сучасний підхід, спрямований на заміну старих форм Windows, тому теоретично він кращий у всіх аспектах, крім того, що він не стане (поки? але минули роки) підтримуйте звичайний загальний вигляд елементів керування / оболонки, якого ви очікували, наприклад, простий діалог файлів / браузерний каталог / управління переглядом дерева.
Бітолеан

84

Як зазначає Oracle, JavaFX є наступним кроком у їхній базі на базі клієнтської стратегії. Відповідно, це я рекомендую для вашої ситуації:

Що було б простіше і чистіше підтримувати

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

Що було б швидше побудувати з нуля

  • Це сильно залежить від ваших навичок та інструментів, якими ви користуєтесь.
    • Для розмаїття різні ІДЕ пропонують інструменти для швидкого розвитку. Найкраще, що я особисто знайшов - це конструктор графічного інтерфейсу в NetBeans .
    • JavaFX також має підтримку різних IDE, хоча і не настільки зрілий, як підтримка Swing на даний момент. Однак його підтримка розмітки у FXML та CSS робить розвиток графічного інтерфейсу на JavaFX інтуїтивно зрозумілим.

Підтримка шаблонів MVC

  • JavaFX дуже дружній з MVC-схемою, і ви можете чітко розділити свою роботу як: презентація (FXML, CSS), моделі (Java, об'єкти домену) та логіка (Java).
  • IMHO, підтримка MVC в Swing не дуже приваблива. У потоці, який ви побачите в різних компонентах, бракує послідовності.

Для отримання додаткової інформації, перегляньте цей Oracle пост від Oracle щодо JavaFX тут.


14

Ніхто не згадував про це, але JavaFX не компілює та не працює на певних архітектурах, які Oracle вважає "серверами" (наприклад, Solaris) через відсутність підтримки "jfxrt.jar". Дотримуйтесь SWT, до подальшого повідомлення.


13
@Quillion спеціально просить щось створити настільний додаток, який "повинен працювати як на windows, mac, так і на деякі популярні аромати Linux". . Тож я гадаю, що він не піклується про Соляріс.
Тім Б’юте

5

Я не думаю, що на це питання є правильна відповідь, але моя порада буде дотримуватися SWT, якщо ви не зіткнетесь із суворими обмеженнями, які потребують такого масштабного ремонту.

Також SWT насправді новіший і активніше підтримується, ніж Swing. (Спочатку він був розроблений як заміна для Swing з використанням нативних компонентів).


16
SWT ніколи не призначався замінити Swing. Як так? Swing поставляється з Java від SUN, а SWT працює лише на 4 або 5 платформах і спочатку походить від IBM, і далі розвивався у Фонді Eclispe. Якщо ви взагалі можете сказати: SWT мав на меті замінити AWT.
Angel O'Sphere

0

Я б озирнувся, щоб знайти деякі (треті сторони?) Компоненти, які роблять те, що ви хочете. Мені довелося створити спеціальні компоненти Swing для перегляду порядку денного, де можна забронювати кілька ресурсів, а також сітку, схожу на Excel, яка добре працює з навігацією по клавіатурі тощо. У мене був жахливий час, щоб змусити їх добре працювати, бо мені потрібно було заглиблюватися у багато тонкощів Swing кожного разу, коли я стикався з проблемою. Поведінка миші та фокуса та багато іншого може бути дуже важким для того, щоб виправитись, особливо для випадкового користувача Swing. Я би сподівався, що JavaFX трохи більше орієнтований на майбутнє і злагоджений.


0

На старих ноутбуках із інтегрованим відео додаток Swing запускається та працює набагато швидше, ніж додаток JavaFX. Що стосується розробки, я рекомендую перейти на Scala - порівняний додаток Scala Swing містить у 2 раза в 3 рази менше коду, ніж Java. Що стосується Swing vs SWT: Netbeans GUI значно швидше, ніж Eclipse ...


Скала Свінг добре згадати
нічия
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.