Programovanie

Aplikácie, applety a hybridy

Ak ste sledovali Java 101, viete, že Jacob Weintraub vytvoril vynikajúcu sériu článkov, ktoré majú pomôcť začiatočníkom Java stať sa vývojármi Java. Keďže však Jacob už nemôže pokračovať v tomto stĺpci, JavaWorld odovzdal mi pochodeň.

Rýchlo zistíte, že moja cesta k vývojárovi Java ide inou cestou. Napríklad by som radšej hovoril o programovacích aspektoch Javy, ktoré nie sú objektovo orientované (ako sú typy, premenné, operátory, výrazy a príkazy), než sa ponorím do jeho objektovo orientovanej stránky. Verím, že tento prístup sa zlepší Java 101Prirodzený tok z jednej témy do druhej - tok, ktorý plynulo prechádza od začiatku do konca. Na uľahčenie diskusie príležitostne predvediem pokročilý koncept, kým ho úplne vysvetlím. Vo výsledku sa pri postupe týmto a budúcimi článkami stretnete so stručnými vysvetleniami k pokročilejším témam.

Java 101 predstaví veľa príkladov programov. Každý program je kompilovaný s kompilátorom Sun's Java 2 Platform, Standard Edition verzie 1.4 (tiež známy ako SDK 1.4) a testovaný na platforme Windows 98 SE. Aj keď sa pokúsim obmedziť referencie na Windows na minimum, nie vždy to bude možné, takže vás varujem, keď sa článok dostane do sveta Windows.

Pretože som nestrávil veľa času venovaním sa Jave z pohľadu servera, tento stĺpec sa zameria na Javu na strane klienta. To neznamená, že nebudeme skúmať témy ako Remote Method Invocation a JDBC, ktoré premosťujú stranu klienta a servera. Nebudem však prezentovať servlety, Enterprise JavaBeans, Java Server Pages a ďalšie témy na strane servera. Pre lepšiu predstavu o predmetoch, ktorým sa budem venovať, nájdete na bočnom paneli Cesta vpred Java 101 osnova kurzu.

V tomto mesačnom článku rozoberám štruktúru aplikačných, appletových a hybridných programov. Z aplikačného hľadiska možno nájdete určité prekrytie z Jacobových starších článkov, predstavím však tiež dosť nového obsahu.

Programové kategórie

Java vám dáva možnosť vytvárať štyri druhy programov: aplikácie, applety, hybridy a servlety. V tomto článku rozoberám prvé tri programy. Ak sa chcete dozvedieť viac informácií o servletoch, prečítajte si dokumentáciu k platforme Java 2, vydanie Enterprise.

Aplikácie

An žiadosť je samostatný program pozostávajúci najmenej z jednej triedy s a hlavný() metóda. Táto metóda obsahuje nasledujúci podpis:

public static void main (reťazec [] args)

The verejné kľúčové slovo znamená hlavný() je volané zvonka triedy, v ktorej je deklarované. The statický kľúčové slovo znamená hlavný() je možné zavolať bez odkazu na objekt. Inými slovami, JVM nemusí vytvárať objekt z triedy, ktorá deklaruje hlavný() pred zavolaním hlavný(). Nakoniec neplatný kľúčové slovo znamená hlavný() nevracia hodnotu.

Rovnako ako pri iných metódach, hlavný() má zoznam parametrov, zoznam typov a názvov premenných. V hlavný()prípade sa zobrazí iba jeden parameter - args. Tento parameter je vyhlásený za odkaz na - tiež známy ako adresa - poľa String predmety. Každý objekt obsahuje obsah argumentu odovzdaného aplikácii prostredníctvom príkazového riadku programu. Poznámka: Nemusíte používať args ako názov tohto parametra. Rovnako ľahko môžete určiť sliepky, ako v Reťazec [] kurčatá.

