LINUX.ORG.RU

Java desktop GUI framework?

 , ,


0

4

Меня очень раздражает Swing, но альтернатив ему не вижу. Может быть, что-то упускаю?

Смотрю в сторону JavaFX, но совсем не ясно что с ним будет через пару лет.

P.S. Будет приложение выглядеть нативно под каждой платформой или нет - без разницы.

★★

AWT, SWT, Swing, JavaFX, HTML. Вариантов уйма. Если хочется упороться, можно биндинги к Gtk/Qt/WinAPI/Cocoa через JNI пробросить и писать нативный гуй.

Legioner ★★★★★ ()
Ответ на: комментарий от Legioner

Если хочется упороться

Вот этого как раз не хочется.


  • AWT / Swing ИМХО уж очень ущербны.
  • SWT пока не распробовал.
  • JavaFX - не ясно что будет с им через пару лет + я не понимаю как он работает (т.е. что там с производительностью).
  • HTML / JavaScript - мне не нужен web.
SaBo ★★ ()
Последнее исправление: SaBo (всего исправлений: 2)
Ответ на: комментарий от SaBo

JavaFX - не ясно что будет с им через пару лет

А какая разница, что с ним будет? Главное, что он уже есть.

я не понимаю как он работает (т.е. что там с производительностью).

В теории всё хорошо, т.к. ускоряется на видеокарте, как все современные фреймворки. На практике, конечно, всё зависит от разработчика, как обычно.

HTML / JavaScript - мне не нужен web.

Делай бандл с хромиумом, запускай хттп-сервер на локалхосте и открывай web view со своим сайтом-приложением. Куча совремённого софта так работает.

Я бы, лично, на Swing писал. Просто потому, что там уже ничего меняться не будет, напишешь один раз и будет сто лет работать. Архитектура там совремённая, паттерны, MVC, всё как положено. Есть средства для построения GUI методом WYSIWYG. Можно стилизовать под любую операционную систему. В общем не знаю, чего тут ещё и желать.

Legioner ★★★★★ ()
Последнее исправление: Legioner (всего исправлений: 1)

Java FX выделился в отдельный продукт и продолжает развиваться. Пошукай хабр - вчера был перевод майнтейнера, он там рассказывает о планах. У них даже есть тулза для компилляции в нативные мобильные приложения, если что.

А так - можешь и на реакте, и на электроне.

bvn13 ★★★★★ ()

Ничего плохого не будет с JavaFx. Как и со Swing, как и с SWT. Что мертво умереть не может :) Всё что там нужно делать - следить, чтобы они не развалилсь относительно свежих обновлений в macOS. А этим и так занимается толпа людей в компаниях, которые коммерчески юзают эти фреймворки. Но и ничего нового ждать от них не стоит.

Правильный фреймворк для десктопного UI называется Electron. Ну и точно так же можно встроить браузер внутрь какого-нибудь свинга с помощью CEF или того браузера, что идет в комплекте с JavaFx

stevejobs ★★★★☆ ()

JavaFX, внезапно, пилят. Да, это теперь отдельный проект, но он не заброшен и продолжает развиваться, и уже есть библиотеки и даже framework-и на JavaFX: https://github.com/mhrimaz/AwesomeJavaFX/blob/master/README.md

Swing с 11-ой версии особо не развивают, только чинят ошибки.

ma1uta ★★ ()
Ответ на: комментарий от SaBo

AWT / Swing ИМХО уж очень ущербны.

А можно поинтересовать, чем именно ущербны? Так то у Swing и Qt одинаковая архитектура (они и появились примерно в одно время).

SWT пока не распробовал.

Т. к. по факту это биндинги к native библиотекам, то залезть внутрь не получится. Бонусом идёт ручное освобождение ресурсов (иначе handler-ы быстро заканчиваются).

JavaFX - не ясно что будет с им через пару лет + я не понимаю как он работает (т.е. что там с производительностью).

