Existuje vůbec funkční desktopová aplikace v Javě?

tdvorak

Re:Existuje vůbec vunkční desktopová aplikace napsaná v Javě?
« Odpověď #60 kdy: 30. 01. 2015, 10:27:16 »
Pole? Co to zase meles za blbosti, kdybych chtel pole, tak pouzivam pole, kdyz potrebuju dynamicky kontejner, tak pouzivam dynamicky kontejner. To je prece uplne jina situace. To jak bych rekl, ze tim krumpacem se do skaly blbe kope a tys mi rekl, proc pouzivam krumpac na hazeni hnoje, at pouziju vidle.

Takže záměrně používáš nevhodnou kolekci? Potřebuješ ukládat primitivní typy a zvolil sis kolekci, která drží objekty a provádí boxing? Pro většinu použití je boxing a kolekce v pořádku. Pokud ale řešíš každou ms a ukládáš velké množství primitivních datových typů, tak si vyber buď pole, nebo třeba Commons Primitives. Kde je problém? Z možností, které (mainstreamová) Java nabízí sis nevybral nejlíp. A pak nadáváš, že je celý jazyk pomalý.


jedna

Re:Existuje vůbec funkční desktopová aplikace v Javě?
« Odpověď #61 kdy: 30. 01. 2015, 10:32:02 »
toto je presne casto jadro pudla ked sa krici ze 'java je pomala'

jednoducho je rozdiel ci si urobim trojtlacidlovy hello world alebo ci idem robit databazovu aplikaciu kde su znalosti event dispatch nutne na pisanie responsivenej aplikacie. zial je vela vyvojarov ktori si myslia ze to netreba

Klasická databázová aplikace obvykle běží celá v jednom vlákně a nikomu to nikomu nevadilo, uživatel nemá problém si počkat na odpověď od databáze. Pomalost Javy je by design, ne kvůli nepoužití vláken, zrovna u GUI je to hodně vidět a je to neřešitelné.

Já na jedné desktopové aplikaci v Javě pracuju. Jako hlavní problém vidím to, že Java nestíhá držet krok s vývojem - podpora pro nové funkce ve Windows a Mac OS, jako jsou různé průhlednosti, HiDPI atd. je v Javě buď částečně dobastlená a nebo vůbec a pak se to musí řešit složitě nativně přes JNI. Přitom to jsou funkce, které jsou v OS už několik let.

Nestíhá se to proto že to musí běžet multiplatformně, multiplatformnost vždy znamená mnoho víc práce, než podporovat pouze jednu platformu, třeba Windows nebo MacOS.

perceptron

Re:Existuje vůbec funkční desktopová aplikace v Javě?
« Odpověď #62 kdy: 30. 01. 2015, 10:35:00 »
u nas ktosi pouzival gnu trove

Citace
podpora pro nové funkce ve Windows a Mac OS, jako jsou různé průhlednosti, HiDPI atd
to vyzera depresivne. aka je podpora v starych aplikaciach pre win32 alebo pre metro? a qt to ma ako? je mozne robit crossplatform aplikaciu ktora toto zvlada korektne?

Citace
Klasická databázová aplikace obvykle běží celá v jednom vlákně a nikomu to nikomu nevadilo, uživatel nemá problém si počkat na odpověď od databáze.
ked spustite jdbc v hlavnom vlakne tak vam gui vymrzne kym data z databazy nedojdu alebo mi nieco unika?

jedna

Re:Existuje vůbec funkční desktopová aplikace v Javě?
« Odpověď #63 kdy: 30. 01. 2015, 10:41:32 »
ked spustite jdbc v hlavnom vlakne tak vam gui vymrzne kym data z databazy nedojdu alebo mi nieco unika?

V některých aplikacích se tak děje (nevím jak to je realizováno), podstata je ta že zrovna tohle uživateli nevadí.

tdvorak

Re:Existuje vůbec funkční desktopová aplikace v Javě?
« Odpověď #64 kdy: 30. 01. 2015, 10:44:18 »
V některých aplikacích se tak děje (nevím jak to je realizováno), podstata je ta že zrovna tohle uživateli nevadí.
Realizováno je to tak, že programátor naprasí volání databáze do vlákna pro obsluhu GUI. Pokud uživateli nevadí ani tohle, tak už snese všechno.


Javista

Re:Existuje vůbec funkční desktopová aplikace v Javě?
« Odpověď #65 kdy: 30. 01. 2015, 10:45:22 »
u nas ktosi pouzival gnu trove

