![]() Specializovaný týdeník o výpočetní technice o Internetu (CW 42/97) Programování v jazyce Java
David Štrupl
V prvním díle našeho seriálu jsme skončili u systému souborů javové aplikace, přičemž této problematice věnujeme nyní ještě několik vět, těsně navazujících na předešlé pojednání.
Pokud používáme integrované prostředí, není většinou potřeba proměnné prostředí nastavovat. Pokud je však nastavíme, je třeba dávat pozor při spouštění některých prohlížečů -- zadání těchto proměnných jim může způsobit problémy pro spouštění Java appletů, protože nenajdou své standardní knihovny. Při hledání class souborů může interpret Javy kromě adresářů prohledávat i soubory s příponou .jar (java archive). Tyto soubory obsahují adresáře a soubory podobně jako např. soubory s příponou zip nebo tar -- původně byl použit formát zip (Netscape 3.0), v dalších verzích byl vytvořen nový formát jar. Při spouštění samostatných aplikací je možné v proměnné CLASSPATH nebo pomocí volby -classpath předané přímo programu java zadat cestu do souboru formátu jar nebo zip. Podívejme se na příklad spuštění programu uloženého v jar souboru:
java -classpath .;c:\mujJar.jar Program
Pokud chceme, aby programy z archivu jar nebo zip získával prohlížeč, můžeme to stanovit pomocí dalšího parametru příkazu applet ve WWW stránce:
<applet code=HelloWorldApplet.class archive=muj.jar width=100 height=100> </applet>
Možnost použít jar soubory je nová od verze JDK 1.1 -- tuto volbu tedy podporuje až prohlížeč Netscape od verze 4.0. Součástí JDK je také program na vytváření jar archivů -- jmenuje se jar a jeho použití je trochu podobné unixovému programu tar. Chceme-li např. vytvořit archiv ze všech class souborů v aktuálním adresáři, použijeme příkaz:
jar cf myjarfile *.class
Použití archivů zrychluje nahrávání class souborů ze sítě a umožňuje pracovat s celým Java programem jako s jedním souborem.
Vlastní programování Seznamme se však konečně s vlastními základy programování v jazyce Java. Jeho syntaxe vychází z jazyků C a C++. Na rozdíl od těchto jazyků je však Java plně objektový jazyk, tj. převzal některé dobré (a pro programátora příjemné) vlastnosti i např. z jazyka Smalltalk.
Nejprve se podívejme, jak vypadají komentáře. V Javě existují tři druhy komentářů:
/* toto je obyčejný komentář */ První dva druhy komentářů jsou podobné jako v C++ -- jediný rozdíl je, že komentáře nelze vnořovat do sebe. Poslední druh komentáře slouží k automatickému generování dokumentace ze zdrojového kódu. Součástí vývojového prostředí je program javadoc, který ze vstupních souborů s příponou java vytvoří ve formátu HTML dokumentaci, v níž budou obsaženy poznámky z dokumentačních komentářů. Jazyk Java je silně typovaný jazyk, tj. každá proměnná a každý výraz má svůj typ. Základní typy byly z velké části převzaty z jazyka C. Pokud chceme deklarovat proměnnou nějakého typu, napíšeme jméno typu a za něj jméno deklarované proměnné:
/* celočíselné typy */
byte b; // 8bitové číslo se znaménkem Objekty Kromě uvedených základních typů můžeme ještě používat proměnné, ve kterých je uložen odkaz na objekt. Každý objekt má také svůj typ -- třídu. Slovo třída tedy používáme k označení typu objektu. Máme-li vytvořenu (deklarovánu) třídu, můžeme vytvářet jednotlivé objekty (instance) této třídy. Každý objekt má nějaké vlastnosti a metody (funkce), které s těmito vlastnostmi pracují. Co je vlastností nebo metodou kterého objektu, to je právě určeno v deklaraci třídy, ze které bude tento objekt vytvořen. Chceme-li například vytvářet objekty, ve kterých budou uloženy některé údaje o zákaznících, vytvoříme třídu Zákazník následující deklarací (viz obrázek Třídy a objekty):
class Zakaznik { int cislo; float dluh; void zaplatil(float kolik) { dluh = dluh - kolik; } }
Tento zápis deklaruje novou třídu zákazníků -- každý zákazník bude mít své číslo a dále mu bude přiřazen nějaký dluh. Pokud zákazník zaplatí, můžeme zavolat metodu zaplatil s parametrem kolik, která od jeho stávajícího dluhu odečte zadanou částku. Stejně jako u každé vlastnosti (proměnné), je i u každé metody před jejím jménem typ. Tento typ určuje typ návratové hodnoty, kterou tato metoda vrací jako výsledek své činnosti. Ukončení metody a návrat nějaké hodnoty zajišťuje použití speciálního příkazu return následovaného hodnotou, která má být vrácena:
int vratDeset() { Speciální klíčové slovo void říká, že daná metoda nevrací žádnou návratovou hodnotu. Pokud máme výše uvedou třídu Zákaznik, můžeme ji použít následujícím způsobem:
Zakaznik novak = new Zakaznik(); První řádek vytvoří nový objekt typu Zakaznik a uloží odkaz na tento objekt do proměnné novak. S odkazem na vytvořený objekt je dále možné pracovat tak, že používáme vlastnosti daného objektu, nebo voláme jeho metody. K vlastnostem nebo metodám vytvořeného objektu máme přístup pomocí tečkové notace se jménem proměnné, do které byl uložen odkaz na náš objekt. Nové objekty jsou tedy vytvářeny pomocí volání new, o jejich odstraňování se nemusíme starat. Je starostí systému, aby zjistil, odkdy už daný objekt není potřeba. V okamžiku, kdy je zjištěno, že objekt už není potřebný, je objekt automaticky odstraněn. To velice usnadňuje tvorbu zvláště větších programů -- explicitní dealokace paměti je mnohdy zdrojem nepříjemných chyb, což se stává např. při vývoji v C nebo C++.
| <<< | COMPUTERWORLD | IDG CZ homepage | |