COMPUTERWORLD
Specializovaný týdeník o výpočetní technice
o Internetu
(CW 40/97)

Programování v jazyce Java

David Štrupl

Vážení čtenáři,

vítám vás u seriálu, který se bude zabývat programováním v Javě. V jeho průběhu byste se měli seznámit s jeho hlavními principy. Seriál předpokládá jisté základní znalosti programování, nejlépe v jazycích C, C++ nebo Pascalu. Protože bude pojednávat zejména o programování v jazyce Java, je určen hlavně těm, kteří hledají stručný přehled všeho, co lze pomocí Javy vytvořit. Rozsah našeho seriálu nedovoluje příliš podrobné vysvětlování základních pojmů -- budeme se proto občas dovolávat na již existující znalost programování a mlčky předpokládáme znalost takových pojmů, jako jsou komentář, identifikátor, typ, rozsah platnosti apod.

Nicméně ani v případě, že jste zatím s programováním nepřišli příliš do styku, si nemusíte zoufat. Seriál bude doplňován kratšími články o praktickém použití Javy a JavaScriptu pro vylepšení vašich WWW stránek. Tato část se přitom nebude vázat na hlavní seriál a jeho každá část bude obsahovat relativně samostatnou kapitolku s praktickým návodem k použití.

Úvod a základní pojmy

Nejprve se samozřejmě seznámíme s tím, co vlastně Java je a kam si ji máme zařadit. Historie jazyka a prostředí začala na počátku 90. let, kdy James Gosling dostal ve firmě Sun za úkol vyvinout nový jazyk pro výrobky spotřební elektroniky. Původně se jeho projekt jmenoval Oak a neměl nic společného s Internetem. Kolem roku 1994 pak bylo rozhodnuto přenést jazyk z prostředí spotřební elektroniky do ostatních oblastí nasazení počítačů a zejména do Internetu. Jazyk byl přejmenován na dnešní jméno Java (horká káva) a po předvedení ve firmě Netscape bylo rozhodnuto zařadit Javu do prohlížeče Netscape Navigator verze 2.0. To se stalo skutečností v listopadu 1995 -- a od té doby se prostředí Javy stává stále populárnější nejen v oblasti prohlížečů, ale i jako samostatné prostředí pro spouštění aplikací. Firma Sun vyrábí počítače nazvané JavaStation, jejichž celý operační systém je založen na prostředí Javy.

Současně s uvedením Javy přidala firma Netscape do svého prohlížeče i další produkt (tentokrát z vlastní dílny) -- JavaScript. Přestože jazyky Java a JavaScript mají společnou část jména, jedná se o dvě různé technologie, které v prohlížeči spolupracují -- dnes už nejen v Netscape Navigatoru, ale i v některých dalších (např. MS Internet Explorer). JavaScript je přitom skriptovací jazyk, jejž je možné vkládat přímo do zdrojového textu HTML stránky. Příkazy JavaScriptu jsou interpretovány přímo prohlížečem. Pomocí JavaScriptu lze přitom oživit jinak statickou HTML stránku přidáním reakce na některé události.

Na rozdíl od JavaScriptu je zdrojový kód napsaný v jazyce Java nejprve přeložen do spustitelného mezikódu (bytecode) -- viz obrázek Cesta Java kódu.

Bytecode je možné spustit pomocí vhodného runtime prostředí, které se nazývá Java Virtual Machine. Toto prostředí může být součástí prohlížeče nebo je možné jej získat samostatně (např. jako tzv. Java Runtime Environment -- JRE) nebo jako součást vývojového prostředí (např. JDK -- Java Development Kit). Přeložený mezikód je možné na cílové platformě buď interpretovat, nebo je možné jej v rámci zavádění do systému ještě po částech přeložit do spustitelného formátu na cílový procesor -- druhá varianta spouštění se někdy nazývá Just In Time kompilátor (JIT).

Mezi hlavní výhody programů napsaných v jazyce Java patří jejich velká přenositelnost mezi jednotlivými operačními systémy a hardwarovými platformami. Jednou přeložený program lze pomocí příslušného JVM spustit prakticky na libovolném počítači (Sun, Windows 95/NT, HP-UX, Irix, Linux...).

Nejjednodušší a základní vývojové prostředí (JDK) je možné získat zdarma od firmy Sun. Nyní je aktuální verze JDK 1.1.

Prostředí JDK je složeno z několika samostatných programů, které se používají z konzole -- v prostředí Windows z MS-DOS promptu. Samozřejmě, že profesionální vývojová prostředí mají podobu, na kterou jsme zvyklí i u jiných jazyků -- jedná se o integrovaná vývojová prostředí (IDE). My si budeme většinu postupů ukazovat na JDK, protože toto prostředí je základní a všechna IDE musí mít vždy alespoň jeho funkce.

Dále popisované postupy se v každém jednotlivém prostředí vyvolají odlišným způsobem, ale bývá zvykem, že distribuce IDE obsahuje i řádkové nástroje z JDK. Profesionální vývojové prostředí pro vývoj v Javě je možné získat např. od firem Sun, Borland, Symantec, Sybase, IBM, Microsoft a některých dalších. Také je možné použít jedno z sharewarových rozšíření JDK, např. české Xelfi. A jakmile máme vývojové prostředí, můžeme se směle pustit do psaní programů.

První aplikace

Podívejme se, jak je možné napsat nejjednodušší aplikaci v jazyce Java. Chceme-li použít klasický příklad, napíšeme program, který pouze vypíše na standardní výstup (konzoli) slova "Hello World" -- nazdar světe.

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