Citace
podpora pro nové funkce ve Windows a Mac OS, jako jsou různé průhlednosti, HiDPI atd
to vyzera depresivne. aka je podpora v starych aplikaciach pre win32 alebo pre metro? a qt to ma ako? je mozne robit crossplatform aplikaciu ktora toto zvlada korektne?

Bohužel je to celkem problematické. Aplikace je plná ifů pro různé platformy, volání nativních knihoven. Pro Mac OS dělá toolkit přímo Apple, ale současná verze je cca 5 let stará, takže nemá např. podporu pro notifikační centrum. Java pro desktop je mrtvá, jak říkal Linus Torvalds už před 17 lety... http://keithcu.com/wordpress/?page_id=2228

tdvorak

Re:Existuje vůbec funkční desktopová aplikace v Javě?
« Odpověď #66 kdy: 30. 01. 2015, 10:50:31 »
Java pro desktop je mrtvá, jak říkal Linus Torvalds už před 17 lety... http://keithcu.com/wordpress/?page_id=2228

> And once you’re dead on the desktop, my personal opinion is you’re dead. If servers are everything you have, just forget it.

Zajímavý je, že totéž se dá říct o linuxu obecně :-)

nula

Re:Existuje vůbec vunkční desktopová aplikace napsaná v Javě?
« Odpověď #67 kdy: 30. 01. 2015, 10:55:43 »
Pole? Co to zase meles za blbosti, kdybych chtel pole, tak pouzivam pole, kdyz potrebuju dynamicky kontejner, tak pouzivam dynamicky kontejner. To je prece uplne jina situace. To jak bych rekl, ze tim krumpacem se do skaly blbe kope a tys mi rekl, proc pouzivam krumpac na hazeni hnoje, at pouziju vidle.

Takže záměrně používáš nevhodnou kolekci? Potřebuješ ukládat primitivní typy a zvolil sis kolekci, která drží objekty a provádí boxing? Pro většinu použití je boxing a kolekce v pořádku. Pokud ale řešíš každou ms a ukládáš velké množství primitivních datových typů, tak si vyber buď pole, nebo třeba Commons Primitives. Kde je problém? Z možností, které (mainstreamová) Java nabízí sis nevybral nejlíp. A pak nadáváš, že je celý jazyk pomalý.

Hele, cti, nez zacnes psat. To je jak psat si tady s debilem.
Zaprve mi porad cpes nejake pole, misto dynamickeho kontejneru. Porad mi sem cpes vidle na hazeni hnoje, kdyz potrebuju vykopat diru do betonu.
Zadruhe jsem jasne rikal, ze bud zvolis dalsi specializovanych knihoven(stejne jako v jakemkoli jinem jazyce), ktere toto resi, nebo si pises vlastni. Tak nevim, pro mi to tady objevne opakujes.
Zatreti porad tady meles neco s ms, ms se muzou skladat klidne do hodin. To je argument jak noha. Ms pomalejsi v cem? To zalezi na algoritmu, kdyz bude secteno jedno cislo klidne o mikrosekundu pomaleji, ale ty jich potrebujes miliardu, tak ses stejne ctvrt hodiny v minusu.

Karel

Re:Existuje vůbec funkční desktopová aplikace v Javě?
« Odpověď #68 kdy: 30. 01. 2015, 10:56:25 »
Zkuste si někdy zahrát Runescape nebo Minecraft. Je to nejlepší důkaz toho, že Java jako taková není pomalá. Problémem jsou lidé, co s ní neumí. Přesto, jak nepříjemně ten jazyk vypadá, tak je bohužel dost přístupný. Píše v tom kdejaká trubka a podle toho to vypadá. Nejhorší jsou zkušení progamátoři z jiných jazyků, kteří se neobtěžují nastudovat si rozdíly. Svého času byli morem Javy lidé používající winapi. Jejich neschopnost pochopit, že Java gui je single-threaded, byla do očí bijící. Po stisku tlačítek to běžně "vytuhávalo". A když pak člověk kouknul do kódu, tak se občas musel smát - oni v single-threaded aplikaci kontrolovali, zda se něco nestalo. Prostě v metodě "actionPerformed" tahali data z databáze a pak se dotázali, zda je okno ještě otevřené. Jednou tam byl i komentář ve stylu "načtení trvá dlouho, ověř si, že uživatel během té doby dialog nezavřel". A pak spamovali fóra stížnostmi, že Java je pomalá a že je to špatný jazyk, protože mají na formuláři tlačítko "cancel", které má přerušit stahování dat, ale Java je tak pomalá, že i když ho mačkají jak diví, tak prostě nereaguje a nezavolá funkci dříve, než se všechno načte. Vysvětlovat jim, že je tam prostě jen jeden EventDispatchThread nemělo úspěch. Prostě pro ně "Java je tak pomalá, že ani nešlo kliknout na tlačítko".

