Programování

Aplikace, applety a hybridy

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ř Aplikaceje 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 Aplikacepří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 Aplikacepokyny 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 Aplikacejediný 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 GUIDemookno 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().

$config[zx-auto] not found$config[zx-overlay] not found