Pokud jste sledovali Java 101, víte, že Jacob Weintraub vytvořil vynikající sérii článků, jejichž cílem je pomoci začátečníkům z Javy stát se vývojáři Java. Protože však Jacob již nemůže v tomto sloupci pokračovat, JavaWorld předal mi pochodeň.
Rychle zjistíte, že moje cesta k tomu, abych se stal vývojářem Java, jde jinou cestou. Například raději mluvím o programovacích aspektech Javy, které nejsou objektově orientované (jako jsou typy, proměnné, operátory, výrazy a příkazy), než se ponořím do jeho objektově orientované stránky. Věřím, že tento přístup posílí Java 101Přirozený tok z jednoho tématu do druhého - tok, který se plynule pohybuje od začátku do konce. Abych usnadnil diskusi, občas představím pokročilý koncept, než ho plně vysvětlím. Ve výsledku se při procházení tímto a budoucími články setkáte s krátkým vysvětlením o pokročilejších tématech.
Java 101 představí mnoho ukázkových programů. Každý program je kompilován s kompilátorem Sun Java 2 Platform, Standard Edition verze 1.4 (také známý jako SDK 1.4) a testován na platformě Windows 98 SE. I když se pokusím omezit odkazy na Windows na minimum, nebude to vždy možné, takže vás varuji, když se článek dostane do světa Windows.
Protože jsem nestrávil mnoho času řešením Javy z pohledu serveru, tento sloupec se zaměří na Javu na straně klienta. To neznamená, že nebudeme zkoumat témata, jako je Remote Method Invocation a JDBC, která propojují klientské a serverové strany. Nebudu však prezentovat servlety, Enterprise JavaBeans, Java Server Pages a další témata na straně serveru. Chcete-li získat lepší představu o předmětech, kterým se budu věnovat, podívejte se na postranní panel The Road Ahead Java 101 osnova kurzu.
V tomto měsíčním článku pojednávám o struktuře aplikačních, appletových a hybridních programů. Z pohledu aplikace můžete najít určité překrývání z Jacobových dřívějších článků, ale představím také spoustu nového obsahu.
Programové kategorie
Java vám dává možnost vytvářet čtyři druhy programů: aplikace, applety, hybridy a servlety. V tomto článku pojednávám o prvních třech programech. Další informace o servletech najdete v dokumentaci k platformě Java 2, Enterprise Edition.
Aplikace
An aplikace je samostatný program sestávající z alespoň jedné třídy s a hlavní()
metoda. Tato metoda obsahuje následující podpis:
public static void main (String [] args)
The veřejnost
klíčové slovo znamená hlavní()
je volatelný mimo třídu, ve které je deklarován. The statický
klíčové slovo znamená hlavní()
je volatelný bez odkazu na objekt. Jinými slovy, JVM nemusí vytvářet objekt ze třídy, která deklaruje hlavní()
před zavoláním hlavní()
. Nakonec prázdnota
klíčové slovo znamená hlavní()
nevrací hodnotu.
Stejně jako u jiných metod hlavní()
má seznam parametrů, seznam typů a názvů proměnných. v hlavní()
V případě, že se objeví pouze jeden parametr - args
. Tento parametr je deklarován jako odkaz na - také známý jako adresa - pole Tětiva
předměty. Každý objekt obsahuje obsah argumentu předaného aplikaci prostřednictvím příkazového řádku programu. Poznámka: Nemusíte používat args
jako název tohoto parametru. Stejně snadno můžete určit kuřata
, jako v Řetězec [] kuřata
.
Výpis 1 představuje zdrojový kód aplikace s názvem Aplikace
. Tato aplikace vytiskne seznam argumentů, které jsou předávány prostřednictvím příkazového řádku.
Výpis 1. App.java
// App.java class App {public static void main (String [] args) {System.out.println ("Argumenty příkazu \ n"); for (int i = 0; i <args.length; i ++) System.out.println (args [i]); }}
TEXTOVÉ POLE:
TEXTBOX_HEAD: Komentáře
Výpis 1 ilustruje techniku, kterou používám k identifikaci programů - na začátek zdrojového souboru umístím komentář, který identifikuje název zdrojového souboru. Považuji tento komentář za užitečný při sledování programů. Pokud nejste obeznámeni s konceptem komentáře, není to nic jiného než dokumentace zdrojového kódu, která má význam pouze na úrovni zdroje. Při kompilaci zdrojového kódu je komentář zahozen. Příští měsíc se znovu podíváme na komentáře.
: END_TEXTBOX
Kód uvnitř Aplikace
je hlavní()
metoda volá jednu z ven
referenční proměnná objektu println ()
metody pro výstup informací na standardní výstupní zařízení. Tímto zařízením je obvykle příkazové okno, například okno Microsoft Windows DOS, i když zařízení lze přesměrovat do souboru. (Toto přesměrování předvedu v následujícím článku.) Periodický znak odděluje znak println ()
volání metody z ven
referenční proměnná objektu. Zase ven
je deklarován ve třídě s názvem Systém
a oddělené od Systém
znakem období. Proměnná odkazu na objekt se velmi podobá ukazateli C nebo C ++: Je to proměnná, která obsahuje adresu jiné proměnné. V nadcházejících článcích budete dost vystaveni proměnným referenčním objektům.
Pokud jste pracovali s C nebo C ++, pravděpodobně jste obeznámeni se strukturou příkazu for loop (který se ve zdrojovém kódu zobrazuje pomocí klíčového slova pro
). Příkaz smyčky for opakovaně provádí jeden nebo více příkazů buď pro zadaný počet opakování, nebo neomezenou dobu. (V budoucích článcích podrobně prozkoumám příkaz for loop a další příkazy.) In Aplikace
případ, pro
provede a System.out.println
volání metody pro každý argument, který byl předán tomuto programu na příkazovém řádku. Oznámení délka oblouk
. V Javě délka
je vlastnost pole a vrací počet prvků pole.
Na příkazový řádek zadejte javac App.java
sestavit Aplikace
. Pokud jste zadali vše, jak je znázorněno, měli byste skončit s názvem souboru třídy App. Třída
který obsahuje Aplikace
pokyny pro bajtový kód. Jak tedy běžíš? Aplikace
? Podívejte se na obrázek 1. Tento obrázek ukazuje Aplikace
běží z příkazového řádku se třemi argumenty: jeden
, dva
, a tři
.
Poznámka: Obrázek 1 ukazuje Aplikace
běží pod Windows 98 SE. Unix a Linux běží Aplikace
podobně. Když však běžíte pod Macem, budete pravděpodobně muset dokončit trochu více práce. Rád bych vám ukázal, jak to udělat, ale nikdy jsem nepoužíval Java pro Mac.
The Jáva
program spustí aplikaci. V systému Windows je tento program uložen do spustitelného souboru s názvem java.exe
. Stejně jako u javac
, Jáva
je zadán na příkazovém řádku. Název souboru třídy, který obsahuje hlavní()
poté následuje metoda Jáva
.
The Jáva
program hledá hlavní()
metoda v souboru třídy. Pokud to nenajde hlavní()
, odešle chybovou zprávu. (Jak vidíte na obrázku 1, vy NEPOUŽÍVEJTE uveďte .třída
přípona souboru.)
Argumenty mohou následovat za názvem třídy, ale jsou volitelné. Na obrázku 1 jsou tyto argumenty jeden
, dva
, a tři
. Jáva
vytváří Tětiva
pole (prostřednictvím nativního rozhraní Java - JNI) a naplní každý prvek odkazem na a Tětiva
objekt obsahující znaky skládající argument. Po dokončení se hlavní()
metoda je volána (prostřednictvím JNI) a předává odkaz na Tětiva
pole.
Předpokládejme, že jste psali java aplikace *
na příkazovém řádku. Co si myslíte, že by se zobrazilo příkazové okno? Pokud si myslíte, že odpověď je hvězdička, podívejte se na obrázek 2.
Obrázek 2 ukazuje Aplikace
zobrazení názvů souborů umístěných ve stejném adresáři jako App. Třída
. Ukazuje se, že znak hvězdičky představuje zástupný znak. Jinými slovy představuje všechny názvy souborů v aktuálním adresáři. Když Jáva
staví Tětiva
pole, získá seznam všech názvů souborů aktuálního adresáře a umístí každý název souboru do samostatného Tětiva
objekt, který je poté uložen jako prvek v poli.
Zkuste běžet java aplikace * *
. Hádejte, co se zobrazí. Protože každá hvězdička způsobuje Jáva
Chcete-li získat seznam všech názvů souborů, uvidíte dvě kopie všech názvů souborů v aktuálním adresáři.
Předpokládejme, že napíšete a Kalkulačka
aplikace, která vynásobí dvě čísla hvězdičkou, jako v java kalkulačka 4 * 3
. Na základě předchozí diskuse se 4 a 3 nebudou množit. Pokud chcete, aby byla hvězdička interpretována jako sama - a nikoli jako zástupný znak -, musíte ji obklopit dvojicí znaků uvozovek. Například byste zadali java kalkulačka 4 "*" 3
. Kromě toho, pokud váš argument obsahuje vložené znaky mezery a chcete tyto mezery zahrnout jako součást argumentu, musíte použít uvozovky. Zadejte například java aplikace "můj složený argument"
na příkazovém řádku zadat můj složený argument
tak jako Aplikace
jediný argument.
Naše první Java aplikace se skládala z jedné třídy. Můžete však také vytvořit aplikace, které se skládají z více tříd. Kromě toho může mít každá třída svoji vlastní hlavní()
metoda. Chcete-li zjistit, jak tato situace vypadá, podívejte se na Výpis 2.
Výpis 2. Fred.java
// Fred.java třída A {public static void main (String [] dogs) {System.out.println ("metoda třídy A main () metoda"); }} třída B {public static void main (kuřata String []) {System.out.println ("metoda třídy B main ()"); System.out.println ("Num args:" + chickens.length); }}
Výpis 2 představuje zdrojový kód uložený v souboru s názvem Fred. Java
. Tento zdrojový kód se skládá ze dvou tříd: A
a B
. Při kompilaci (jako v javac Fred.java
), skončíte se dvěma soubory třídy: Třída
a B. třída
. Pokud byste psali java A
, viděl bys Metoda main () třídy A.
v příkazovém okně. Pokud byste ale psali java B
, zobrazí se příkazové okno Metoda main () třídy B
, následovaný řádkem, který začíná Počet args:
a identifikuje počet argumentů předaných na příkazovém řádku.
Je Frede
jedna aplikace nebo dvě aplikace? Odpověď závisí na vaší perspektivě. Normálně se aplikace skládá z jedné třídy s a hlavní()
metoda. Jak jste viděli, spustíte aplikaci zadáním Jáva
a název třídy, která obsahuje hlavní()
. Může se však stát, že umístíte a hlavní()
metoda v jiných třídách (pro účely ladění). Abyste zabránili nejasnostem pro kohokoli, kdo používá váš program, odeberte všechny hlavní()
metody kromě hlavní()
metoda, která spustí aplikaci, nebo identifikujte soubor třídy obsahující úředníka hlavní()
před nasazením aplikace.
Navíc Jáva
, Java 2 SDK obsahuje a javaw
program, který můžete použít ke spouštění aplikací. Tento program je téměř totožný s Jáva
, kromě toho javaw
při spuštění aplikace nezobrazí příkazové okno (pokud aplikaci nespustíte prostřednictvím dávkového souboru systému Windows, který automaticky otevře příkazové okno). Předpokládejme například, že se jmenuje váš soubor třídy GUIDemo
je uložen v c: \ jdk1.4 \ projects
adresář (za předpokladu Windows). Rozhodnete se vytvořit zástupce Windows pro spuštění tohoto programu a zvolíte následující příkazový řádek: java -cp c: \ jdk1.4 \ projects GUIDemo
. (The -cp
volba říká Jáva
kde najít soubor třídy s názvem GUIDemo.class
.) Když vyberete zástupce, objeví se příkazové okno spolu s GUIDemo
okno GUI. Pokud se však změníte Jáva
na javaw
, neuvidíte příkazové okno.
Nyní, když jste měli příležitost hrát si s aplikacemi, pojďme se podívat na druhou kategorii programů Java - applety.
Applety
An applet je aplikace, která běží v kontextu webového prohlížeče, který ovládá applet. Protože obdélníková oblast webové stránky zobrazuje výstup appletu, jsou applety popsány jako vložené do webových stránek. Navíc voláním určitých metod - které brzy prozkoumáme - prohlížeč spravuje životní cyklus appletu.
Soubory třídy appletu se automaticky stáhnou do počítače uživatele, když uživatel surfuje na webovou stránku obsahující applet. Po stažení provede virtuální stroj prohlížeče nebo software Java Plug-in tyto soubory třídy. (Viz Zdroje pro článek, který zkoumá modul plug-in Java.)
Představte si, že škodlivá osoba vytvoří applet, který odstraní soubory, zbytečně hromadí papír do tiskárny, ukradne hesla nebo jiné citlivé informace atd. Applet s neomezeným přístupem k počítači uživatele by mohl provádět všechny tyto přestupky. Z tohoto důvodu mohou applety spouštět pouze omezené funkce. Například applet nemůže provádět žádné činnosti související se soubory.
Sun zavedl konkrétní (a zapojený) postup pro přeměnu appletů s omezením na applety bez omezení. Neomezené applety však lze spustit pouze se souhlasem uživatele. (Toto téma prozkoumáme v budoucím článku.) Aby byl applet, jedna - a pouze jedna - z tříd appletu musí odpovídat následujícímu vzoru:
veřejná třída jméno třídy rozšiřuje java.applet.Applet {}
Požadováno veřejnost
klíčové slovo poskytuje webovému prohlížeči přístup k appletu. The rozšiřuje
klíčové slovo označuje objektově orientovaný koncept programování dědičnosti a naznačuje, že jméno třídy
třída dědí možnosti appletů z třídy s názvem Applet
(nachází se v java.applet
balíček - organizační mechanismus pro třídy a soubory tříd - k prozkoumání v budoucím článku).
Každý applet má svůj životní cyklus. Applet je inicializován (jednou a pouze jednou), spuštěn a zastaven (jednou nebo vícekrát během své životnosti) a zničen (jednou a pouze jednou). Prohlížeč volá jednu ze čtyř metod ve významných bodech během tohoto životního cyklu, aby naznačil, že applet vstoupil do další fáze existence. Tyto metody jsou init ()
, Start()
, stop()
, a zničit()
.