Výroba multiplatformní aplikace s GUI v Javě

Výroba multiplatformní aplikace s GUI v Javě
« kdy: 07. 04. 2021, 16:42:36 »
Da se dneska napsat aplikace v Jave tak, ze by jela i na Adroidu? Resp. obracene, udelat aplikaci s GUI tak, aby to nejelo jen na Adroidu, ale i na Windows nebo na Linuxu?

Jsem Javista uz pres 5 let, ale jeste nikdy jsem nedelal aplikaci pro Android, jsem backendak, tak vlastne nevim, co to vsechno umi. V podstate mi jde o neco podobneho co umoznuje treba Xamarin od .NETu.
« Poslední změna: 07. 04. 2021, 18:12:02 od Petr Krčmář »


Re:Vyroba multiplatformni aplikace s GUI v Jave
« Odpověď #1 kdy: 07. 04. 2021, 17:36:05 »
V praxi jsem to nezkoušel, ale koukněte na https://gluonhq.com/ a https://gluonhq.com/products/mobile/javafxports/

Případně lze některé situace řešit během aplikace v prohlížeči - https://www.jpro.one/ a https://www.webswing.org/

Jinak v JavaFX se dělá celkem příjemně https://openjfx.io/

Re:Výroba multiplatformní aplikace s GUI v Javě
« Odpověď #2 kdy: 07. 04. 2021, 18:37:04 »
Já takhle trochu narazil. V roce 2007 jsem napsal adventuru určenou pro uživatele jednoho diskusního serveru: zvolil jsem právě Javu (tehdy Swing) protože třetina používala Windows, třetina Mac a třetina Linux. Docela to tehdy mělo úspěch, proto jsem se rozhodl vyvinout jinou adventuru, tentokrát s obecně známými vtípky, aby nebyla jenom specifická pro ten server: protože jsem neměl čas, tak se vývoj protáhl až do pandemické doby, kdy se nějaký ten čas našel a já hru dodělal. Použil jsem právě Javu a Swing, protože jsem měl z toho roku 2007 hotovou knihovnu na GUI.

Ovšem narazil jsem na to, že dneska už dost málo lidí má na desktopu nainstalovanou Javu. A hra jim většinou nestojí za to, aby si ji tam dali, zvlášť když to představuje třeba i bezpečnostní rizika. Nevím, zda by to s vaší aplikací nebylo podobně.

Re:Výroba multiplatformní aplikace s GUI v Javě
« Odpověď #3 kdy: 07. 04. 2021, 18:38:05 »
Nejaky reseni jsou, ale zadne seriozni nepocita s javou. Nebo alespon ja jsem zadne takove nepotkal.

Re:Výroba multiplatformní aplikace s GUI v Javě
« Odpověď #4 kdy: 07. 04. 2021, 20:22:01 »
JavaFX port a gluon je z pohledu multiplatformnosti docela použitelné řešení. Spolupracuji na vývoji jedné aplikace (ne jako programátor, ale jako zadavatel), která je v tomto psaná a skutečně aplikace funguje stejně na androidu, linuxu i na MACu. Na ničem jiném jsem to neviděl, ale asi to bude fungovat. Toto byl totiž jeden z důvodů proč jsme tento projekt chtěli podpořit. Bohužel aktuální situace je taková, že po několika letech se celý projekt zahodil a začalo se znovu a to NEmultiplatformní cestou. Důvodem je podle programátora:
1. Pomalá reakce vývojářů JavaFXPortu na stále se zrychlující tempo vývoje mobilních technologií. A díky tomu nutnost stále něco znásilňovat.
2. Samotná multiplatformnost se ukázala jako problém, protože každý OS se trochu jinak ovládá a je potřeba tvořit specifické vyjímky.
3. Nová finanční politika JavaFX vývojářů způsobila, že se projekt pokud se nehodlá prodávat nevyplatí financovat. Původně tuším stačilo za pár desítek dolarů zakoupit přístup na pár tejdnů. Nyní je to asi na rok a cena je vysoká. Toto asi neplatí pokud si člověk vyvíjí aplikaci jen pro sebe. Pak je to možná s nějakým omezením "zadarmo".




Re:Výroba multiplatformní aplikace s GUI v Javě
« Odpověď #5 kdy: 07. 04. 2021, 21:38:30 »
Ovšem narazil jsem na to, že dneska už dost málo lidí má na desktopu nainstalovanou Javu.

Není problém javu přibalit k aplikaci, takže ve výsledku uživatel o žádné javě neví. Lze přibalit i jen používané části, takže se redukuje velikost. Potřebné nástroje jdeps, jlink, javapackager jsou již součástí standardní openjdk a funguje to dobře.

Re:Výroba multiplatformní aplikace s GUI v Javě
« Odpověď #6 kdy: 07. 04. 2021, 22:16:12 »
3. Nová finanční politika JavaFX vývojářů způsobila, že se projekt pokud se nehodlá prodávat nevyplatí financovat. Původně tuším stačilo za pár desítek dolarů zakoupit přístup na pár tejdnů. Nyní je to asi na rok a cena je vysoká. Toto asi neplatí pokud si člověk vyvíjí aplikaci jen pro sebe. Pak je to možná s nějakým omezením "zadarmo".

