Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: noname 29. 12. 2013, 01:18:14

Název: Jak nejlépe programovat GUI v Javě?
Přispěvatel: noname 29. 12. 2013, 01:18:14
Zdravím všechny.

Před nějakou dobou zde bylo založeno téma, ve kterém se autor dotazoval, proč jsou programy v Javě pomalé (což je bohužel také má zkušenost), ze kterého mimo jiné vyplynulo, že programování ve SWINGu je nevhodné. Jelikož jsem pokročilejší začátečník a chci se naučit programovat GUI (nejen) v Javě, potřebuji poradit, jak v ní programovat efektivně, jaké programovací techniky využít (práce s pamětí), a také co za knihovny vkládat místo pomalého SWINGu, aby programy ve zmíněném jazyce stály za to. Věřím, že se zde dozvím spoustu zajímavých informací a samozřejmě budu vděčný za každý příspěvek.

Děkuji Vám předem.
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: PANKapitanRUM 29. 12. 2013, 01:25:37
Java na desktopu je mrtvá, takže to je naprosto fuk.
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: Vojta 29. 12. 2013, 02:26:17
Nic moc lepšího než SWING veřejně dostupné není, co já vím. Třeba taková platforma Netbeans jede celá na SWINGu. InteliJ jako IDE takové je taky čistý SWING s vlastním LookAndFeel. Počíst si můžeš tady:
stackoverflow.com/questions/7358775/java-gui-frameworks-what-to-choose-swing-swt-awt-swingx-jgoodies-javafx (http://stackoverflow.com/questions/7358775/java-gui-frameworks-what-to-choose-swing-swt-awt-swingx-jgoodies-javafx)

Pokud musíš takhle ptát, tak začni se SWINGem, je široce podporovaný a léty ověřený, nauč se dělat GUI a pak můžeš přejít na něco jiného, co tu bude jako programátorovi víc vyhovovat.

Nevím co by si u GUI v Javě chtěl dělat se správou paměti. ;)
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: noname 29. 12. 2013, 03:08:21
Nic moc lepšího než SWING veřejně dostupné není, co já vím. Třeba taková platforma Netbeans jede celá na SWINGu. InteliJ jako IDE takové je taky čistý SWING s vlastním LookAndFeel. Počíst si můžeš tady:
stackoverflow.com/questions/7358775/java-gui-frameworks-what-to-choose-swing-swt-awt-swingx-jgoodies-javafx (http://stackoverflow.com/questions/7358775/java-gui-frameworks-what-to-choose-swing-swt-awt-swingx-jgoodies-javafx)

Pokud musíš takhle ptát, tak začni se SWINGem, je široce podporovaný a léty ověřený, nauč se dělat GUI a pak můžeš přejít na něco jiného, co tu bude jako programátorovi víc vyhovovat.

Nevím co by si u GUI v Javě chtěl dělat se správou paměti. ;)

Původně jsem chtěl položit otázku obecnějším způsobem, asi jsem se nevhodně vyjádřil. Jednak mě zajímá programování GUI, ale také programování obecně. To co chci je, abych programoval kvalitně v Javě a aby hotové aplikace byly rychlé a efektivní, protože vím, že toto je často jejich hlavní problém. V předchozí diskusi někteří diskutující např. naznačovali něco o nastavování haldy a byla tam zmíněna spousta jiných zajímavých myšlenek, ale obávám se, že jsem to v tom flamu dostatečně nepochytil a přestože na Javu jako programovací jazyk nemám úplně nejlepší názor, tak se chci především vyvarovat začátečnických chyb a kvalitněji se ji naučit, než ji budu jakkoliv hodnotit, protože mé znalosti v tomto ohledu považuji za nedostatečné. GUI jsem zmínil hlavně proto, že se jednalo o jednu ze záležitostí, které byly kritizovány pro svou pomalost (SWING) a někdo zde naznačoval, že existuje daleko lepší a rychlejší řešení. Tímto ale nechci zastínit další možnosti optimalizace, které očividně neznám, ale také je nutné mít o nich dostatečné povědomí.
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: Vladimír Drgoňa 29. 12. 2013, 08:24:38
Java na desktopu je mrtvá, takže to je naprosto fuk.
NetBeans používam denne, na mojom 6-ročnom notebooku nemám žiadne problémy s výkonom, hoci samozrejme na silnejšokm desktope šlape rýchlejšie. Teraz som bol pár dní mimo a vyskočilo na mňa plno updates. Až teraz som pochopil, že to je preto, lebo Java je na desktope mŕtva..
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: D4VID123 29. 12. 2013, 08:44:18
Co myslite tim ze je Java na desktopu mrtva? To uz se nasla nejaka lepsi alternativa, ktera pobezi na Win/Linux/Mac (treba C++/Qt5.2) ?
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: Tsukasa 29. 12. 2013, 09:15:46
Java na desktopu je mrtvá, takže to je naprosto fuk.

