Proč je Java špatná na server?

Re:Proč je Java špatná na server?
« Odpověď #45 kdy: 24. 11. 2013, 09:20:28 »
Zkusim to dnes jeste s hutnejsi aplikaci z pohledu velikosti classpath, tam ocekavam realny "brutalni" narust.


Re:Proč je Java špatná na server?
« Odpověď #46 kdy: 24. 11. 2013, 09:47:34 »
Ta Java SE Embedded je zajímavá, věděl jsem, že existuje pro ARM platformy, ale nenapadlo mne, že je i pro x86. Ale koukám, že pro amd64 není... Jinak myslím, že je to novinka, v době Javy 6 nic takového nebylo.

K tomu porovnání by ještě bylo dobré porovnat třeba -client a -server mód.

Bůhví, jak ta implementace unixových utilit v Javě vypadá, předpokládám, že se tam používají streamy nebo dokonce převod na text a žádné NIO.

andrej

Re:Proč je Java špatná na server?
« Odpověď #47 kdy: 24. 11. 2013, 19:52:07 »
No zavisi..napr. mna zarazilo, ze eclipse prehlada vsetky subory projektu o dost rychlejsie ako totalcommander v c++ (neviem o tom, ze by som mal index..v tom pripade by to snad bolo ihned).

Ohladom otazky - aku by malo vyhodu? Navyse GC jazyky su dost nepriatelske voci tradicnemu modelu virtualnej pamate. Ono je to skor optimalizovane na to, ze sa to rozboptna na nejakom vyhradenom serveri a tam si to zije. Predstav si, ze ti tam bezi nejaky demon ktory raz za hodinu nieco spravi a zabera si 100M pamate a kedze GC bezi dost casto (inak by ti dosiel dost rychlo heap), tak sa ten proces neda ani odswapovat.

Inkvizitor

Re:Proč je Java špatná na server?
« Odpověď #48 kdy: 24. 11. 2013, 20:15:35 »
C třeba proto, že

1. Protože C je v ekosystému Linuxu doma
2. Protože ty programy v C byly napsané v době, kdy Java neexistovala, nešla použít vůbec nebo byla z jiných důvodů nevhodná
3. Protože spousta lidí (v této oblasti zvlášť) Javu nemusí

Python třeba proto, že

1. Na napsání Hello world stačí jeden řádek (zjednodušeně řečeno)
2. Má přímo v základu prakticky všechno potřebné pro systémové programování (a co nemá, dá se snadno dohonit třeba pomocí ctypes)
3. Má příčetnou práci s celými čísly (nepotřebuje několik různých typů a nemusí pro ty rozsáhlejší obcházet nedostatek návrhu pro obskurními metodami)

Takže Javu pro nové rozsáhlé systémy klidně, ale pro rychlé vyřešení administrativních úkolů moc smyslu nedává. Pro programy v rozsahu v řádu max. (deseti)tisíců řádků má oproti "skriptovacím" jazykům typu Perl, Python či Ruby prakticky samé nevýhody.

zzxzxzx

Re:Proč je Java špatná na server?
« Odpověď #49 kdy: 24. 11. 2013, 23:33:39 »
co mate furt s tou pamatou? preco by to malo zrat 100 mega? ved si to nastavim, kolko to ma zrat maximalne a dovi dopo.

A aj ked by to malo zrat 100 mega, a co? ved mam server (nemam ho, ale to len pre priklad) ktory ma 8 giga ramky, nastavim si ze nejaky demon nech zaberie maximalne nejakych 100 mega. Kde je akoze problem?

Zoberme si ten JBoss AS / Wildfly, jeho defaultne nastavenie ohladom pamati je:

Kód: [Vybrat]
-server -XX:+UseCompressedOops -XX:+TieredCompilation -Xms64m -Xmx512m -XX:MaxPermSize=256m

Co znamena ze

Xms - nastartuje to server so 64 mega a maximalne to moze zrat 512 mega. Podotykam ze toto je "tovarenske" nastavenie.

nastavim to na

Kód: [Vybrat]
-Xms32m -Xmx128m -XX:MaxPermSize=64m

Spustim to a ide to, ziadny problem. Bude to zrat max 128 mega. to je tiez stale take strasne? Na Java EE aplikacny server so vsetkymi ficurami?

Ja nehovorim, ze to bude zvladat nejaku extra zataz. Nie, nebude. Lenze ja ani nepotrebujem, aby to nejaku extra zataz zvladalo. Schvalne som skusil este to nove nastavenie osekat na polovicu:

