Dione
Z. KotalaP. Toman: Java
Predchozi (Obsah) Dalsi

4. První šálek aneb Začínáme

Nejlepší způsob, jak se seznámit s programovacím jazykem, je vyzkoušet si ho. Pro tento účel je vhodný volně dostupný balík vývojových programů Java Development Kit (JDK), který obsahuje všechny potřebné vývojové prostředky (překladač, interpret atd.).

JDK je k dispozici pro velké množství operačních systémů. Některé distribuce (např. pro Windows 95) je možno stáhnout z [WWW12], na další jsou zde odkazy (např. pro Linux [WWW7]).

4.1. Instalace JDK

Vše, co je třeba udělat po stažení JDK z Internetu, spočívá pouze v rozbalení souborů do zvoleného adresáře a nastavení cesty ke spustitelným souborům (všechny jsou v podadresáři bin).

Distribuce pro jednotlivé operační systémy se příliš neliší. Verze pro Windows 95 je bezproblémová, u starších verzí OS Linux je případně nutno provést upgrade některých systémových knihoven.

Kromě nejnovější verze JDK doporučujeme stáhnout si i originální dokumentaci (samozřejmě v angličtině), zejména referenční popis Java Core API [JDK97].

4.1.1. Verze JDK

V době vzniku sborníku byla aktuální verze JDK 1.1.3. Jednotlivé číslice ve značení mají tento význam:

  • první - major version, bude udávat větší změny,

  • druhá - minor version, indikuje změny ve specifikaci jazyka a/nebo API,

  • třetí - bugfix version - číslo verze s opravami chyb (mění se často a v dokumentaci se někdy neuvádí).

Znamená to tedy, že např. JDK 1.1.1 a JDK 1.1.2 se liší pouze opravenými chybami v novější verzi, kdežto JDK 1.0.2 a JDK 1.1.2 se liší i změnami v jazyce a API. Jednotlivé verze by měly být zdola kompatibilní, ale není to zaručeno.

Pozn.: Některé starší internetové prohlížeče (Netscape Navigator 4.01, Microsoft Internet Explorer 3.02) podporovaly pouze verzi JDK 1.0. Applety využívající vlastnosti JDK1.1 lze provozovat v Netscape Navigatoru 4.06 a vyšším nebo Microsoft Internet Exploreru od verze 4.01. (1)

Pozn.: V JDK 1.1 došlo oproti k několika změnám v API a některé třídy a metody byly označeny jako deprecated (viz příloha D.6.) a nemusí být v dalších verzích JDK podporovány. Neměly by se nadále používat, není-li nutné zachovat kompatibilitu se starší verzí.

4.2. Aplikace versus applet

Ještě než se pustíme do programování, se stručně podíváme na rozdíly mezi aplikacemi a applety, což jsou dvě základní skupiny, na které se dělí programy v Javě.

  • Applet - je program určený pro umístění na WWW server, kde je pomocí speciální značky včleněn do HTML dokumentu tvořícího WWW stránku (2) . Při návštěvě této stránky Java-kompatibilním prohlížečem se applet automaticky nahraje do klientského počítače, kde se spustí. Applety bývají většinou kratší, aby se příliš neprodlužovala doba nahrávání WWW stránky přes síť.

    Z důvodu bezpečnosti platí pro applety některá omezení. Applet například nemůže zapisovat do souborů na straně klienta (prohlížeče) či spouštět programy na straně klienta (podrobněji viz kap. 17.).

  • Aplikace - je samostatný program, který ovšem vyžaduje pro svůj běh Java Platformu (viz 3.2.), nikoliv prohlížeč jako applet. Na aplikaci obecně nejsou kladena bezpečnostní omezení (může zapisovat do souboru apod.).

Pozn.: Uvedené rozdíly nepatrně stírá fakt, že lze napsat program, který se může chovat jako aplikace i jako applet (viz příklad A.1.). Je-li program spuštěn prohlížečem, pak pro něj samozřejmě platí omezení jako na každý applet.

4.2.1. Příklad aplikace

Následující aplikace je jen o málo složitější než oblíbený program "Hello World" a ohromí tím, že vypíše na standardní výstup svoje parametry.