Další mor jsou pak lidé nechápající metodu String. Psal mi onehdy člověk, co v Javě zkoušel psát mud. A stěžoval si, jak je to pomalé a nenažrané. Kód měl prolezlý "a + b" a každou sekundu to vytvářelo desetitisíce nových instancí a garbage collector byl z toho takový divoký. Naštěstí si nechal poradit a přepsal to na použití StringBuilder. Zlepšení obrovské.

A v neposlední řadě ještě lidé s přístupem "všechno musí být objekt". Buď ani neví, že Java má primitivní typy, pole apod., nebo se jim líbí nějaká vlastnost (hodně lidí láká třebas java.util.Vector) a pak se tomu přizpůsobí. Bez ohledu na cenu a důsledky. Místo pole double pak mají Vector s miliony instancí Double, Java padá na nedostatek paměti a oni si stěžují, že je to stokrát pomalejší než C. Jenže tenhle chuchvalec instancí porovnávají s C, kde použili pole. Zkrátka fakt, že Java má Vector, ještě neznamená, že na některé věci prostě není potřeba použít pole. To, že navíc použili Vector, což je serializovaná třída, je kapitola sama o sobě.

Stejně tak se dá prasit a špatně používat třebas C++. Jenže tam je použití šablon poměrně složité na naučení, takže lidé, co se neradi učí nové věci, přirozeně použijí jen základy - tedy primitivní typy a pole.

Karel

Re:Existuje vůbec funkční desktopová aplikace v Javě?
« Odpověď #69 kdy: 30. 01. 2015, 11:03:53 »
toto je presne casto jadro pudla ked sa krici ze 'java je pomala'

jednoducho je rozdiel ci si urobim trojtlacidlovy hello world alebo ci idem robit databazovu aplikaciu kde su znalosti event dispatch nutne na pisanie responsivenej aplikacie. zial je vela vyvojarov ktori si myslia ze to netreba

Klasická databázová aplikace obvykle běží celá v jednom vlákně a nikomu to nikomu nevadilo, uživatel nemá problém si počkat na odpověď od databáze. Pomalost Javy je by design, ne kvůli nepoužití vláken, zrovna u GUI je to hodně vidět a je to neřešitelné.

Klasické databázové GUI je příklad, kde rozhodně chcete více vláken, už kvůli tlačítkům "Cancel", "Stop", "Exit" apod. Protože pokud dojde k problémům (chybný dotaz, pomalá databáze, rozmyslel jsem si to), tak rozhodně nechcete dojít do stavu, kdy je potřeba program zabít přes task manager. Další běžný požadavek je ten, aby se co nejdříve zobrazily první záznamy a další se dotahovaly na pozadí nebo po scrolování dolů.

nula

Re:Existuje vůbec funkční desktopová aplikace v Javě?
« Odpověď #70 kdy: 30. 01. 2015, 11:04:43 »
u nas ktosi pouzival gnu trove

Citace
podpora pro nové funkce ve Windows a Mac OS, jako jsou různé průhlednosti, HiDPI atd
to vyzera depresivne. aka je podpora v starych aplikaciach pre win32 alebo pre metro? a qt to ma ako? je mozne robit crossplatform aplikaciu ktora toto zvlada korektne?

Bohužel je to celkem problematické. Aplikace je plná ifů pro různé platformy, volání nativních knihoven. Pro Mac OS dělá toolkit přímo Apple, ale současná verze je cca 5 let stará, takže nemá např. podporu pro notifikační centrum. Java pro desktop je mrtvá, jak říkal Linus Torvalds už před 17 lety... http://keithcu.com/wordpress/?page_id=2228

> And once you’re dead on the desktop, my personal opinion is you’re dead. If servers are everything you have, just forget it.

Zajímavý je, že totéž se dá říct o linuxu obecně :-)
Jo, tak to je presne :-) Ale je to samozjreme blbost, ani Linus neni pan buh.
Nerikam ze se neda udelat dobre desktopove aplikace, ale je jich malo, protoze psat dobre v Jave je komplikovanejsi, nez v c++.
Souhlasim s tim, co uz tu zaznelo JetBrainsi produkty (jako IntelliJ, PyCharm, PhpStorm) jsou perfektni - chtel bych videt, ekvivalent od nekoho jineho a to jsou v Jave. (Netbeans je taky v Jave a oproti IntelliJ je to jak trabant vs bmw.)

