Môj prvý program v Jave

Publikoval Michal Kočí dňa 01.02.2006 o 22:25 v kategórii Ostatné

Nie že by som chcel alebo musel migrovať z .Net na Javu, ale okolnosti ma prinútili naprogramovať svoju prvú Javovú aplikáciu. Respektíve prvú a nultú, pretože pred prvou aplikáciou som si musel, jednoducho musel, naporgramovať aj Hello World. Pokladal som to za svoju povinnosť...

Začnem tým, prečo som vlastne potreboval napísať Java aplikáciu. Všimli sme si, že jedna Java aplikácia hostovaná v Internet Exploreri neúnosne zväčšuje jeho pamäťové nároky. Jedná sa o applet, ktorý zobrazuje dokumenty uložené vo FileNet-e. IE si po štarte ukusne približne 30 MB a po zobrazené zopár dokumentov narastie obsadenie pamäte približne na 70 - 100 MB. Jasné, 100 MB nie je až také hrozné na novších počítačoch, problém je, že máme snahu migrovať užívateľov na terminálový server. Ak by na ňom nastával tento jav a u 50 užívateľov by si IE odkusol po 100 MB pamäte, tak by to server nemusel rozchodiť. I keď s Javou nemám nič dočinenie, podozrenie padlo na Garbage Collector. Toto som chcel overiť a chcel som vynútiť GC ku kolekcii nepotrebných objektov. Že moja snaha k ničomu nakoniec neviedla je už asi zrejmé, že?

Prvým predpokladom k tomu, aby som mohol napísať nejakú Java aplikáciu bolo zohnať nejaký Java compiler. Bol som popravde milo prekvapený, že Sun dáva k voľnému stiahnutie kompiler a aj vývojové prostredie - NetBeans IDE + JDK 5.0. Veľkosť inštalačného balíka je približne 130 MB, inštaláciu na disku niečo okolo 300 MB.

Prostredie stiahnuté rýchlo, inštalácia až priveľmi jednoduchá. Inštalátor totiž nainštaluje všetko, užívateľ si môže akurát vybrať cielový adresár. Fajn, aj tak by som nevedel čo je čo a nainštaloval by som si pre istotu všetko.

Na rad prišiel Hello World. Jednoducho mi to prišlo ako celkom logický prvý krok v mojom oboznamovaní sa s Javou. Aj Hello World, aj moju ďaľšiu aplikáciu som zvlásol celkom rýchlo aj vďaka zbežnému preklikaniu sa cez Learning the Java Language, aj vďaka Google.

Hello world:

public class GCRunApp {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

Garbage Collector Run:

public class GCRunApp {
    public static void main(String[] args) {
        System.out.println("Trying to force garbage collect...");
        System.gc();
    }
}

Čo som teda od tohto programu očakával? Očakával som, že jeho spustením sa mi podarí GC prinútit prečistiť pamäť a čakal som, že pamäť používaná IE klesne. Keby sa tak ozaj stalo, tak by som vedel, že pamäť narastá kvoli GC a vedel by som, že sa u terminálov nebudeme mať čoho báť - že keď narastie celkovo spotrebovaná pamäť, Java sama vo vhodný okamžik spustí Garbage Collect. To že sa tak nestalo môže mať dva dôvody. Prvý dôvod, Garbage Collector nespustil prečistenie pamäte. Rovnako ako v .Net ani v Jave sa nedá GC vynútiť, iba o neho požiadať. To či reálne nastane je na samotnej Jave. Druhý dôvod, Garbage Collector sa spustil, ale problém so zvýšenou požiadavkou na pamäť nie je spôsobená nevyužívanými objektmi v pamäti.

Takže keď zhrniem dnešný môj pokus, tak záver je, že nikam neviedol. Pravú príčinu som pamäťového nárastu som sa nedozvedel, ale aspoň som si letom-svetom pozrel vývojové prostredie Javy...

Mohlo by ťa tiež zaujímať

Páčil sa ti príspevok?

Zdieľaj príspevok alebo si ho odlož na neskôr

Sleduj ma

Ak nechceš premeškať príspevky ako je tento, sleduj ma na Twitteri, alebo ak máš RSS čítačku, môžeš sledovať môj RSS kanál.

Komentáre

Jarda Jirava dňa 03.02.2006 o 14:10 - RE: Môj prvý program v Jave

Ahoj, nevím jak to má zařízené Java, ale v .NETu platí, že aplikace z jiné AppDomain nemůže svým voláním GC.Collect() ovlivnit "mojí" aplikaci. Ono by to bylo celkem nebezpečné, řekl bych. Když si vezmu takový "nebezpečný" prográmek, který by v cyklu nebo jen špatně volal GC.Collect() a tím ovlivnil i ostatní spuštěné .NET aplikace. Brr. Snad bude moje rada k něčemu platná.

Mifko dňa 05.02.2006 o 12:22 - RE: Môj prvý program v Jave

Jardo, to som netusil, ze mozem ovplyvnit iba GC na urovni aplikacnej domeny. Hm, to keby som vedel, tak s tou Javou ani nezacnem :) Inak, svata pravda, ze keby to niekto volal (a ze si viem predstavit kopec "programatorov" ako im to pride ako dobry napad), tak to potom radost najvacsia a kopec zabavy pre programatorov inych, tych "slusnych" aplikacii ;)

Pridať komentár

Máš niečo zaujímavé povedať k článku? Pridaj to k článku ako komentár. Spam, reklamu alebo inak nerelevantné komentáre okamžite mažem.

Pridanie komentára sa nepodarilo. Oprav si prosím chyby.