Minecraft neni desktopova aplikace?
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: omg 29. 12. 2013, 09:31:37
Věřím, že se zde dozvím spoustu zajímavých informací a samozřejmě budu vděčný za každý příspěvek.
desktop je skoro mrtvy, takze je potreba uvazovat o tom, ze gui bude bezet i na mobilni platforme a tam plati, ze 3D grafika odlehci procesoru a urychli aplikaci.
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: noef 29. 12. 2013, 09:35:06
Java na desktopu je mrtvá, takže to je naprosto fuk.

Neni i OpenOffice v Jave?
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: andy 29. 12. 2013, 09:52:52
Ale kto by sa paral s c++? Spominana alternativa ku swingu boli javafx a swt. SWT zaobaluje systemove GUI (http://en.wikipedia.org/wiki/Standard_Widget_Toolkit) a javafx je taky pokus oraclu zautocit na flash. Je to cele cacane, ale demo mi bezalo tak 5fps, tak neviem.
Moja skusenost so swingom je, ze je rychly a netreba to riesit. Skor si pozri ako sa da leakovat pamat cez listenery.

Otazne je, co myslis tym ze "stali za to"?

OpenOffice neni v jave ale v c++.
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: Pupi_1 29. 12. 2013, 09:58:58
NetBeans používam denne, na mojom 6-ročnom notebooku nemám žiadne problémy s výkonom, hoci samozrejme na silnejšokm desktope šlape rýchlejšie. Teraz som bol pár dní mimo a vyskočilo na mňa plno updates. Až teraz som pochopil, že to je preto, lebo Java je na desktope mŕtva..

no neviem ci je celkom pravda, ze netbeans slape celkom v pohode. Ja som pouzival Netbeans na ubuntu na skolsky projekt robeny v C++. Neslo o ziadny extra velky projekt. A poviem dost to sekalo a islo pomaly. :/

inac ak nieco na desktop tak jednoznacne .net(wpf, winforms) to nie su ziadne pofiderne frameworky. Mozno este c++ a mfc, ale to uz asi ide do uzadia. Jedno treba uznat, ze MS to s tymito vecami vie a da si zalezat.
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: Andrej 29. 12. 2013, 10:01:52
Java na desktopu je mrtvá, takže to je naprosto fuk.

Vzhľadom na to, že Java na desktope je mŕtva tak NetBeans je napísaný a stále aktívne vyvíjaný v Swingu, rovnako je na tom InteliJIdea, presne rovnako na tom je jedno z najrozšírenejších účtovnictiev (FlexiBee). A stovky ďaľších aplikácií - a to len a len kvôli tomu, že Java na Desktope je mŕtva. Alebo aby Java na Desktope chcípla je len zbožné prianie konkurentov pretože v súčastnosti neexistuje iné použiteľné riešenie ktoré by aspoň rozumne bežalo na všetkých hlavných platformách (Mac/Win/Lin) a množstve ďaľších kde je JVM podporovaná?

Za pár dní tu bude pekný flame...
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: Andrej 29. 12. 2013, 10:04:48
NetBeans používam denne, na mojom 6-ročnom notebooku nemám žiadne problémy s výkonom, hoci samozrejme na silnejšokm desktope šlape rýchlejšie. Teraz som bol pár dní mimo a vyskočilo na mňa plno updates. Až teraz som pochopil, že to je preto, lebo Java je na desktope mŕtva..

inac ak nieco na desktop tak jednoznacne .net(wpf, winforms) to nie su ziadne pofiderne frameworky. Mozno este c++ a mfc, ale to uz asi ide do uzadia. Jedno treba uznat, ze MS to s tymito vecami vie a da si zalezat.

A bude to bežať aj na Mac/Lin? Pretože naši zákazníci majú kancelárske mašiny na Lin, ich grafik má Mac a tiež by radi tú aplikáciu v .NET používali.
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: r23 29. 12. 2013, 10:09:02
C#, mono, Xamarin
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: Ondra Satai Nekola 29. 12. 2013, 10:11:13
Zakladni trik je nedelat ve Swingu nic, co by zablokovalo thread, ve kterem se ridi GUI (event dispatch thread).

Precti a aplikuj http://docs.oracle.com/javase/tutorial/uiswing/concurrency/ Tim mas za sebou 80% k uspechu.
Do tech 20% se ti casem prida nutnost nastavit GC, aby nedelal stop-the-world a dalsi drobnosti, ale to nejdulezitejsi je delat cokoli jen trochu delsiho ve vlastnim threadu (ne nutne rucne spoustenem, ruznych toolu, co ti v tom pomohou je v jave kopec, staci si jenom vybrat).
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: Ondra Satai Nekola 29. 12. 2013, 10:13:40
Jinak souhlasim s tim, ze Java je na desktopu obdobne mrtva jako Linux. Coz znamena, ze to neni a asi nikdy nebude mainstream, vyber programu a knihoven je mensi... ale pro vetsinu veci tam najdes celkem pohodlne reseni a pokud ti nevadi, ze nejdes s hlavnim proudem, tak to muze byt, v zavislosti na okolnostech, i celkem prijemne
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: DK 29. 12. 2013, 10:17:46
C#, mono, Xamarin

a ty memory leaky a narocnost, co vznika pouzitim te zhovadilosti jmenem mono, ti nevadi?
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: andy 29. 12. 2013, 10:20:38
No tak teraz som si skusil javafx, uz to sice ficalo v pohode (mam ale druhy pc), ale chvila klikania a 360M heap. A celkom nevidim zmysel dat tam cely webkit, potom mozem robit cele ui v html. Lenze to by tam nesmeli dat tak hnusne fonty. Swing to mal dobre, nechapem preco to dobabrali.
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: noef 29. 12. 2013, 10:59:12
OpenOffice neni v jave ale v c++.
Podival jsem se na to znova a mate castecne pravdu, Java je pouzita jen na urcite casti.
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: Vladimír Drgoňa 29. 12. 2013, 11:00:41
no neviem ci je celkom pravda, ze netbeans slape celkom v pohode. Ja som pouzival Netbeans na ubuntu na skolsky projekt robeny v C++. Neslo o ziadny extra velky projekt. A poviem dost to sekalo a islo pomaly. :/

Ubuntu nepoužívam, takže neviem posúdiť. Samozrejme NetBeans potrebuje veľa pamäti a svižný FS. Na notebooku mám Gentoo amd64, javu sedmičkovú od Oracle a NetBeans  vždy najnovší priamo zo stránky. Mne šlape bez problémov, akurát kompiláciu väčších projektov v Jave robím radšej na desktope. (pomalý procesor)

inac ak nieco na desktop tak jednoznacne .net(wpf, winforms) to nie su ziadne pofiderne frameworky. Mozno este c++ a mfc, ale to uz asi ide do uzadia. Jedno treba uznat, ze MS to s tymito vecami vie a da si zalezat.

Zhovedilosti od M$ mi na notebook nesmú. M$ pomerne slušne ukradol Javu a z toho urobil .net. Sám od tejto absurdity vo w8 upúšťa, takže nechápem, prečo v tom niečo nové vyvíjať. Okrem toho to pôjde jedine na windoze.(mono je paskvil)
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: Magic 29. 12. 2013, 11:29:36
Citace
Zhovedilosti od M$ mi na notebook nesmú. M$ pomerne slušne ukradol Javu a z toho urobil .net. Sám od tejto absurdity vo w8 upúšťa, takže nechápem, prečo v tom niečo nové vyvíjať. Okrem toho to pôjde jedine na windoze.(mono je paskvil)

Hodne nenavisti, malo informaci. Ze se MS pri navrhu .NET inspiroval Javou je myslim evidentni. Pred 10 rokama, kdyz byl .NET ve verzi 1.1, to byla oblibena narazka. V dnesni dobe dobe hodna uz jen zapskleho trolla na rootu. Dnes je .NET ve verzi 4.5 a moc dobre nechapu, jak muze vykradat Javu, kdyz v podstate vsechny featury od verze 2.0 dal byly nejdriv v C# a az potom v Jave. Plus, k nekterym featuram nema Java alternativu dodnes. Lambda vyrazy, LINQ, anonymi typy... Mozna jsou v Jave 8 - Javu tolik nesleduju ale nemeni to nic na tom, ze v C# byly driv. Ale chapu, je to MS takze to beztak obslehli z budoucnosti, hajzli.

Ze je Mono nekvalitni bych taky netvrdil. Jednak se bezne pouziva pro komercni aplikace a druhak o nem Google zcela vazne uvazoval jako o platforme pro beh aplikaci na Androidu. Rozhodl se tehdy sice pro Javu ale uz to, ze Mono bral jako alternativu IMHO neni spatny vykon.
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: jan.xxx 29. 12. 2013, 12:30:09
Zakladni trik je nedelat ve Swingu nic, co by zablokovalo thread, ve kterem se ridi GUI (event dispatch thread).

Precti a aplikuj http://docs.oracle.com/javase/tutorial/uiswing/concurrency/ Tim mas za sebou 80% k uspechu.
Do tech 20% se ti casem prida nutnost nastavit GC, aby nedelal stop-the-world a dalsi drobnosti, ale to nejdulezitejsi je delat cokoli jen trochu delsiho ve vlastnim threadu (ne nutne rucne spoustenem, ruznych toolu, co ti v tom pomohou je v jave kopec, staci si jenom vybrat).

Mohl bych poprosit na nasměrování na ty tooly?
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: DK 29. 12. 2013, 12:42:00
...
Ze je Mono nekvalitni bych taky netvrdil. Jednak se bezne pouziva pro komercni aplikace a druhak o nem Google zcela vazne uvazoval jako o platforme pro beh aplikaci na Androidu. Rozhodl se tehdy sice pro Javu ale uz to, ze Mono bral jako alternativu IMHO neni spatny vykon.

zdroj? pochybuju, ze by uvazovali o takove prasarne pro nasazeni milionum uzivatelu, kdyz to vyzaduje mnohem vice veci nez java a je to nestabilni
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: Kolemjdoucí 29. 12. 2013, 13:01:09
to nejdulezitejsi je delat cokoli jen trochu delsiho ve vlastnim threadu (ne nutne rucne spoustenem, ruznych toolu, co ti v tom pomohou je v jave kopec, staci si jenom vybrat).

Mohl bych poprosit na nasměrování na ty tooly?

mně se osvědčil http://docs.oracle.com/javase/6/docs/api/javax/swing/SwingWorker.html
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: eMko 29. 12. 2013, 13:48:04
noname:

Koukám, že mnoho lidí tu radí Swing, což je celkem slušná knihovna, bohužel ale desktop technologie se posouvají trochu dále, což se o Swingu říci nedá. Zkus nahlédnout i na JavaFX (verze 2). Aplikace v něm napsané nejsou výrazně náročnější než u Swingu a lépe umožňuje oddělit uživatelské rozhraní od kódu aplikace (má např. i nativní podporu pro databinding).

JavaFX v. 1 byl hodně neúspěšný pokus Sunu udělat "něco jako WPF na .Netu" a dopadlo to dost tragicky. Současná verze už je celkem použitelná, bohužel na mnoho novinek se čeká až s vydáním Java 8.

Jinak s tím, že cokoliv delšího než cca 250ms, co se v aplikaci děje, se má dít ve vlákně na pozadí, platí samozřejmě obecně. Podíváš-li se např. na framework Griffon (je sice pro groovy, ale využívá Swing/JavaFX), tam již jsou připravená řešení právě pro tyto příklady a nemusíš se s tím drbat sám.
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: Pupi_1 29. 12. 2013, 13:55:23
Zhovedilosti od M$ mi na notebook nesmú. M$ pomerne slušne ukradol Javu a z toho urobil .net. Sám od tejto absurdity vo w8 upúšťa, takže nechápem, prečo v tom niečo nové vyvíjať. Okrem toho to pôjde jedine na windoze.(mono je paskvil)

isto MS neupusti od .netu, kedze uz je framework 4.5, a bude sa vyvijat dalej. S monom nemam skusenost, ale nalejme si cisteho vina: co je na tom, ze to pobezi len na windowse? kolko uzivatelov vyuziva linux, aby bolo potrebne robit cross-platform aplikacie? Mozno pre servery. Radsej mat aplikaciu, ktoru vyuzije niekolko nasobne viac uzivatelov, ako u linuxu a bude to poriadna aplikacia
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: noef 29. 12. 2013, 14:58:30
isto MS neupusti od .netu, kedze uz je framework 4.5, a bude sa vyvijat dalej.
Podle nekterych zprav, co jsem cetl, ve Win8 MS od .NETu ustupuje (ale moc to nesleduju). Pochybuji, ze by MS opustil .NET uplne, ale je mozne, ze proste zamysli dostat .NET na servery a o desktop jim nejde - tento thread je ale prave o desktopu (a o GUI; opravdu neresim, ze MS serverove produkty maji GUI, ikdyz je to naprosto zbytecne).

S monom nemam skusenost, ale nalejme si cisteho vina: co je na tom, ze to pobezi len na windowse? kolko uzivatelov vyuziva linux, aby bolo potrebne robit cross-platform aplikacie? Mozno pre servery. Radsej mat aplikaciu, ktoru vyuzije niekolko nasobne viac uzivatelov, ako u linuxu a bude to poriadna aplikacia
Prestoze jazyk i platforma se mi velice zamlouvala (C# na .NETu), presel jsem na Javu a Scalu. Jeden z duvodu byl prave ten, ze chci vyvijet aplikace, ktere jsou multiplatformni. Zaroven nechci prispivat k udrzovani aktualniho stavu na desktopech, kdy skoro vsichni maji doma (upiratene/vnucene pri koupi) Winy jen kvuli aplikacim (hram), nikoliv kvuli kvalitam OS samotneho.
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: eMko 29. 12. 2013, 15:00:21
Zhovedilosti od M$ mi na notebook nesmú. M$ pomerne slušne ukradol Javu a z toho urobil .net. Sám od tejto absurdity vo w8 upúšťa, takže nechápem, prečo v tom niečo nové vyvíjať. Okrem toho to pôjde jedine na windoze.(mono je paskvil)

To, že .Net je ukradený paskvil, se dalo říct ve verzi 1.0 nebo 1.1. V dnešní době, tedy době 4.0 a 4.5 je situace přece jen jiná. A co se týče Windows 8 ... ty mají .Net Framework 4.5 předinstalovaný a mnoho systémových věcí je na něm závislých. Není pravda, že by se od něj upouštělo.

Možná máš na mysli Windows RT, tedy runtime pro tu zhulenost místo nabídky Start. Tam je technické řešení trochu jiné právě kvůli tomu, že ARMové tablety a telefony mají nižší výkon.
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: carminered 29. 12. 2013, 16:13:36
Proc se trapit s Javou, kdyz lze pohodlne a rychle udelat GUI aplikaci v Pythonu nebo Ruby nad Qt nebo Gtk(resp. wxWidgets) ? Rychlost zrovna u GUI nebude problem, navic jsou to jen bindingy kdy vetsi cast kodu stejne pobezi z knihoven zkompilovanych z C/C++.
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: Juro 29. 12. 2013, 17:02:19
Proc se trapit s Javou, kdyz lze pohodlne a rychle udelat GUI aplikaci v Pythonu nebo Ruby nad Qt nebo Gtk(resp. wxWidgets) ? Rychlost zrovna u GUI nebude problem, navic jsou to jen bindingy kdy vetsi cast kodu stejne pobezi z knihoven zkompilovanych z C/C++.
Napr. Preto, lebo ked si dam inzerat na Java programatora, mam do tyzdna N pohovorov. Ked si dam inzerat na pythonistu, mam N/100, co hravo prevysi akykolvek (teoreticky) benefit.
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: eMko 29. 12. 2013, 17:03:10
Z mnoha důvodů.

Je to overhead navíc, další "část" aplikace, kterou je třeba testovat, aktualizovat, udržovat, instalovat, podporovat ... v momentě, kdy počet externích částí jde do desítek, už to přestává být p*del. Navíc komunikace mezi pythonem a programem nad JVM není až tak snadné a přidává to další komplexitu (kdyby původní tazatel neměl program napsaný v Javě, asi by k němu nechtěl Javové GUI, toť můj předpoklad) a zpomalení. To, že mnoho opensource vývojářů podporu programu odbude s tím, že podporují pouze nejnovější verze knihoven, které jsou v balíčkách jeho oblíbené distribuce, bohužel nelze použít v komerční praxi.

Kromě toho Python nebo Ruby mají taky svoje mouchy (největší asi GIL - Global Interpreter Lock, což efektivně znemožňuje jakoukoliv normální práci s vlákny). Samozřejmě se jim lze vyhnout, ale pak jsme tam, kde jsme byli na začátku.

Binding na externí knihovny je supr věc, ale je to věc celkem komplexní a je velmi náročné to udělat dobře. Máš proti sobě 2 světy, které Tě drtí jako mlýnské kameny - výsledkem bude v dobrém případě kompromis, v horším prasečina. Udržovat je také není sranda, protože musíš reagovat na změny v obou prostředích. Za svůj život už jsem viděl velkou spoustu nekompletních nebo nadále neudržovaných bindingů, které není sranda použít na jiném projektu, než je použil původní autor (a upřímně, taky jsem takových pár vytvořil "protože rozpočet projektu") - prostě příliš mnoho, abych věřil projektům typu "část je bindnutá, část nefunguje, část nebude, tady je tutorial, podívejte se do dokumentace k původnímu projektu" (toto je konkrétně python binding na WxWidgets).

A na závěr duševního průjmu: vytvářet GUI v Javě není větší trápení než v Pythonu nebo Ruby. Kdyby to opravdu byl propastný rozdíl, jak se tu často s oblibou prezentuje, Javu by používal málokdo. Pohled na složení pracovních nabídek ale hovoří jinak.

Klidně používej Python nebo Ruby nad Qt nebo Gtk(resp. wxWidgets), pokud to na Tvém projektu funguje jak má. Ale toto řešení není samospasitelné a přestože třeba pro malé projekty funguje, pro větší nikoliv.
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: Pupi_1 29. 12. 2013, 17:23:00
Proc se trapit s Javou, kdyz lze pohodlne a rychle udelat GUI aplikaci v Pythonu nebo Ruby nad Qt nebo Gtk(resp. wxWidgets) ? Rychlost zrovna u GUI nebude problem, navic jsou to jen bindingy kdy vetsi cast kodu stejne pobezi z knihoven zkompilovanych z C/C++.

Qt? To je tiez celkom "peklo". Pracoval som s C++ a Qt. A teda nebol som z toho nadseny. Taketo externe kniznice, ktore su potrebne na GUI, narobia niekedy viac skody ako osohu. V skole som sa s tym stretol prvy a verim aj posledny krat. Chcel som pracovat s tym pod Windows, nakoniec som to nespojazdnil a presiel na linux. Kamarat robil BP, kde vyuzival Qt a tiez s tym mal problemy. Nehovoriac o tom, ze ked niekto vyvija projekt a potom na servery kde to ma bezat, zvysia verziu, tak to nejde prelozit. Ako vazne super cele Qt :)
Ked si to zoberiem zo strany bezproblemovosti, tak pri zinstalovani Visual Studia, .Net frameworku, tak mi ostane ovela viacej povodnych vlasov, ako pri nastavovani nejakych extra kniznic, kde viac zosediviem
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: Lol Phirae 29. 12. 2013, 17:25:47
Stručně: Nejlépe nijak!  ::)
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: Franta <xkucf03/> 29. 12. 2013, 17:55:42
Před nějakou dobou zde bylo založeno téma, ve kterém se autor dotazoval, proč jsou programy v Javě pomalé (což je bohužel také má zkušenost), ze kterého mimo jiné vyplynulo, že programování ve SWINGu je nevhodné.

