Proč je Java pomalá a problémová?

Pavel Tisnovsky

Re:Proč je Java pomalá a problémová?
« Odpověď #30 kdy: 15. 12. 2013, 13:51:24 »
[kuka] ne, Java nepotrebuje ke svemu behu interpret, dokaze primo prekladat volbou -Xcomp, ale vetsinou je lepsi ponechat toto rozhodnuti na Hotspotu - zalezi na nastaveni provedene programatorem a administratorem (to za vas nikdo neudela, stejna jako v jinych programovacich jazycich ;). Jak uz tady nekolikrat zaznelo, velky promblem Javy je v tom, ze v ni prasi spousta takyprogramatoru a potom z toho vychazi pomale aplikace. Sice me prekvapuje zrovna problem s Eclipse, ja to hodne dlouho poustel na pocitaci 256 MB, ted upgrade na 512 MB a uplne bez problemu, ale samozrejme pokud tam nekdo naseka dalsich 20 pluginu, tak neco muze byt spatne (zakladni Eclipse JDT je vsak v poradku, vsak to denodenne pouzivaji desetitisice lidi, spis jeste vic).


andy

Re:Proč je Java pomalá a problémová?
« Odpověď #31 kdy: 15. 12. 2013, 13:59:29 »
No tak taketo cisla som nasiel a hovorim, ze som neveril :). Provozovat nic neplanujem, len som si tak rozsiroval obzory...
Inak AOT ma aj mono.

Re:Proč je Java pomalá a problémová?
« Odpověď #32 kdy: 15. 12. 2013, 14:57:54 »
Ono je to vůbec špatně položená otázka, abych citoval klasika. Co je to pomalá Java? Pomalý JVM, pomalý (špatně napsaný) program, pomalý komp?

Waseihou

Re:Proč je Java pomalá a problémová?
« Odpověď #33 kdy: 15. 12. 2013, 16:06:14 »

kuka

Re:Proč je Java pomalá a problémová?
« Odpověď #34 kdy: 15. 12. 2013, 18:24:07 »
ne, Java nepotrebuje ke svemu behu interpret, dokaze primo prekladat volbou -Xcomp

To je ovsem prave volba az toho interpretru - JVM kod interpretuje, zda ho v ramci toho prelozi a na co neni az tak podstatne, podstatne je, ze bez JVM se to neobejde.


Re:Proč je Java pomalá a problémová?
« Odpověď #35 kdy: 15. 12. 2013, 19:32:59 »
Vacsina programov v Jave je pomala pretoze su neoptimalizovane. Keby sa optimalizovali tak ako napr. Minecraft, tak by sa rovno mohli napisat v C/C++. Inak aj v Jave sa daju jednoducho vytvorit memory leaky, a nezabrani tomu ani GC.

Pavel Tisnovsky

Re:Proč je Java pomalá a problémová?
« Odpověď #36 kdy: 15. 12. 2013, 19:39:26 »
ne, Java nepotrebuje ke svemu behu interpret, dokaze primo prekladat volbou -Xcomp

To je ovsem prave volba az toho interpretru - JVM kod interpretuje, zda ho v ramci toho prelozi a na co neni az tak podstatne, podstatne je, ze bez JVM se to neobejde.

Prave ze ne :-) JVM nacita bajtkod a ihned ho v tomto pripade transformuje na nativni kod, v rezimu interpretace se vubec nenachazi, dokonce bych rekl, ze by se dal cely interpret z libjvm.so/jvm.dll vyhodit (ale to musim napred vyzkouset).

Ale myslim ze uz chapu jak to myslite: ze z Javovskeho programu nikdy neni samostatna binarka, ale .class/.jar zavisly na JVM zejo? Ano obecne je to tak, ono JVM toho dela o dost vic nez jen interpretaci/JITovani/transformaci bajtkodu, takze to uplne odriznout obecne nepujde. Na druhou stranu JE mozne prekladat .java primo do objektovych souboru (.o/.obj) a slinkovat to do spustitelne binarky, ale to plati jen pro subset vlastnosti JVM. Prikladem je gcj nebo predkompilace v Androidu (ovsem Hotspot na x86 je dneska uz tak daleko, ze zrovna tady vykon aplikaci asi nenazeneme :-)