Samotnou Java FX lze použít bez jakékoli licence v plném rozsahu. JavaFXPorts (aby javafx běžela na mobilech) snad také (obojí je současně opensource). Nad tím je teprve postavený business Gluonu -  Mobile, CloudLink, podpora a další služby. Ceník Gluonu https://gluonhq.com/pricing/ a https://gluonhq.com/download/cloudlink-pricing/

Ono ani ostatní řešení také nejsou zadarmo a nejsou ani všespásná. Takže se opravdu může v řadě případů vyplatit dělat klasicky více samostatných aplikací pomocí nativních prostředků...

Re:Výroba multiplatformní aplikace s GUI v Javě
« Odpověď #7 kdy: 08. 04. 2021, 11:38:14 »
Ovšem narazil jsem na to, že dneska už dost málo lidí má na desktopu nainstalovanou Javu. A hra jim většinou nestojí za to, aby si ji tam dali, zvlášť když to představuje třeba i bezpečnostní rizika.
Ake bezpecnostne rizika predstavuje pridanie java runtime na pocitac?

Re:Výroba multiplatformní aplikace s GUI v Javě
« Odpověď #8 kdy: 08. 04. 2021, 19:07:04 »
Stejné jako provoz jiného software, tj. hlavně nutnost aktualizací? Ale to se týká právě každého software, takže jako argument to je celkem k ničemu. Javu bych v daném případě přibalil k programu a prostě vydával aktualizované verze programu i při vydání nové verze javy. Protože autor by měl stejně svůj program testovat vůči novým verzím javy, tedy pokud chce držet aktuálnost a funkčnost (a to bez rozdílu na tom, jak se ta java do pc uživatele dostane). Takže pak už není tolik práce navíc vydat nový aktualizovaný balíček.

Re:Výroba multiplatformní aplikace s GUI v Javě
« Odpověď #9 kdy: 09. 04. 2021, 10:54:06 »
JavaFX je mrtvá technologie - nemá vývoj ani komunitu. Ušetři si čas a uteč.

Už i Electron by byla lepší investice pro cross-platform produkt.

Re:Výroba multiplatformní aplikace s GUI v Javě
« Odpověď #10 kdy: 09. 04. 2021, 12:13:37 »
Tady je dobrá rada drahá. Jedna možnost je opravdu risknout to s JavaFX. Pokud to dobře dopadne, tak vznikne jeden kód v Javě pro všechny cílové platformy, což by byla lahoda. 

Pokud by postačil desktop (Win/Lin/Mac) + Android, tak bych zkusil výrazně oddělit UI od logiky a udělat jedno UI pro Android (přes standardní Java Android knihovny) a druhé pro desktop. A na desktopu babo raď. Swing, JavaFX nebo SWT. Který z toolkitů je menší zombie?. Jenomže tak je ze hry iOS.

none_

Re:Výroba multiplatformní aplikace s GUI v Javě
« Odpověď #11 kdy: 09. 04. 2021, 13:12:29 »
Pokud bych delal neco, co by se melo dat pouzit vsude, tak bych se drzel HTML5. Myslim, ze pro vsechny tyto platformy existuje moznost tvarit se, ze webova stranka je aplikace.

Otazka je, jestli to neni spis na obtiz. Pochybuju, ze by bylo optimalni mit pro vsechny platformy stejny vzhled UI (uz jenom proto, ze se ovladaji jinak) a potom muze byt stylovani mnohem komplikovanejsi, nez kdyby mela kazda platforma sve jednoduche UI (nebo aspon mobily a desktopy zvlast).

Obecne UI Java technologie nejsou uplne ve skvele forme. Hlavne na desktopu. Android je trochu jiny pripad, ale tam pak nejsou ty aplikace vubec prenositelne.

Re:Výroba multiplatformní aplikace s GUI v Javě
« Odpověď #12 kdy: 09. 04. 2021, 16:44:41 »
JavaFX je dobře navržená platforma a nepřijde mi zas tak mrtvá. Akorát by mohla být rozšířenější a s větší komunitou, to ano. Bohužel, dnes vše běží v prohlížeči a vyvíjí se v javascriptu nebo transpilovaných jazycích. Ale IMHO se to kyvadlo pomalu překlopí a bude se víc vyvíjet pro desktop, byť s cloudem někde na pozadí. Já si myslím že se oba přístupy (desktop vs. browser) obohacují, takže v tom nevidím moc problém. Chtělo by to dotáhnout ty hybridní platformy jako je Electron - on se deploy javafx aplikace s přibalenou javou nápadně podobá Elektron aplikacím co se týče velikosti, nároků a nedostatků. Takže jde o systémový problém. V případě javy s tím může ještě docela pohnout GraalVM, v případě browseru WASM.

Re:Výroba multiplatformní aplikace s GUI v Javě
« Odpověď #13 kdy: 09. 04. 2021, 17:57:44 »
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...

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

Awesome JavaFX
A curated list of awesome JavaFX frameworks, libraries, books etc...