Jak se vyhnout frustraci s Java eventy?

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #45 kdy: 02. 02. 2016, 22:19:00 »
Nejsem Java guru, ale, pokud chceš odpověď jak na to, řeknu ti: nepoužívej Javu. Java má jednu ohromnou výhodu, běží všude a je plně zpětně kompatibilní. Dnešní programy v Javě poběží i za deset let na jakékoli super hyper funky procesorové architektuře která se zrovna rozhodne dobít svět. Na druhou stranu, chybné rozhodnutí před 15 lety ovlivňuje Javu doteď. Kuli bezpečnosti třeba nejde udělat override operátorů, nejsou pořádné jak ty říkáš eventy, a není toho asi mnohem víc, zas tak se ale o svět Javy nezajímám, takže nebudu víc kecat.

Běží všude ... stejně blbě. Sice může běžet na různých (budoucích) architekturách, ale třeba na ARM je výkon mizerný. Dobře škálovatelné je do budoucnosti Go. Čím dál víc firem láme nad Javou hůl.


Zelenac

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #46 kdy: 02. 02. 2016, 22:32:24 »
A přesto, řekni mi třeba, proč k java.util.Observable neexistuje generická varianta, nebo varianta tvá s tím delegátem?

K čemu konkrétně je to java.util.Observable, vysvětli mi ten jeho význam. Pokud to budu dědit, zamezím si tím dědění z jinačí třídy. Není k tomu ani IObservable, aby se to implementovalo přes delgáta, jak ty říkáš.

Observable je socket, ne ta třída, ve které ten socket je.

No to jsi trochu přestřelil, ne? Tady jsem našel, co observable je:
http://www.javaworld.com/article/2077258/learn-java/observer-and-observable.html

Pozůstatek z roku 1996, takže asi tak. To je hrozné.

Zelenac

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #47 kdy: 02. 02. 2016, 22:36:58 »
Java je frustrující. Kdybych byl programátor střižený s umělcem a měl stvárnit Javu, nakreslil bych starou almaru.


Lol Phirae

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #48 kdy: 02. 02. 2016, 22:46:03 »

Zelenac

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #49 kdy: 02. 02. 2016, 22:47:27 »


Sten

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #50 kdy: 02. 02. 2016, 23:10:34 »
Nejsem Java guru, ale, pokud chceš odpověď jak na to, řeknu ti: nepoužívej Javu. Java má jednu ohromnou výhodu, běží všude a je plně zpětně kompatibilní. Dnešní programy v Javě poběží i za deset let na jakékoli super hyper funky procesorové architektuře která se zrovna rozhodne dobít svět. Na druhou stranu, chybné rozhodnutí před 15 lety ovlivňuje Javu doteď. Kuli bezpečnosti třeba nejde udělat override operátorů, nejsou pořádné jak ty říkáš eventy, a není toho asi mnohem víc, zas tak se ale o svět Javy nezajímám, takže nebudu víc kecat.

Běží všude ... stejně blbě. Sice může běžet na různých (budoucích) architekturách, ale třeba na ARM je výkon mizerný. Dobře škálovatelné je do budoucnosti Go. Čím dál víc firem láme nad Javou hůl.

To je přinejmenším hodně zavádějící tvrzení. Výkonnostní problémy se týkají pouze OpenJDK, které neumí využít ThumbEE (nemá JIT) ani hard-float. Oracle Java je výrazně rychlejší.

No to jsi trochu přestřelil, ne? Tady jsem našel, co observable je:
http://www.javaworld.com/article/2077258/learn-java/observer-and-observable.html

Pozůstatek z roku 1996, takže asi tak. To je hrozné.

V signál-slotové architektuře je observable signál.

Qt včetně signálů a slotů je z roku 1991. Fakt hrůza.

Sten

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #51 kdy: 02. 02. 2016, 23:17:15 »
Mimochodem všiml sis toho sig4j, co jsem tu posílal? V Javě můžeš udělat úplně stejné božské objekty jako v Qt ;) (Ne že by bylo nutné v Qt dělat božské objekty. Ale když jeden objekt má 20 nezávislých událostí, že by musel mít tolik listenerů…)