Kolemjdoucí

Re:Proč je Java pomalá a problémová?
« Odpověď #37 kdy: 15. 12. 2013, 20:48:43 »
aj v Jave sa daju jednoducho vytvorit memory leaky, a nezabrani tomu ani GC.

To je pravda, ale zásadní výhoda Javy je že v paměti je pořádek - jsou tam jasně identifikované konkrétní objekty a reference mezi nimi, takže mohou existovat nástroje jako například Eclipse Memory Analyzer které umožní rychlou analýzu a opravu memory leaků, a to i v cizím kódu. V klasickém C je memory leak ve velkém projektu díky typickému chaosu v paměti často téměř neřešitelný.

42

  • **
  • 63
  • 42
    • Zobrazit profil
    • 42
Re:Proč je Java pomalá a problémová?
« Odpověď #38 kdy: 15. 12. 2013, 21:19:39 »
Pokud je Java pomalá, je špatně napsaný software, který nejspíš ani v Javě být neměl.
Znám na Javě mraky aplikací, který jedou jak po másle. Nemyslím aplikace na desktop, ale např. DMS Alfresco, na to že je to Java, je to dost rychlý.
42

Re:Proč je Java pomalá a problémová?
« Odpověď #39 kdy: 15. 12. 2013, 21:34:30 »
To je ovsem prave volba az toho interpretru - JVM kod interpretuje, zda ho v ramci toho prelozi a na co neni az tak podstatne, podstatne je, ze bez JVM se to neobejde.
Na platformě AMD64 (a dalších) vezme procesor výstup kompilátoru C a přeloží jej do vnitřní instrukční sady, kterou používá výkonná část procesoru. Bez toho překladu se to také neobejde. V různých emulátorech (třeba i JavaScriptových) můžete spouštět "nativní" kód pro jiné platformy, který je emulátorem interpretován. Budeme proto nazývat C interpretovaným jazykem? Existovaly i nějaké procesory, které uměly vykonávat přímo javovský bajtkód. Pořád ještě chcete jazyky rozdělovat na interpretované a nativní a dělat z toho nějaké závěry?

Martin

Re:Proč je Java pomalá a problémová?
« Odpověď #40 kdy: 15. 12. 2013, 21:36:07 »
Zajimalo by me, jak je to s tou prenositelnosti. Proc je teda ruzna verze java programu pro Linux, windouz, Mac? Proc to neni jeden program, ktery spustim kdekoliv? Dale existuje spousty java runtime - open java, Sun, IBM, Oracle, SAP... ruzne programy v java vyzaduji specificke runtime, na jinych nejedou. Take jsou vazany na konkretni knihovny v systemu. Takze z meho pohledu admina je to totalni chaos.

Pavel Tisnovsky

Re:Proč je Java pomalá a problémová?
« Odpověď #41 kdy: 15. 12. 2013, 21:39:50 »
Zajimalo by me, jak je to s tou prenositelnosti. Proc je teda ruzna verze java programu pro Linux, windouz, Mac? Proc to neni jeden program, ktery spustim kdekoliv? Dale existuje spousty java runtime - open java, Sun, IBM, Oracle, SAP... ruzne programy v java vyzaduji specificke runtime, na jinych nejedou. Take jsou vazany na konkretni knihovny v systemu. Takze z meho pohledu admina je to totalni chaos.

Pokud program vyuziva JNI (rozhrani pro nativni knihovny), tak jsou ruzne verze pochopitelne. Prikladem je Eclipse, kde je nutne pouzit nativni SWT, zbytek Eclipse je vsak multiplatformni. Pokud nejaky program vyzaduje specificky runtime (a neni to jen rozdil mezi dejme tomu Javou 6 a 7), tak je to vetsinou prasacky napsana aplikace. Napadaji me asi dva SW, jeden od *velmi velke firmy* na tri znaky, druhy od *taktez velke firmy* na dva znaky (no ta pomalu a uspesne zabiji sama sebe...), ale to neni vlastnost Javy, ale par prasatek...

xfasdf