Obecně psát GUI aplikace ve Swingu není problém, je to ověřená a použitelná technologie. Ono dost záleží, kdo je cílová skupina té aplikace a koho se ptáš. Když se zeptáš diskutérů na Rootu nebo na Ábíčku, tak ti asi řeknou „fuj Java“ – protože to moc nezapadá do jejich desktopového prostředí (KDE/Gnome), vypadá to jinak a odezva je o trošku horší (i když stále použitelná) než u nativních toolkitů (Qt/GTK). Toto je asi nejnáročnější a nejkritičtější cílová skupina. Otázka je, jestli píšeš tu aplikaci pro ně. Podobně kdybych psal nějakou frikulínskou konzumní aplikaci pro applisty, tak bych volil nativní toolkit (i když v Mac OSu ta Java vypadá hodně nativně, podobně ve Widlích).

Přiznám se, že i já, když si můžu vybrat desktopovou aplikaci (třeba prohlížeč obrázků, správce souborů nebo e-mailového klienta) tak radši volím nativní (KDE/Qt), která zapadne do mého desktopu.

A něco jiného je, když budeš psát aplikaci do podnikového prostředí – tam jsou jiné priority, nejde o to, jestli ikonky a styl posuvníků/tlačítek přesně respektuje desktopové prostředí, taky je jedno, jestli ta aplikace startuje 100 ms nebo 10 vteřin – ráno ji pracovník pustí a do večera tam bouchá nějaké formuláře. Odezva je důležitá, ale pokud nebrzdí práci, opět se nějaké milisekundy neřeší. Naopak problém je, kdyby ti to na půl dne spadlo a ty lidi neměli co dělat, nebo kdybys jim ztratil data. Klíčová je funkcionalita, stabilita a rychlost, jakou jsi schopný implementovat nové požadavky – a v těchto směrech má Java (včetně GUI) hodně co nabídnout.