koZel

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #52 kdy: 02. 02. 2016, 23:32:44 »
Mimochodem všiml sis toho sig4j, co jsem tu posílal? V Javě můžeš udělat úplně stejné božské objekty jako v Qt ;) (Ne že by bylo nutné v Qt dělat božské objekty. Ale když jeden objekt má 20 nezávislých událostí, že by musel mít tolik listenerů…)

Podle pravidla SOLID má každá objekt vykonávat jednotkovou činnos. Potom, mám-li objekt, který vyvovolává 20 událostí, dokaž mi, že nutně nevykonává jendotkovou činnost, ve smyslu tom, že propojuje objekty a tvoří k nim jednotné rozhraní. To taky může být považováno za jednotkový úkon.

Zelenac

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #53 kdy: 02. 02. 2016, 23:53:04 »
Jeste jednou ten Observer a Observable. Tato funkcionalita:

1.) Je obsažena přímo v knihovně, čili linkuje způsob, jak psát program, to je pozitivní věc.
2.) Musím z ní však dědit, neboť k ní není napsáno rozhraní. Leda bych ji dal při implementaci do třídy jako public, což není ok. To je negativní věc.
3.) Musím pracně zajistit přenos argumentů, tj. jak třeba v Object přenesu Socket, String a ještě třeba Integer? To si musím k tomu extra vytvářet novou třídu, teď tuto třídu musím nějak delegovat, a v update(Observable o, Object obj) to musím roztypovat, protože typů objektů budu chtít přenášet v rámci jednoho Observable víc. To je velice negativní.

Ad 3.) jaké poskutyje Javí knihovna instatní řešení k této situaci? Poskytuje vůbec nějaké?


zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #54 kdy: 03. 02. 2016, 00:44:03 »
Nejsem Java guru, ale, pokud chceš odpověď jak na to, řeknu ti: nepoužívej Javu. Java má jednu ohromnou výhodu, běží všude a je plně zpětně kompatibilní. Dnešní programy v Javě poběží i za deset let na jakékoli super hyper funky procesorové architektuře která se zrovna rozhodne dobít svět. Na druhou stranu, chybné rozhodnutí před 15 lety ovlivňuje Javu doteď. Kuli bezpečnosti třeba nejde udělat override operátorů, nejsou pořádné jak ty říkáš eventy, a není toho asi mnohem víc, zas tak se ale o svět Javy nezajímám, takže nebudu víc kecat.

Běží všude ... stejně blbě. Sice může běžet na různých (budoucích) architekturách, ale třeba na ARM je výkon mizerný. Dobře škálovatelné je do budoucnosti Go. Čím dál víc firem láme nad Javou hůl.

To je přinejmenším hodně zavádějící tvrzení. Výkonnostní problémy se týkají pouze OpenJDK, které neumí využít ThumbEE (nemá JIT) ani hard-float. Oracle Java je výrazně rychlejší.

Ano, je rychlejší, ale pořád to je bída, aspoň na 32-bitových procesorech, s 64-bitovými zkušenosti nemám.

Sten

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #55 kdy: 03. 02. 2016, 01:39:41 »
Podle pravidla SOLID má každá objekt vykonávat jednotkovou činnos. Potom, mám-li objekt, který vyvovolává 20 událostí, dokaž mi, že nutně nevykonává jendotkovou činnost, ve smyslu tom, že propojuje objekty a tvoří k nim jednotné rozhraní. To taky může být považováno za jednotkový úkon.

Máš nějaký příklad? Protože tohle hodně, hodně smrdí lasagnemi.

Ad 3.) jaké poskutyje Javí knihovna instatní řešení k této situaci? Poskytuje vůbec nějaké?

Typicky se to předává v tom Observable (jak to bylo vidět i v té ukázce, kterou jsi tady posílal). Ten objekt je spíš tag na rozlišení více událostí než hodnota a moc se nepoužívá (i když tedy ten interface nijak neurčuje, co tam má být, teoreticky to může být i hodnota).

Ano, je rychlejší, ale pořád to je bída, aspoň na 32-bitových procesorech, s 64-bitovými zkušenosti nemám.

Měřil jsi to někdy? (Psal jsi vůbec někdy něco v Javě?)

Android má naprostou většinu UI taky v Javě. Dokonce většina aplikací pro Android plynule poběží s 16 až 24 MiB haldy. Hodně štěstí s takovými limity v KDE ;)

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #56 kdy: 03. 02. 2016, 02:43:21 »

