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

5. Program v Jav∞

5.1. Struktura programu

Zdrojov² text programu se sklßdß z jednΘ nebo vφce t°φd (viz 11.2.) a rozhranφ (viz 11.6.), globßlnφ prom∞nnΘ v Jav∞ nejsou.

Ka╛dß ve°ejnß t°φda (viz 11.2.1.) musφ b²t ulo╛ena v samostatnΘm zdrojovΘm souboru, jeho╛ nßzev je shodn² s nßzvem tΘto t°φdy a obsahuje p°φponu .java. ObdobnΘ pravidlo platφ i pro ve°ejnß rozhranφ.

Na zaΦßtku ka╛dΘho souboru m∙╛e b²t je╣t∞ uvedena deklarace balφku (viz 12.2.) a/nebo import t°φd (viz 12.1.). Formßt zdrojovΘho souboru obecn∞ vypadß takto:


   [ import argument1; ]
   [ import argument2; ]
      .
      .
      .
   [ import argumentN; ]


   [ package jmΘnoBalφku ; ]


   [ interface Rozhranφ1 { /* t∞lo rozhranφ 1 */ } ]
   [ interface Rozhranφ2 { /* t∞lo rozhranφ 2 */ } ]
      .
      .
      .
   [ interface RozhranφN { /* t∞lo rozhranφ N */ } ]


   [ class T°φda1 { /* t∞lo t°φdy 1 */ } ]
   [ class T°φda2 { /* t∞lo t°φdy 2 */ } ]
      .
      .
      .
   [ class T°φdaN { /* t∞lo t°φdy N */ } ]


   [ public class Ve°ejnßT°φda { /* t∞lo ve°ejnΘ t°φdy */ }

      // nebo:

   [ public interface Ve°ejnΘRozhranφ { /* t∞lo ve°ejnΘho rozhranφ */ } ]

Priklad 5.1.
Program se sklßdß ze dvou ve°ejn²ch (public) t°φd A a B a neve°ejnΘ t°φdy X. Zdrojov² text bude proto rozd∞len do dvou soubor∙ A.java a B.java. Neve°ejnou t°φdu X je mo╛nΘ umφstit do jednoho ze soubor∙ (jako zde) a nebo do samostatnΘho, libovoln∞ pojmenovanΘho souboru (s p°φponou .java).

Soubor A.java obsahuje:

   import java.io.File;

   public class A {
      // t∞lo t°φdy A
   }

Soubor B.java obsahuje:

   class X {
      // t∞lo t°φdy X
   }

   public class B {
      // t∞lo t°φdy B
   }

5.2. P°eklad

V╣echny zdrojovΘ soubory .java musφ b²t ulo╛eny v jednom adresß°i, odkud bude proveden p°eklad. V²jimku tvo°φ t°φdy a rozhranφ umφst∞nΘ v balφcφch (viz kap. 12.), kterΘ jsou ve zvlß╣tnφch adresß°φch. Cestu k balφk∙m udßvß systΘmovß prom∞nnß CLASSPATH (viz p°φloha D.).

P°ekladaΦ javac "vyrobφ" z ka╛dΘho souboru .java jeden nebo n∞kolik soubor∙ pojmenovan²ch podle jednotliv²ch t°φd a rozhranφ (v n∞m obsa╛en²ch) s p°φponou .class. Ka╛d² p°elo╛en² soubor obsahuje jednu t°φdu nebo rozhranφ v bytovΘm k≤du.

Priklad 5.2.
Po p°elo╛enφ soubor∙ z p°edchozφho p°φkladu pomocφ:

   javac A.java
   javac B.java

nebo: javac *.java

zφskßme t°i soubory: A.class, B.class a X.class.

Pozn.: P°ekladaΦ javac p°i p°ekladu jednoho zdrojovΘho souboru p°elo╛φ i v╣echny, na kter²ch je tento soubor zßvisl² a ve kterΘ je╣t∞ nebyly p°elo╛eny. Podrobnosti viz D.2..

5.3. B∞h programu

Po spu╣t∞nφ programu se nejprve se nahraje specifikovanß t°φda (1) do pam∞ti a prob∞hne verifikace jejφho bytovΘho k≤du (provede se nap°φklad kontrola skok∙ a identifikaΦnφch hlaviΦek metod).

U aplikace potΘ JVM spustφ metodu main(), kterΘ p°edß pole argument∙ z p°φkazovΘ °ßdky. B∞h appletu °φdφ prohlφ╛eΦ, viz 17.1..

T°φdy, kterΘ program pou╛φvß, jsou nahrßvßny dynamicky podle pot°eby, nap°φklad a╛ v okam╛iku vytvß°enφ prvnφ instance (viz 11.1.1.); i u nich se provßdφ verifikace.

Program je ukonΦen, pokud:

  • je vykonßna metoda exit() t°φdy Runtime (2) nebo

  • v╣echna zb²vajφcφ vlßkna jsou dΘmoni (viz 16.6.) a navφc:

    • je ukonΦena metoda main() - u aplikace;

    • je zavolßna metoda stop() - u appletu.

Pozn.: Za b∞hu programu ka╛dou pou╛φvanou t°φdu reprezentujφ instance t°φdy java.lang.Class, kterß programßtorovi umo╛≥uje zji╣╗ovßnφ informacφ o t°φd∞ pomocφ metod getSuperClass(), isInterface() a dal╣φch. Od JDK 1.1 jsou dßle mo╛nosti introspekce roz╣φ°eny dφky t°φdßm a rozhranφm z balφku java.lang.reflect.


  • (1) Hlavnφ program je zapouzd°en ve ve°ejnΘ t°φd∞, jejφ╛ jmΘno zßrove≥ odpovφdß jmΘnu programu.
  • (2) Tato metoda se v╣ak obvykle v aplikacφch pohodln∞ji volß p°es System.exit().

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