Co se týče spotřeby paměti, nejvíc mi tu žere Firefox, kde žádná Java není – a naopak javovké aplikace jako Netbeans IDE nebo jEdit mají menší nároky a jejich spotřeba je konstantní i když mi tu běží týdny v kuse. Nedávno se mi nějak zaplnila paměť, tak jsem koukal do htopu, která aplikace může – a byl to jeden prográmek v Pythonu, který jsem zapomněl běžet v pozadí na jedné ploše – byl odpojený, nikdo na něj neklikal, neměl teoreticky nic dělat… a během pár dnů sežral přes 4 GB paměti. A to nebyl nějaký odkudsi stažený bastl nebo alfa-verze, ale program nainstalovaný z distribučních balíčků. Podobně neočekávané pády aplikací – ty potkávám mnohem častěji u aplikací psaných v Pythonu než u aplikací v Javě. Částečně je to o kultuře programátorů a částečně hraje Javě do karet silné/statické typování a kontrolované výjimky, které musíš odchytávat (jinak ti to zařve už při kompilaci).

Shrnutí:
 - pro firemní aplikace pro práci: klidně Javu/Swing
 - pro náročné desktopové uživatele GNU/Linuxu: C/C++ a Qt/GTK na straně klienta (Java může být na serveru/backendu)
 - pro spotřebitele – konzumní aplikace: hlavně asi webové rozhraní a mobilní (Android) + opět Java na serveru
 - pro nějaké utilitky, které přinášejí klíčovou funkcionalitu, ale potřebuješ je jednou za čas (tzn. nebudou ti strašit na KDE/Gnome desktopu dlouho): klidně Javu/Swing
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: eMko 29. 12. 2013, 18:23:45
Proc se trapit s Javou, kdyz lze pohodlne a rychle udelat GUI aplikaci v Pythonu nebo Ruby nad Qt nebo Gtk(resp. wxWidgets) ? Rychlost zrovna u GUI nebude problem, navic jsou to jen bindingy kdy vetsi cast kodu stejne pobezi z knihoven zkompilovanych z C/C++.