Aplikace obsahuje pouze jedinou metodu main, jejíž deklarace je podobná definici main v jazyce C nebo C++. Uvnitř metody main jsme použili volání System.out.println(), což je fráze ekvivalentní příkazu printf v C -- provede výpis na standardní výstup. Takto jsme vytvořili konzolovou aplikaci, která po přeložení bude spuštěna z příkazové řádky.

Překlad ze souboru HelloWorld.java provedeme pomocí programu javac (ve Windows javac.exe): javac HelloWorld.java. Jako výsledek překladu vznikne soubor HelloWorld.class. Soubory s příponou class obsahují přeložený bytecode. Vlastní spuštění provedeme pomocí programu java (java.exe): java HelloWorld. Pokud se vše povedlo, provede program vypsání slov Hello World a skončí.

Takto vytvořenou aplikaci lze spustit pomocí programu java, ale nelze ji spustit pomocí prohlížeče. Pro spuštění v prohlížeči musíme vytvořit speciální druh javové aplikace: tzv. applet.

První applet

Applet je program napsaný v Javě, který obsahuje vazby umožňující prohlížeči nahrát jej jako součást WWW stránky a spustit na klientském počítači. Nejjednodušší applet, který si můžeme představit, bude opět varianta na téma Hello World:

import java.applet.*;
public class HelloWorldApplet extends Applet{
public void paint(java.awt.Graphics g) {
g.drawString("Hello world",50,50);
}
}

Applet není konzolová aplikace, což znamená, že poběží v prostředí prohlížeče. Aby prohlížeč věděl, kam má náš applet zobrazit, musíme jej vložit do HTML dokumentu pomocí následujících příkazů:

<applet code=HelloWorldApplet.class width=100 height=100>
</applet>

Applet přeložíme podobně jako samostatnou aplikaci pomocí překladače Javy -- dostaneme výsledný soubor HelloWorldApplet.class. Tento soubor umístíme do stejného adresáře, ve kterém máme naši HTML stránku. Pokud vše proběhlo bez problémů, uvidíme na své stránce HelloWorld.html vytvořený applet. Kdyby náš applet vypisoval něco na standardní výstup, můžeme to např. v Netscape Navigatoru vidět, pokud si otevřeme okno Java Console.

Pokud nechceme při testování programů používat WWW prohlížeč, máme k dispozici program appletviewer, který je součástí vývojového prostředí. Tento program umožňuje prohlížet applety vložené do HTML stránek -- spouštíme ho tedy s parametrem, který určuje jméno HTML souboru obsahující požadovaný applet. V integrovaných prostředích lze většinou applet spustit podobně jako samostatnou aplikaci -- je tedy třeba dávat pozor, když budeme chtít applet spustit mimo naše vývojové prostředí, abychom měli všechny soubory na příslušném místě (nejlépe ve stejném adresáři).

Applet na vlastní stránce

Chceme-li na vlastní stránce použít applet, který vytvořil někdo jiný, máme v zásadě dvě možnosti. První možností je, že autor zveřejní příslušný zdrojový kód. V tomto případě musíme, podobně jako v předchozím příkladu, applet nejprve přeložit a výsledné class soubory uložit do stejného adresáře jako je HTML stránka, ze které bude applet prohlížen.

Druhou (častější) možností je, že applety se distribuují v již přeložené formě. Potom je pouze potřeba umístit dodané class soubory na správné místo a vyrobit na ně odkaz v HTML dokumentu. V dokumentaci k appletu musí být řečeno, která třída se má použít na WWW stránce.

Některé applety mohou používat parametry předané z HTML. U každého parametru musí být zadáno jeho jméno a hodnota:

<applet code=HelloWorldApplet.class
width=100 height=100>
<param name="jmeno1" value="hodnota1">
<param name="jmeno2" value="hodnota2">
</applet>

Jména parametrů v povolené hodnoty musí být uvedeny v dokumentaci k appletu. Pokud nezadáme nějaký parametr, applet nám může vypsat chybu na Java consoli.

Systém souborů javové aplikace

Program, který napíšete, bude přeložen do souboru s příponou class. V každém takovém souboru je přeložen kód jedné třídy, ale typický program se neskládá z jedné třídy. Výsledek překladu ze souboru s příponou java může tedy být větší množství class souborů. Class soubory jsou organizovány do tzv. balíků (packages). Každý balík je uložen v jednom adresáři. Balíky mohou obsahovat další balíky, tj. vznikne hierarchická struktura balíků odpovídající adresářové struktuře, ve které budou uloženy class soubory.

Standardní knihovny dodávané jako součást prostředí jsou rovněž rozděleny na jednotlivé balíky. Adresář, ve kterém se mají hledat class soubory a případné další balíky (podadresáře), může být v prostředí určen proměnnou CLASSPATH. Tato proměnná může obsahovat více adresářů, ve kterých JVM bude hledat kód. Pokud není nastavená proměnná CLASSPATH, můžeme požadovaný adresář zadat jako parametr při spouštění programu java:

java -classpath c:\java\classes:. P.class

Pro oddělování jednotlivých položek v classpath se používá v prostředí Unixu znak : a v prostředí Windows znak ;. Pokud není uvedena ani jedna cesta k souborům ze standardních knihoven, prostředí se je pokusí najít v adresáři určeném proměnnou JAVA_HOME nebo podle místa, odkud bylo spuštěno. Jestliže požadované soubory nenajde, vypíše chybu.

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.

Internetové adresy, kde lze získat další informace o jazyce Java

http://java.sun.com
http://sunsite.ms.mff.cuni.cz/java
http://www.gamelan.com
http://www.jars.com/


| <<< | CW o Internetu | COMPUTERWORLD | IDG CZ homepage |