Пилят его как отдельную библиотеку. Что-то добавляют, что-то чинят. Не сказал бы, что там застой. Устроен похожим образом как и Swing, тот же потом для отрисовки гуя в наличии. Плюс добавили отдельный поток для аудио/видео и биндинги. При этом в JavaFX есть понятие backend-а (называется Prism) - это движок, который занимается отрисовкой через OpenGL, DirectX, Java2D. Более подробнее можно почитать тут: https://docs.oracle.com/javafx/2/architecture/jfxpub-architecture.htm

ma1uta ★★ ()
Ответ на: комментарий от ma1uta

А можно поинтересовать, чем именно ущербны? Так то у Swing и Qt одинаковая архитектура (они и появились примерно в одно время).

у Qt очень многое менялось со дня его появления, ибо был он ущербен )

x905 ★★★★★ ()

Меня очень раздражает Swing, но альтернатив ему не вижу. Может быть, что-то упускаю?

Идея не писать GUI на Java в голову не приходила?

anonymous ()
Ответ на: комментарий от Im_not_a_robot

Если его хватает им и они не планируют что-то менять

Им его далеко не хватает, учитывая что они там помимо своего стиля заточенного под HiDPI ещё и поддержку некоторых Layout’ов внесли, вроде GridLayoutManager.

EXL ★★★★★ ()
Ответ на: комментарий от EXL

Им его далеко не хватает,

Поинт в том, что они продолжают его использовать.

они там помимо своего стиля заточенного под HiDPI ещё и поддержку некоторых Layout’ов внесли, вроде GridLayoutManager

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

Im_not_a_robot ★★★★★ ()
Ответ на: комментарий от Im_not_a_robot

Ну какбэ, если нужно что-то необычное, то разработчик сам добавляет, так в любом фреймворке.

И в этом смысле свинг гибок необычайно, AFAIK. Естественно ценой определённой громоздкости (этот tradeoff вообще для жавы характерен – взять хотя бы io streams), но благими намерениями компактности прикладного кода для типовых случаев выложена дорога в ад хреновой расширяемости либ.

dimgel ★★★ ()
Ответ на: комментарий от Legioner

Делай бандл с хромиумом, запускай хттп-сервер на локалхосте и открывай web view со своим сайтом-приложением. Куча совремённого софта так работает

Тот факт, что энное количество софта так работает, еще не значит, что этот софт не убогий.

byko3y ()
Ответ на: комментарий от Im_not_a_robot

Это уже реальность, 8Гб ни на что не хватает сейчас. Сейчас минимум уже 16

Так 16 Гб уже тоже не хватает. Скайпик-дискорд запустил - вот и всё, на IDE уже не хватает.

byko3y ()
Ответ на: комментарий от Im_not_a_robot

Ты о том, что нужно общие библиотеки? Так у них все равно разные версии браузера и библиотек будут.

Я могу понять, когда у меня жаба жрет память - да, это надежно, стабильно, даже если код писала самая бездарная в мире макака. Но оправдания для электрона я не вижу никакого: оно прожорливо и при этом имеет посредственную стабильность.

Вообще, практически всегда у приложений есть разделение игрофон-десктоп, которые никакими ужимками не могут давать одинаковую функциональность на обоих платформах, потому что либо на десктопе будет убогое примитивное управление без контекстного меню и скрола, либо на игрофоне тяжелое и не влезающее на экран.
Ну типа да, повторное использование кода - это приятно, правда, нынче обычно стараются повторно использовать код на сервере, поскольку на игрофоне батарея не резиновая.
Даже Facebook отказался от реакта в пользу родных приложений - я хз, почему вы до сих намерены акцентировать внимание на этом направлении.

byko3y ()
Последнее исправление: byko3y (всего исправлений: 1)
Ответ на: комментарий от Legioner

А если хочется дать возможность пользователю загружать свои варианты дизаена™ без изменения кода программы? Т.е. нечто вроде шаблонизатора? Мя нашёл вот этот список и немного окосел от обилия и кривоты.

izzholtik ()