Qt? To je tiez celkom "peklo". Pracoval som s C++ a Qt. A teda nebol som z toho nadseny. Taketo externe kniznice, ktore su potrebne na GUI, narobia niekedy viac skody ako osohu. V skole som sa s tym stretol prvy a verim aj posledny krat. Chcel som pracovat s tym pod Windows, nakoniec som to nespojazdnil a presiel na linux. Kamarat robil BP, kde vyuzival Qt a tiez s tym mal problemy. Nehovoriac o tom, ze ked niekto vyvija projekt a potom na servery kde to ma bezat, zvysia verziu, tak to nejde prelozit. Ako vazne super cele Qt :)
Ked si to zoberiem zo strany bezproblemovosti, tak pri zinstalovani Visual Studia, .Net frameworku, tak mi ostane ovela viacej povodnych vlasov, ako pri nastavovani nejakych extra kniznic, kde viac zosediviem

Kdy to bylo, když ses s nimi naposledy setkal? Zrovna Qt udělalo celkem slušný krok dopředu a už, i pod Windows, je to naprostá brnkačka - stáhnout, nainstalovat, spustit QtCreator (celkem povedené vývojové prostředí pro vytvoření GUI; prostě tool, který dělá jednu věc, ale dobře). Nicméně souhlasím, že poslední Visual Studio+ReSharper je přece jen jinde.
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: Pupi_1 30. 12. 2013, 00:16:57
asi tak 3 roky dozadu myslim.
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: eMko 30. 12. 2013, 12:03:22
Od té doby to šlo hodně dopředu :-) .
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: Nobody 30. 12. 2013, 13:44:50
Kromě toho Python nebo Ruby mají taky svoje mouchy (největší asi GIL - Global Interpreter Lock, což efektivně znemožňuje jakoukoliv normální práci s vlákny).