Ano, je rychlejší, ale pořád to je bída, aspoň na 32-bitových procesorech, s 64-bitovými zkušenosti nemám.

Měřil jsi to někdy? (Psal jsi vůbec někdy něco v Javě?)

Android má naprostou většinu UI taky v Javě. Dokonce většina aplikací pro Android plynule poběží s 16 až 24 MiB haldy. Hodně štěstí s takovými limity v KDE ;)
Kdybych to neměřil, tak o tom nepíšu. A bavíme se o Javě od Oraclu, ta v Androidu není. Jinak dost blbý argument vzhledem k tomu, jak Android furt laguje, ale to je momentálně off topic. Až někdo ukáže, že se Java na armv7 rychlostí aspoň blíží C++/Go/Swiftu, rád se na kód podívám. Jinak zůstanu u svých zkušeností (jinak se tu o tom už diskutovalo včetně kódu a testech na RPi2).

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #57 kdy: 03. 02. 2016, 06:58:00 »
Java je frustrující. Kdybych byl programátor střižený s umělcem a měl stvárnit Javu, nakreslil bych starou almaru.
Je pozoruhodné, jak tady opakovaně předvádíte, že v Javě vůbec programovat neumíte, a opakovaně z toho viníte Javu. Držte se radši toho Qt, tam není taková konkurence – sice nejste dobrý programátor, ale aspoň budete mít tu výhodu, že znáte Qt.

Ivan Nový

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #58 kdy: 03. 02. 2016, 07:22:13 »
Jeste jednou ten Observer a Observable. Tato funkcionalita:

1.) Je obsažena přímo v knihovně, čili linkuje způsob, jak psát program, to je pozitivní věc.
2.) Musím z ní však dědit, neboť k ní není napsáno rozhraní. Leda bych ji dal při implementaci do třídy jako public, což není ok. To je negativní věc.
3.) Musím pracně zajistit přenos argumentů, tj. jak třeba v Object přenesu Socket, String a ještě třeba Integer? To si musím k tomu extra vytvářet novou třídu, teď tuto třídu musím nějak delegovat, a v update(Observable o, Object obj) to musím roztypovat, protože typů objektů budu chtít přenášet v rámci jednoho Observable víc. To je velice negativní.

Ad 3.) jaké poskutyje Javí knihovna instatní řešení k této situaci? Poskytuje vůbec nějaké?

AD 3. To je výhoda Javy, nutí programátory psát programy slušně, a nutí je přemýšlet, nesklouzávat do rutiny, neumožňuje jim se vyžívat ve tvoření individuálního ornamentalního kódu (typicky C, Bash), brání jim psát efektivně, ale nesrozumitelně, vytvářet v kódu barokní kudrlinky, což je taky výhoda.

Zelenac

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #59 kdy: 03. 02. 2016, 10:42:49 »
Jeste jednou ten Observer a Observable. Tato funkcionalita:

1.) Je obsažena přímo v knihovně, čili linkuje způsob, jak psát program, to je pozitivní věc.
2.) Musím z ní však dědit, neboť k ní není napsáno rozhraní. Leda bych ji dal při implementaci do třídy jako public, což není ok. To je negativní věc.
3.) Musím pracně zajistit přenos argumentů, tj. jak třeba v Object přenesu Socket, String a ještě třeba Integer? To si musím k tomu extra vytvářet novou třídu, teď tuto třídu musím nějak delegovat, a v update(Observable o, Object obj) to musím roztypovat, protože typů objektů budu chtít přenášet v rámci jednoho Observable víc. To je velice negativní.

Ad 3.) jaké poskutyje Javí knihovna instatní řešení k této situaci? Poskytuje vůbec nějaké?

AD 3. To je výhoda Javy, nutí programátory psát programy slušně, a nutí je přemýšlet, nesklouzávat do rutiny, neumožňuje jim se vyžívat ve tvoření individuálního ornamentalního kódu (typicky C, Bash), brání jim psát efektivně, ale nesrozumitelně, vytvářet v kódu barokní kudrlinky, což je taky výhoda.

To si děláte vážně legraci, nutí programátory psát slušné programy? Kolik vám je let, dělal jste někdy něco v .NET? To byste totiž zažil, co to je, když platforma nutí, nebo spíše vede, k tomu psát slušné programy a dělat slušné knihovny, které uživatel může okamžitě začít používat.