Výpis 1 predstavuje zdrojový kód aplikácie s názvom App. Táto aplikácia vytlačí zoznam argumentov, ktoré sa jej odovzdávajú prostredníctvom príkazového riadku.

Zoznam 1. App.java

// App.java class App {public static void main (String [] args) {System.out.println ("Argumenty príkazu \ n"); pre (int i = 0; i <args.length; i ++) System.out.println (args [i]); }} 

TEXTOVÉ POLE:

TEXTBOX_HEAD: Komentáre

Zoznam 1 ilustruje techniku, ktorú používam na identifikáciu programov - na začiatok zdrojového súboru umiestnim komentár, ktorý identifikuje názov zdrojového súboru. Považujem tento komentár za užitočný pri sledovaní programov. Ak nie ste oboznámení s konceptom komentára, nie je to nič iné ako dokumentácia zdrojového kódu, ktorá má zmysel iba na zdrojovej úrovni. Po kompilácii zdrojového kódu je komentár vyhodený. Budúci mesiac sa pozrieme na komentáre znova.

: END_TEXTBOX

Kód v Appje hlavný() metóda volá jednu z von referenčné premenné objektu println () metódy výstupu informácií na štandardné výstupné zariadenie. Týmto zariadením je zvyčajne príkazové okno, napríklad okno systému Microsoft Windows DOS, aj keď je možné zariadenie presmerovať do súboru. (Toto presmerovanie ukážem v nasledujúcom článku.) Periodický znak oddeľuje znak println () metóda volania z von referenčná premenná objektu. Na druhej strane von je deklarovaný v triede s názvom Systém a oddelené od Systém dobovým znakom. Referenčná premenná objektu veľmi pripomína ukazovateľ C alebo C ++: Je to premenná, ktorá obsahuje adresu inej premennej. V nasledujúcich článkoch budete pomerne dosť vystavení referenčným premenným objektov.

Ak ste pracovali s jazykom C alebo C ++, pravdepodobne ste oboznámení so štruktúrou príkazu for loop (ktorý sa v zdrojovom kóde zobrazuje pomocou kľúčového slova pre). Príkaz for loop opakovane vykonáva jeden alebo viac príkazov buď pre zadaný počet opakovaní, alebo neurčito. (V budúcich článkoch sa budem podrobne zaoberať príkazom for a ďalšími príkazmi.) V Appprípad, pre vykonáva a System.out.println volanie metódy pre každý argument, ktorý bol tomuto programu odovzdaný na príkazovom riadku. Všimnite si dĺžka oblúka. V Jave dĺžka je vlastnosť poľa a vracia počet prvkov poľa.

Na príkazový riadok zadajte javac App.java zostaviť App. Ak ste zadali všetko, ako je to znázornené, mali by ste skončiť so súborom triedy s názvom App.class ktorý obsahuje Apppokyny pre bajtový kód. Ako teda bežíš? App? Pozrite sa na obrázok 1. Tento obrázok ukazuje App beží z príkazového riadku s tromi argumentmi: jeden, dvaa tri.

Poznámka: Obrázok 1 zobrazuje App pod Windows 98 SE. Unix a Linux fungujú App podobne. Ak však bežíte pod počítačom Mac, pravdepodobne budete musieť dokončiť trochu viac práce. Rád by som vám ukázal, ako to urobiť, ale nikdy som nepoužíval Java pre Mac.

The java program vykoná aplikáciu. V systéme Windows je tento program uložený v spustiteľnom súbore s názvom java.exe. Ako s javac, java je zadaný na príkazovom riadku. Názov súboru triedy, ktorý obsahuje hlavný() potom nasleduje metóda java.

The java program hľadá hlavný() metóda v súbore triedy. Ak nenájde hlavný(), zobrazí chybové hlásenie. (Ako je zrejmé z obrázku 1, vy NEROBTE uveďte .trieda rozšírenie súboru.)