Kód: [Vybrat]
-Xms16m -Xmx64m -XX:MaxPermSize=32m

pozriem do jvisualvm, drzi sa to celkom v pohode, cuduj sa svete, stale to ide. vypol som subsystemy, ktore nebolo treba, len aby to zralo "menej". Je to len pre osobne potreby, nejaky demon si tam moze bublat kolko chce ...

Inak,

skusal som dnes Weld kontajner skrz weld-se s Java SE takym sposobom, ze som si spravil simple maven projekt s weld-se ako dependency a spravil som si uplne trivialnu hello world aplikaciu. Zabalil som to do jedneho jarka s maven-assembly-plugin so vsetkymi dependecies (tzv. uber jar) a zozralo to neuveritelne tri mega. To asi neprezijem.

Taktiez som skusal, kolko bude trvat, kym to spustim ako command zo shellu. Startuje sa cely CDI container pri kazdom spusteni jaru takze to trvalo nejake 3-4 sekundy. Zobral som na to ten nailgun co sa tu spominal vyssie. Nastartoval som ten nailgun server, spustil som cez nailgun klienta main triedu toho jarka, start trval (tj. start CDI kontajneru + vykonanie hello world) ... a teraz sa podrzme ... 0.3 sekundy!  nula cela tri sekundy. To je pomale?

Mam za to dependency injection podla JSR-299 v konzolovych aplikaciach

Citace
When executing Weld in the SE environment the following features of Weld are available:

POJOs (no EJBs)
Typesafe Dependency Injection
Application and Dependent Contexts
Qualifiers
Stereotypes
Typesafe Event Model

potom tam mam sa mi zda este interceptory a dekoratory, taktiez na to mozem pouzit JPA, to sa mi zda tiez funguje standalone, ale nebudem tam moc pouzivat transakcie, to fakt ozeliem ...

Vsetko to je len zalezitost nastavenia a konfiguracie, ja v tom nevidim ziadny problem fakt ...

Absolutne nic nebrani tomu pouzivat javu na servery aj v konzolovych aplikaciach. Aj ked by sa nepouzil Weld, stale to je nailgun a ine DI frameworky ako Guice a podobne ...


andrej

Re:Proč je Java špatná na server?
« Odpověď #50 kdy: 25. 11. 2013, 09:08:08 »
Ja ti to nevyhovaram, len ti pisem preco by som nerobil taketo utility v jave. Navyse ty na to hladis, ze mas 8G pre seba, ale dnes sa to prerozdeli medzi virtualky, najlepsie ani bajt navyse... Sice hw je lacny, ale zjavne si este nemal docinenia s managmentom..

Re:Proč je Java špatná na server?
« Odpověď #51 kdy: 25. 11. 2013, 10:56:38 »
no, ja si zkusim ve virtualu ten Jnode schvalne a zkusim load java aplikaci v nem.

Re:Proč je Java špatná na server?
« Odpověď #52 kdy: 25. 11. 2013, 12:05:32 »
Argument, že je paměti hodně používají hlavně lidé kteří neřeší nic zásadního. Je to stejný případ, kdy mi známý říkal (proč řešíš kolik virtuální stroj zabírá - vždyť máme terabajtový disky). Dokud se mu to nezhroutilo! Pak jsem slyšel jen mumlání o tom, jak dlouho bude trvat těch pár terabajtů dostat z jednoho místa (ze zálohy) na druhé.
Pokud chci provozovat celý ekosystém služeb, rozhodně není jedno kolik paměti která zabírá. Optimalizací se dá dostat se jednou službou na pár MB RAM a nebo neoptimalizovanou na pár GB RAM a on je to obrovský rozdíl.
„Řemeslo se naučí každý. Umění nikdo.“
„Jednoduchost je nejvyšší úroveň sofistikovanosti.“
- Leonardo Da Vinci

J.

Re:preco je java na serveri zla?
« Odpověď #53 kdy: 25. 11. 2013, 14:38:11 »
Ja si viem prestavit Javu aj ako nedemonovu aplikaciu. Viem si celkom dobre predstavit pouzitie napr. CDI v Jave SE (napr. ako Weld container). Jednoducho, pouzitim Javy sa mi otvaraju take moznosti v oblasti administracie a konfiguracie ktore v Cecku alebo v skriptoch velmi tazko zrealizujem. Dokazem pouzit ako som uz spomenul CDI=, JPA napriklad, to sa tiez da pouzit v Java SE.

CDI v Java SE sa da pouzivat uz pomaly desat rokov (Spring) ....