Re:Proč je Java pomalá a problémová?
« Odpověď #42 kdy: 15. 12. 2013, 21:55:32 »
Zajimalo by me, jak je to s tou prenositelnosti. Proc je teda ruzna verze java programu pro Linux, windouz, Mac? Proc to neni jeden program, ktery spustim kdekoliv? Dale existuje spousty java runtime - open java, Sun, IBM, Oracle, SAP... ruzne programy v java vyzaduji specificke runtime, na jinych nejedou. Take jsou vazany na konkretni knihovny v systemu. Takze z meho pohledu admina je to totalni chaos.

Pokud program vyuziva JNI (rozhrani pro nativni knihovny), tak jsou ruzne verze pochopitelne. Prikladem je Eclipse, kde je nutne pouzit nativni SWT, zbytek Eclipse je vsak multiplatformni. Pokud nejaky program vyzaduje specificky runtime (a neni to jen rozdil mezi dejme tomu Javou 6 a 7), tak je to vetsinou prasacky napsana aplikace. Napadaji me asi dva SW, jeden od *velmi velke firmy* na tri znaky, druhy od *taktez velke firmy* na dva znaky (no ta pomalu a uspesne zabiji sama sebe...), ale to neni vlastnost Javy, ale par prasatek...


Myslite tu firmu, ktora umoznila vznik Eclipse?

Pavel Tisnovsky

Re:Proč je Java pomalá a problémová?
« Odpověď #43 kdy: 15. 12. 2013, 22:09:45 »
Zajimalo by me, jak je to s tou prenositelnosti. Proc je teda ruzna verze java programu pro Linux, windouz, Mac? Proc to neni jeden program, ktery spustim kdekoliv? Dale existuje spousty java runtime - open java, Sun, IBM, Oracle, SAP... ruzne programy v java vyzaduji specificke runtime, na jinych nejedou. Take jsou vazany na konkretni knihovny v systemu. Takze z meho pohledu admina je to totalni chaos.

Pokud program vyuziva JNI (rozhrani pro nativni knihovny), tak jsou ruzne verze pochopitelne. Prikladem je Eclipse, kde je nutne pouzit nativni SWT, zbytek Eclipse je vsak multiplatformni. Pokud nejaky program vyzaduje specificky runtime (a neni to jen rozdil mezi dejme tomu Javou 6 a 7), tak je to vetsinou prasacky napsana aplikace. Napadaji me asi dva SW, jeden od *velmi velke firmy* na tri znaky, druhy od *taktez velke firmy* na dva znaky (no ta pomalu a uspesne zabiji sama sebe...), ale to neni vlastnost Javy, ale par prasatek...


Myslite tu firmu, ktora umoznila vznik Eclipse?

Presne tu :-) To jsou ty paradoxy velkych korporaci - nektere divize vytvori neco opravdu prelomoveho, dalsi zase dokazou (nejenom) SW totalne zmrsit...

xfasdf

Re:Proč je Java pomalá a problémová?
« Odpověď #44 kdy: 15. 12. 2013, 22:39:19 »
Chápu, že interpretovaný jazyk bude vždy pomlejší. Ale subjektivně mi přišlo, že java, i když už je s námi velmi dlouho, je stále nejnefektivnější a nejproblémovější prostředí vůbec. Kdysi jsem v tom něco i programoval, ale vždycky to bylo takové divné. Jinak dělám C a ASM na železe, v poslední době C# na pc (ať už .net nebo mono). Poslední jmenovaný mě nadchnul, vzhledem k tomu že je v principu podobný javě, zdá se mi daleko lépe funkční a rychlejší.
I cizí "velké" java aplikace mi dělají problémy více, než jiné (jdownloader, eclipse, android) pády, záseky, lagy... všude se to chová stejně "divně". Zdá se i zvláštní, že tyhle problémy jsou i po letech existence. Je snad nějaký zásadní problém už v konstrukci jazyka? Do hloubky tomu nerozuním, ale rád bych se dozvěděl více.

Asi si este nehral http://www.bytonic.de/html/jake2.html, ze? Zahraj si original, Jake2 a potom subjektivne napis, ktory sa sprava divnejsie.

Keby si v tom nemal jasno, tak Quake2 je v C a Jake2 je v Jave.