Výroba multiplatformní aplikace s GUI v Javě

Re:Výroba multiplatformní aplikace s GUI v Javě
« Odpověď #15 kdy: 12. 04. 2021, 19:50:46 »
Všichni ti příznivci JavaFX - dejte sem linky na ty vaše JavaFX aplikace, na kterých tak usilovně pracujete :)

Ale tak jestli s tím někdo chce zabíjet čas...

Ja v tom par let nazpet delal par absolutne ruznych aplikaci (jakoze vselijake servisni aplikace, aplikaci pro navstevy vcetne grafu a statistik, apod.) a i kdyz ted GUI aplikace nedelam, porad mam v hlave javufx zafixovanou jako nejjednodussi na rychle udelani jakehokoliv multiplatformniho gui klikatka.

Priklad, viz. obrazek. Strasne rychle se to da udelat a nemusel sem resil, kdo ma co za operacni system: https://ibb.co/xfk0m4j

V tomhletom https://gluonhq.com/products/scene-builder/ si udelate GUI a pak to jen sparujete na pozadi s kodem a je to. IntellijIdea to ma i propojene, takze fakt jako vyvoj rychly.

Jo, kdyz o tom ted premyslim, neco jako JavaFX mi chybi pro Go :-)
« Poslední změna: 12. 04. 2021, 19:52:50 od Petr Jahoda »


Re:Výroba multiplatformní aplikace s GUI v Javě
« Odpověď #16 kdy: 12. 04. 2021, 20:45:36 »
...a hlavně dotaz zněl na multiplatformní vývoj v javě a tam je odpověď JavaFX zcela validní možnost. Základní charakteristika odpovídá současnému standardu:

  • deklarace UI v xml nebo programově v kódu
  • automatický nebo ruční binding
  • celkem široká paleta GUI prvků
  • možnost kombinovat GUI prvky do vlastních komponent (včetně práce s nimi ve SceneBuilderu)
  • možnost napojit doménové objekty z business vrstvy
  • možnost stylování pomocí css-like stylesheetu (automaticky layout je samozřejmostí)
  • další navazující projekty řešící DI, MessageBus apod.

IMHO se to podobá QT (disclaimer: nejsem QT vývojář, QT znám pouze z doslechu).

Nedostatky by se pochopitelně našly taky - víceméně je znát, že JavaFX není zas tak rozšířená, takže některé věci si musí člověk prošlapat sám a něco není standardně dostupné (nenašel jsem např. použitelný docking systém, chybí podpora system tray, ...). Nicméně v době Electron aplikací se ledacos ztratí, takže...  :D

Re:Výroba multiplatformní aplikace s GUI v Javě
« Odpověď #17 kdy: 14. 04. 2021, 13:19:48 »
Taky přidám názor :

Vše závisí pro jakou verzi SE?
-pokud 4,5,6,7,11,12+, pak rozhodně Swing. Starý, odladěný, spousta návodů, stále implementován v JavaSE.
-pokud 8,9,10 pak možná JavaFX

Přestože JavaFX se mi zdá pěknější než Swing, tak například ta FXML mě vůbec nesedla. Radši jsem to programoval vše v kódu. Navíc jak byla v SE11+a odstraněna z JDK, protože se příliš nechytla se to trochu zkomplikovalo. Tím, že jsou knihovny JavaFX plně modulární, tak to dělá problémy u nemodulárních projektů s tvorbou spustitelných jar.(samozřejmě lze to obejít ale práce navíc). Samozřejmě při tvorbě modulárního run-time projektu vše je v pohodě.

Re:Výroba multiplatformní aplikace s GUI v Javě
« Odpověď #18 kdy: 14. 04. 2021, 13:42:17 »
Všichni ti příznivci JavaFX - dejte sem linky na ty vaše JavaFX aplikace, na kterých tak usilovně pracujete :)

Ale tak jestli s tím někdo chce zabíjet čas...

Ja v tom par let nazpet delal par absolutne ruznych aplikaci (jakoze vselijake servisni aplikace, aplikaci pro navstevy vcetne grafu a statistik, apod.) a i kdyz ted GUI aplikace nedelam, porad mam v hlave javufx zafixovanou jako nejjednodussi na rychle udelani jakehokoliv multiplatformniho gui klikatka.

Priklad, viz. obrazek. Strasne rychle se to da udelat a nemusel sem resil, kdo ma co za operacni system: https://ibb.co/xfk0m4j

V tomhletom https://gluonhq.com/products/scene-builder/ si udelate GUI a pak to jen sparujete na pozadi s kodem a je to. IntellijIdea to ma i propojene, takze fakt jako vyvoj rychly.