Priklad 4.1.
public class Parametry {                                        // (1)
   public static void main(String[] args) {                     // (2)

      if (args.length != 0)                                     // (3)
         for (int i=0; i<args.length; i++)                      // (4)
            System.out.println("Parametr["+i+"] = "+args[i]);   // (5)
      else                                                      // (6)
         System.out.println("Nebyly zadany zadne parametry.");  // (7)

   }
}

  • Zápis programu:

    Struktura aplikace musí vypadat tak, že hlavní část (která program zahajuje) je uzavřena ve veřejné třídě (3) (public class), jejíž jméno (Parametry) je zároveň jménem programu (1).

    V této třídě musí aplikace povinně obsahovat metodu (obdoba funkce) main() (2). Metoda main() pak obsahuje jednotlivé příkazy. Složené závorky uzavírají blok (podobně jako BEGIN - END v Pascalu).

    Dvojice zpětných lomítek uvozuje komentáře do konce řádky.

  • Popis činnosti:

    Po spuštění programu se zavolá metoda main() (2), které se předá pole (args) parametrů příkazové řádky.

    Je-li délka pole args nenulová (3), vypíší se v cyklu for (4) postupně všechny parametry. Výpis na standardní výstup provádí knihovní metoda System.out.println() (5). Pokud nebyly zadány žádné parametry, skončí program ve větvi else (6) výpisem na řádku (7).

    Všimněte si, že lze spojovat řetězce operátorem "+" - parametr metody (5).

  • Překlad:

    Po uložení zdrojového textu do souboru s názvem Parametry.java se aplikace přeloží z příkazové řádky:

       javac Parametry.java
    

    Výsledkem bude soubor Parametry.class obsahující bytový kód.

  • Spuštění aplikace:

    Přeložený program se spustí z příkazové řádky interpretem:

       java Parametry Prvni program v Jave!
    

    Výsledkem bude výpis textu na standardním výstupu (obrazovce):

    Parametr[0] = Prvni
    Parametr[1] = program
    Parametr[2] = v
    Parametr[3] = Jave!
    

4.2.2. Příklad appletu

Následující applet načte a zobrazí obrázek ve formátu GIF nebo JPEG zadaný jako parametr.

Priklad 4.2.
import java.applet.Applet;                           // (i)
import java.awt.*;                                   // (ii)

public class Obrazek extends Applet {                // (1)
   Image obrazek = null;                             // (2)

   public void init() {                              // (3)
      obrazek = getImage(getCodeBase(),              // (4)
                         getParameter("obrazek"));   // (5)
   }

   public void paint(Graphics g) {                   // (6)
      if (obrazek != null)
         g.drawImage(obrazek, 0, 0, this);           // (7)
   }
}

  • Zápis programu:

    Podobně jako u aplikace (viz příklad 4.2.1.) je hlavní část programu uzavřena ve veřejné třídě (Obrazek) - část extends Applet v hlavičce (1) značí, že se jedná o applet. (4)

    Applet má odlišnou strukturu než aplikace (5) - obsahuje metody init() (3), kde se provádí inicializace, a paint() (6), která se volá při překreslování. (6)

    Applet dále obsahuje deklaraci členské proměnné obrazek (2).

    Řádky (i, ii) pouze informují překladač, aby provedl import vyjmenovaných tříd - to umožňuje používat zkrácená jména, např. java.applet.Applet (i) lze v programu psát jako Applet (1).

  • Popis činnosti:

    Po spuštění applet zjistí jméno souboru obrázku, který má načíst. Jméno se zadává jako parametr v HTML souboru (7) (viz dále) - k načtení parametru slouží metoda getParameter() (5). Následně se obrázek načte metodou getImage() a uloží do proměnné obrazek (4).

    Metoda paint() (6) při překreslování appletu obrázek zobrazí metodou drawImage() (7).

  • Překlad: Po uložení zdrojového textu do souboru Obrazek.java se aplikace přeloží z příkazové řádky:

       javac Obrazek.java
    

    Výsledkem bude soubor Obrazek.class obsahující bytový kód.

  • Spuštění appletu:

    Před spuštěním je nutné vytvořit HTML dokument a umístit do něj odkaz na applet. Pro tento příklad lze použít následující výpis, který uložte do souboru Obrazek.html.

    
       <APPLET
          CODE = Obrazek.class
          HEIGHT = 100
          WIDTH = 100
       >
    
       <PARAM
          NAME = obrazek
          VALUE = jménoSouboru
       >
    
       Váš prohlížeč nespouští Java applety.
    
       </APPLET>
    

    HTML: První část udává odkaz na kód appletu, výšku (HEIGHT) a šířku WIDTH výřezu, kam bude applet zobrazovat. Appletu se předá hodnota VALUE parametru obrazek - jménoSouboru je třeba nahradit konkrétním jménem souboru s obrázkem ve formátu GIF nebo JPEG (obrázek musí být umístěn ve stejném adresáři jako přeložený applet).

    Následně je applet možné spustit:

    • otevřením dokumentu Obrazek.html Java-kompatibilním prohlížečem,

    • programem appletviewer, který je součástí JDK:
         appletviewer Obrazek.html
      


  • (1) Přesněji řečeno MSIE 4.0 ze sady JDK1.1 neimplementuje pouze podporu RMI, pro kterou je třeba nejprve nainstalovat záplatu (patch).
  • (2) HTML dokument je textový soubor obsahující speciální sekvence (značky) pro formátování textu, vkládání obrázků, appletů apod. Popis HTML formátu lze nalézt například na [WWW5] nebo [WWW18].
  • (3) Třída a některé další zde použité pojmy budou podrobně vysvětleny v následujících kapitolách.
  • (4) Deklarace udává, že třída Obrazek je potomkem třídy java.applet.Applet.
  • (5) Pokud program dodrží struktury obou, lze jej používat jako applet i aplikaci.
  • (6) Metod, které může applet definovat, je více - viz kap. 17..
  • (7) Applet nemůže získávat parametry z příkazové řádky jako aplikace.

Predchozi
Converted by Selathco v0.9 on 25.09.1999 19:46
Dalsi