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