Neni jenom Python nebo Ruby, napr. Tcl nema global interpeter lock.

Napr. Preto, lebo ked si dam inzerat na Java programatora, mam do tyzdna N pohovorov. Ked si dam inzerat na pythonistu, mam N/100, co hravo prevysi akykolvek (teoreticky) benefit.

A proc si nedas inzerat na GUI programatora?
Název: Re:Jak nejlépe programovat GUI v Javě?
Přispěvatel: noname 30. 12. 2013, 14:21:59
Díky všem za odpovědi, bylo poučné si to přečíst. Např. jsem neznal Java FX2 a došlo mi, že bych měl výrazně více zapracovat na programování ve vláknech  :D,  ostatní příspěvky byly také užitečné, někdy navzdory jejich stručnosti. Rovněž bych chtěl vyzdvihnout podrobné a pečlivě sepsané odpovědi, např. od "Franta <xkucf03/>", které mi pomohly získat mimo jiné lepší celkový přehled. Co se týče odpovědi na andyho otázku, tak tím že aplikace mají stát za to mám na mysli fakt, že to co napíšu, poběží rychle, bez problémů a nikdo si na ně nebude stěžovat, jak bývá u složitějších aplikací v Javě zvykem. Takže ještě jednou děkuji a těším se na Vaše další doporučení.