Jo, kdyz o tom ted premyslim, neco jako JavaFX mi chybi pro Go :-)
Psát v Go GUI? Není na to moc knihoven a boilerplate to také moc neušetří.

Re:Výroba multiplatformní aplikace s GUI v Javě
« Odpověď #19 kdy: 14. 04. 2021, 16:09:15 »
Taky přidám názor :

Vše závisí pro jakou verzi SE?
-pokud 4,5,6,7,11,12+, pak rozhodně Swing. Starý, odladěný, spousta návodů, stále implementován v JavaSE.
-pokud 8,9,10 pak možná JavaFX

Přestože JavaFX se mi zdá pěknější než Swing, tak například ta FXML mě vůbec nesedla. Radši jsem to programoval vše v kódu. Navíc jak byla v SE11+a odstraněna z JDK, protože se příliš nechytla se to trochu zkomplikovalo. Tím, že jsou knihovny JavaFX plně modulární, tak to dělá problémy u nemodulárních projektů s tvorbou spustitelných jar.(samozřejmě lze to obejít ale práce navíc). Samozřejmě při tvorbě modulárního run-time projektu vše je v pohodě.

Proč to dělení dle verze? Úplně nerozumím. IMHO možná bych akorát zvážil to držet se LTS verzí (Java SE 11).

Jinak mám nemodulární projekty ke kterým si buildím runtime pomocí jdeps a jlink a balím pomoc jpackage a na problém jsem nenarazil. Pokud je runtime standardní s extra instalací javafx, musí se předat javě správné parametry - to je pravda, ale taková specifika mají všechny frameworky a nevidím v tom nic co bych považovat za chybu. Co se týče jpackage, je sice v plenkách, ale pokud nevyhovuje, není problém použít jiný balíčkovací nástroj/instalátor. Neměl bych nic ani proti Swingu, jsou pro něj komponenty, které v javafx chybí, ale ten look and feel mi přijde dnes už hůře obhajitelný. Taky nevím, jak je na tom teď s podporou HiDPI, ale nebylo to nic moc. FXML nemusíte používat, současně jej můžete používat s vlastními komponentami - oboje je výhoda. SceneBuilder a celý postup práce by chtěl sice více dotáhnout, ale použít se to dá.


Re:Výroba multiplatformní aplikace s GUI v Javě
« Odpověď #20 kdy: 14. 04. 2021, 16:26:46 »
PS: Koukám, že zrovna vyšla nová verze SceneBuilderu  :) Doporučuju na to kouknout https://github.com/gluonhq/scenebuilder https://docs.gluonhq.com/scenebuilder/ https://gluonhq.com/products/scene-builder/

Re:Výroba multiplatformní aplikace s GUI v Javě
« Odpověď #21 kdy: 14. 04. 2021, 21:39:18 »

Proč to dělení dle verze? Úplně nerozumím. IMHO možná bych akorát zvážil to držet se LTS verzí (Java SE 11).

Jinak mám nemodulární projekty ke kterým si buildím runtime pomocí jdeps a jlink a balím pomoc jpackage a na problém jsem nenarazil. Pokud je runtime standardní s extra instalací javafx, musí se předat javě správné parametry - to je pravda, ale taková specifika mají všechny frameworky a nevidím v tom nic co bych považovat za chybu. Co se týče jpackage, je sice v plenkách, ale pokud nevyhovuje, není problém použít jiný balíčkovací nástroj/instalátor. Neměl bych nic ani proti Swingu, jsou pro něj komponenty, které v javafx chybí, ale ten look and feel mi přijde dnes už hůře obhajitelný. Taky nevím, jak je na tom teď s podporou HiDPI, ale nebylo to nic moc. FXML nemusíte používat, současně jej můžete používat s vlastními komponentami - oboje je výhoda. SceneBuilder a celý postup práce by chtěl sice více dotáhnout, ale použít se to dá.

Dneska mám pohodovou náladu a tak budu reagovat. A dokonce nebudu ani agresivní a prohlásím, že jsem to možná chybně zformuloval.

Nemluvím, že je problém tvorba run-time image(projekt+jvm) u nemodulárních/modulárních projektu. Nemluvím o spuštění přes příkazový řádek s parametry u kterých specifikuji dané moduly. Mluvím o tom, že je problém(jenž má několik podstatně složitějších řešení)použít modulární knihovny příp. frameworky a vyrobit spustitelný build(tvz. runnable jar), který spustíš double-clickem např. z plochy, z total commanderu, apod..