Argumenty môžu nasledovať za názvom triedy, sú však voliteľné. Na obrázku 1 sú tieto argumenty jeden, dvaa tri. java vytvára a String pole (prostredníctvom natívneho rozhrania Java - JNI) a vyplní každý prvok odkazom na a String objekt obsahujúci znaky tvoriace argument. Po dokončení sa zobrazí hlavný() sa volá metóda (prostredníctvom JNI) a odovzdáva odkaz na String pole.

Predpokladajme, že ste písali java aplikácia * na príkazovom riadku. Čo si myslíte, že by sa zobrazilo príkazové okno? Ak si myslíte, že odpoveďou je hviezdička, pozrite si obrázok 2.

Obrázok 2 zobrazuje App zobrazenie mien súborov umiestnených v rovnakom adresári ako App.class. Ukazuje sa, že znak hviezdičky predstavuje zástupný znak. Inými slovami predstavuje všetky názvy súborov v aktuálnom adresári. Kedy java stavia String pole, získa zoznam všetkých mien súborov aktuálneho adresára a umiestni každý názov súboru do samostatného String objekt, ktorý sa potom uloží ako prvok v poli.

Skúste behať java aplikácia * *. Hádajte, čo sa zobrazí. Pretože každá hviezdička spôsobuje java Ak chcete získať zoznam všetkých mien súborov, uvidíte dve kópie všetkých mien súborov v aktuálnom adresári.

Predpokladajme, že napíšete a Kalkulačka aplikácia, ktorá znásobuje dve čísla hviezdičkou, ako v java kalkulačka 4 * 3. Na základe predchádzajúcej diskusie sa 4 a 3 nebudú množiť. Ak chcete, aby bola hviezdička interpretovaná ako taká, a nie ako zástupný znak, musíte ju obklopiť dvojicou znakov dvojitých úvodzoviek. Napríklad by ste napísali java kalkulačka 4 "*" 3. Ďalej, ak váš argument obsahuje vložené medzery a chcete ich zahrnúť ako súčasť argumentu, musíte použiť úvodzovky. Napríklad napíšte java aplikácia "môj zložený argument" na príkazovom riadku určiť môj zložený argument ako Appjediný argument.

Naša prvá Java aplikácia pozostávala z jednej triedy. Môžete však tiež vytvoriť aplikácie, ktoré pozostávajú z viacerých tried. Každá trieda môže mať navyše svoju vlastnú hlavný() metóda. Ak chcete zistiť, ako táto situácia vyzerá, pozrite si zoznam 2.

Výpis 2. Fred.java

// Fred.java trieda A {public static void main (String [] psy) {System.out.println ("metóda triedy A main ()"); }} trieda B {public static void main (kurčatá String []) {System.out.println ("metóda triedy B main ()"); System.out.println ("Num args:" + chickens.length); }} 

Výpis 2 predstavuje zdrojový kód uložený v súbore s názvom Fred.java. Tento zdrojový kód pozostáva z dvoch tried: A a B. Po zostavení (ako v javac Fred.java), skončíte s dvoma súbormi triedy: Trieda a B.trieda. Keby si mal písať java A, videli by ste Metóda main () triedy A v príkazovom okne. Keby ste však mali písať na stroji java B, zobrazí sa príkazové okno Metóda triedy B main (), za ktorým nasleduje riadok, ktorý začína Počet argumentov: a identifikuje počet argumentov odovzdaných v príkazovom riadku.

Je Fred jednu aplikáciu alebo dve aplikácie? Odpoveď závisí od vašej perspektívy. Aplikácia zvyčajne pozostáva z jednej triedy s a hlavný() metóda. Ako ste videli, aplikáciu spustíte zadaním java a názov triedy, ktorá obsahuje hlavný(). Môže sa však stať, že umiestnite a hlavný() metóda v iných triedach (na účely ladenia). Aby ste predišli nedorozumeniam pre kohokoľvek, kto používa váš program, buď odstráňte všetky hlavný() metódy okrem hlavný() metóda, ktorá spustí aplikáciu, alebo identifikovať súbor triedy obsahujúci úradníka hlavný() pred nasadením aplikácie.

