LINUX.ORG.RU

Java desktop GUI framework?

 , ,


0

4

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

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

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

★★

Увы, только Swing/AWT. JavaFX выкинули из JDK.

EXL ★★★★★
()

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)

Чем тебя Swing то раздражает? Вроде работает и есть не просит. Да, кода многовато, но и фиг с ним.

Deleted
()

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

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

bvn13 ★★★★★
()

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

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

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

За электрон можно и по лицу отхватить

anonymous
()

Все свои полторы софтинки писал на свинге. Есть в нем что-то такое приятное...

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

Аноним выше очень правильно про него высказался :)

Zhbert ★★★★★
()

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 ★★★★★
()

Меня очень раздражает почти классика - принятие решений, инициированных раздражителями

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

Правильный фреймворк для десктопного UI называется Electron

А не дохера ли оверхеда от этого «правильного фреймворка»™?

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

В этом году новую рязань выпускают, всё в порядке

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

В чём он был ущербен?

очевидно qt1 не обладает всеми теми возможностями, что в qt5 этим и ущербен

x905 ★★★★★
()

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

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

anonymous
()

Всех упомянувших электрон – на костёр нах.

dimgel ★★★★★
()

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

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

Если постараться, к Swing’у вроде можно прикрутить IDEA’вский LookAndFeel.

EXL ★★★★★
()
Ответ на: комментарий от 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 ★★★★★
()

раздражает Swing

Чем? Удобнее свинга я только куэмэлину видел.

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

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

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

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

А не дохера ли нищеброд ты?

На каждый комп по 32 Гб оперативы ставить, чтобы два мессенджера запустить одновременно? Нет уж, спасибо.

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

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

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

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

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

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

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

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

Собрать десктоп помощнее я то могу, но поощрять вас дегенератов писать тормозной говнокод под электрон, это пускай оплачивают другие лохи.

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

Как вы думаете, почему Microsoft делает такую ставку на электрон? VS Code, Skype - они серьезно настроились, судя по всему.

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

это пускай оплачивают другие лохи

И как.. много уже оплатил, нелох?

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

Да потому что это Микрософт. Дотнет штука хорошая, приложения же их полный ахтунг и жиромясокомбинат.

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

Это только про кривой веб.
JavaScript - не только, html - не только, а вот GUI на этой связке - тоько веб.

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

Зато исчезнут все претензии про ненативный L&F (:

Legioner ★★★★★
()
30 июля 2020 г.
Ответ на: комментарий от Legioner

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

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

Посмотри в сторону JavaFX. Вроде там была возможность загружать CSS-подобные стили. Этим можно изменять дизайн в определённой степени.

Legioner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.