Karel

Re:Existuje vůbec funkční desktopová aplikace v Javě?
« Odpověď #71 kdy: 30. 01. 2015, 11:06:34 »
ked spustite jdbc v hlavnom vlakne tak vam gui vymrzne kym data z databazy nedojdu alebo mi nieco unika?

V některých aplikacích se tak děje (nevím jak to je realizováno), podstata je ta že zrovna tohle uživateli nevadí.

Co vím, tak ta bílá/černá obrazovka uživatelům docela vadí. Protože v tu chvíli neběží ani repaint.

Karel

Re:Existuje vůbec vunkční desktopová aplikace napsaná v Javě?
« Odpověď #72 kdy: 30. 01. 2015, 11:13:02 »
.... kdyz potrebuju vykopat diru do betonu.

Vy ale nepotřebujete kopat díru do betonu. Vy jste si vzal krumpáč, jako kdybyste chtěl kopat díru do betonu, ale začal jste s ním kopat tunel Blanka. A ještě pláčete, jak je ten krumpáč naprd. Jasně, že na kopání tunelů je naprd. Ono ani na ten beton to není žádná sláva. Zjevně se vám krumpáč líbí, on je to jednoduchý nástroj. Ale na ten tunel si raději pořiďte nějakou vrtnou soupravu. A i na ten beton bude lepší sbíječka, přestože se vám nebude chtít shánět kompresor.

tdvorak

Re:Existuje vůbec vunkční desktopová aplikace napsaná v Javě?
« Odpověď #73 kdy: 30. 01. 2015, 11:14:58 »
Hele, cti, nez zacnes psat. To je jak psat si tady s debilem.
Dochází argumenty, že je třeba urážet?
Zaprve mi porad cpes nejake pole, misto dynamickeho kontejneru. Porad mi sem cpes vidle na hazeni hnoje, kdyz potrebuju vykopat diru do betonu. Zadruhe jsem jasne rikal, ze bud zvolis dalsi specializovanych knihoven(stejne jako v jakemkoli jinem jazyce), ktere toto resi, nebo si pises vlastni. Tak nevim, pro mi to tady objevne opakujes.
Protože ty tu díru do betonu chceš kopat krumpáčem, přestože víš, že je to špatně. Víš, že existují lepší nástroje, víš přesně, proč je krumpáč nevhodný. A přesto na něm pořád trváš.

Zatreti porad tady meles neco s ms, ms se muzou skladat klidne do hodin. To je argument jak noha. Ms pomalejsi v cem? To zalezi na algoritmu, kdyz bude secteno jedno cislo klidne o mikrosekundu pomaleji, ale ty jich potrebujes miliardu, tak ses stejne ctvrt hodiny v minusu.
Ty milisekundy byly reakce na tebou specifikovaný případ:
A ted vazne, naalokuj si treba milion intu nekam do nakeho chytreho a rychleho kontejneru. Pokud nepouzivas specialni kontejnery tretich stran, nebo vlastni implementaci, ale pouzijes tady treba javovsky ArrayList, ktery potrebuje objekty a ne primitivni typy, tak ses vyrizenej.

atarist

Re:Existuje vůbec vunkční desktopová aplikace napsaná v Javě?
« Odpověď #74 kdy: 30. 01. 2015, 11:15:54 »
Hele, cti, nez zacnes psat. To je jak psat si tady s debilem.
Zaprve mi porad cpes nejake pole, misto dynamickeho kontejneru.

Jenze on ma pravdu - ty potrebujes dynamicky kontejner a zvolil sis ArrayList. Ok, takze predpokladame ze mas zjisteno (doufam, ze analyzou skutecneho chovani!), ze v Tve aplikaci se k prvkum pristupuje nahodne a mnohem mnohem casteji, nez se dela add, nebo nedejboze insert a remove. Pokud to tak neni, tak je ArrayList naprosto nevhodny, coz se pise jak v dokumentaci, tak je to krasne videt ze zdrojaku.

Ve chvili, kdy mas pozadavek na statisice/miliony hodnot primitivniho datoveho typu, tak proc se bojis poli? Proste si udelas vlastni alokacni algoritmus (klidne se inspiruj z ArrayListu, nemaji to marny) a je vyreseno. Pokud se naopak ta datova struktura bude casto menit, nepomuze ti ani ArrayLists, musis si vzit neco lepsiho.

Java ti tu moznost v kazdem pripade dava, ze to lidi prasi ruzne, je ovsem uplne jina vec.