Okrem tohoto java, Java 2 SDK obsahuje a javaw program, ktorý môžete použiť na spustenie aplikácií. Tento program je takmer totožný s java, okrem toho javaw pri spustení aplikácie nezobrazuje príkazové okno (pokiaľ aplikáciu nespustíte prostredníctvom dávkového súboru systému Windows, ktorý automaticky otvorí príkazové okno). Predpokladajme napríklad, že sa volá váš súbor triedy GUIDemo je uložený v c: \ jdk1.4 \ projects adresár (za predpokladu Windows). Rozhodnete sa vytvoriť zástupcu systému Windows na spustenie tohto programu a zvolíte nasledujúci príkazový riadok: java -cp c: \ jdk1.4 \ projects GUIDemo. (The -cp možnosť hovorí java kde nájdem súbor triedy s názvom GUIDemo.class.) Po výbere skratky sa zobrazí príkazové okno spolu s GUIDemookno GUI. Ak sa však zmeníte java do javaw, neuvidíte príkazové okno.

Teraz, keď ste mali možnosť hrať sa s aplikáciami, sa pozrime na druhú kategóriu Java programov - applety.

Applety

An applet je aplikácia, ktorá beží v kontexte webového prehľadávača, ktorý ovláda applet. Pretože obdĺžniková oblasť webovej stránky zobrazuje výstup appletu, sú applety opísané ako vložené do webových stránok. Prehliadač okrem toho volá určité metódy, ktoré čoskoro preskúmame, a riadi tak životný cyklus appletu.

Keď používateľ prehľadá webovú stránku obsahujúcu applet, súbory triedy appletu sa automaticky stiahnu do zariadenia používateľa. Po stiahnutí tieto súbory triedy vykoná virtuálny počítač prehliadača alebo softvér Java Plug-in. (Prečítajte si článok Zdroje, ktorý skúma doplnok Java.)

Predstavte si, že zlomyseľník vytvorí applet, ktorý odstraňuje súbory, plytvanie papiermi do tlačiarne, kradnutie hesiel alebo iných citlivých informácií atď. Všetky tieto priestupky môže spôsobiť applet s neobmedzeným prístupom k stroju používateľa. Z tohto dôvodu môžu applety vykonávať iba obmedzené funkcie. Napríklad applet nemôže vykonávať žiadne činnosti spojené so súbormi.

Spoločnosť Sun zaviedla osobitný (a zapojený) postup na premenu appletov s obmedzeným prístupom na applety bez obmedzenia. Neobmedzené applety sa však dajú spustiť iba so súhlasom používateľa. (Tejto téme sa budeme venovať v budúcom článku.) Aby sme mohli byť appletom, musí jedna a iba jedna z tried appletu zodpovedať nasledujúcemu vzoru:

verejná trieda názov_triedy rozširuje java.applet.Applet {} 

Požadované verejné kľúčové slovo poskytuje webovému prehliadaču prístup k appletu. The predlžuje kľúčové slovo označuje objektovo orientovaný koncept programovania dedičnosti a naznačuje, že názov_triedy trieda dedí možnosti appletu z triedy s názvom Applet (nachádza sa v java.applet balíček - organizačný mechanizmus pre triedy a súbory tried - o ktorých sa bude diskutovať v budúcom článku).

Každý applet má svoj životný cyklus. Applet je inicializovaný (raz a iba raz), spustený a zastavený (jeden alebo viackrát počas jeho životnosti) a zničený (raz a iba raz). Prehliadač volá jednu zo štyroch metód vo významných bodoch tohto životného cyklu, aby naznačil, že applet vstúpil do ďalšej fázy existencie. Tieto metódy sú init (), štart (), stop ()a zničiť ().

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