Programiranje

Aplikacije, apleti in hibridi

Če ste spremljali Java 101, veste, da je Jacob Weintraub ustvaril izvrstno serijo člankov, ki naj bi pomagali novincem Java, da postanejo razvijalci Java. Ker pa Jacob ne more več nadaljevati te kolumne, JavaWorld je predal baklo k meni.

Hitro boste odkrili, da moja pot do razvijalca Java sledi drugačni poti. Na primer, raje govorim o programskih vidikih Jave, ki niso objektno usmerjeni (kot so vrste, spremenljivke, operatorji, izrazi in stavki), preden se poglobim v njeno objektno usmerjeno stran. Verjamem, da se bo ta pristop še okrepil Java 101je naravni pretok iz ene teme v drugo - tok, ki se nemoteno premika od začetka do konca. Za lažjo razpravo bom občasno predstavil napreden koncept, preden ga popolnoma pojasnim. Posledično boste med tem in prihodnjimi članki naleteli na kratka pojasnila o naprednejših temah.

Java 101 bo predstavil veliko primerov programov. Vsak program je sestavljen s prevajalnikom Sun's Java 2 Platform, Standard Edition različice 1.4 (znan tudi kot SDK 1.4) in preizkušen na platformi Windows 98 SE. Čeprav se bom trudil, da bi bilo sklicev na Windows čim manj, to ne bo vedno mogoče, zato vas bom opozoril, ko članek zaide v svet sistema Windows.

Ker se z strežnikom z vidika strežnika nisem veliko ukvarjal z Javo, se bo ta stolpec osredotočil na odjemalsko Javo. To ne pomeni, da ne bomo raziskovali tem, kot sta Remote Method Invocation in JDBC, ki povezujejo stranko in strežnik. Vendar ne bom predstavil programčkov, Enterprise JavaBeans, Java Server Pages in drugih tem na strani strežnika. Za boljšo predstavo o temah, ki jih bom obravnaval, glejte stransko vrstico, The Road Ahead, za Java 101 oris tečaja.

V tem mesečnem članku obravnavam strukturo aplikacijskih, apletnih in hibridnih programov. Z vidika aplikacije boste morda našli nekaj prekrivanja iz prejšnjih člankov Jacoba, vendar bom predstavil tudi kar nekaj novih vsebin.

Kategorije programov

Java vam omogoča, da ustvarite štiri vrste programov: aplikacije, programčke, hibride in servlete. V tem članku obravnavam prve tri programe. Če želite izvedeti več o strežniških programčkih, glejte dokumentacijo platforme Java 2, Enterprise Edition.

Aplikacije

An aplikacijo je samostojni program, sestavljen iz vsaj enega razreda z a glavni () metoda. Ta metoda ima naslednji podpis:

javna statična void main (String [] args)

The javnosti ključna beseda pomeni glavni () je mogoče poklicati zunaj razreda, v katerem je prijavljen. The statično ključna beseda pomeni glavni () je mogoče poklicati brez reference predmeta. Z drugimi besedami, JVM ni treba ustvariti predmeta iz razreda, ki ga prijavi glavni () pred klicem glavni (). Končno, praznino ključna beseda pomeni glavni () ne vrne vrednosti.

Kot pri drugih metodah glavni () ima seznam parametrov, seznam vrst in imen spremenljivk. V glavni ()V primeru se prikaže samo en parameter - argume. Ta parameter je razglašen za sklic na - znan tudi kot naslov - polja Vrvica predmetov. Vsak objekt vsebuje vsebino argumenta, ki se aplikaciji posreduje z ukazno vrstico programa. Opomba: Ni vam treba uporabljati argume kot ime tega parametra. Prav tako lahko preprosto določite piščanci, kot v String [] piščanci.

Seznam 1 predstavlja izvorno kodo za aplikacijo z imenom App. Ta aplikacija izpiše seznam argumentov, ki so ji posredovani prek ukazne vrstice.

Seznam 1. App.java

// razred App.java App {public static void main (String [] args) {System.out.println ("Argumenti ukaza \ n"); for (int i = 0; i <args.length; i ++) System.out.println (args [i]); }} 

BESEDILO:

TEXTBOX_HEAD: Komentarji

Seznam 1 prikazuje tehniko, ki jo uporabljam za prepoznavanje programov - na vrh izvorne datoteke postavim komentar, ki identificira ime izvorne datoteke. Ta komentar se mi zdi koristen pri sledenju programov. Če koncepta komentarja ne poznate, ni nič drugega kot dokumentacija izvorne kode, ki ima pomen le na izvorni ravni. Ko je izvorna koda sestavljena, je komentar zavržen. Pripombe si bomo ogledali naslednji mesec.

: END_TEXTBOX

Koda znotraj Appje glavni () metoda pokliče enega od ven referenčna spremenljivka predmeta println () metode za izpis informacij na standardno izhodno napravo. Običajno je ta naprava ukazno okno, kot je okno Microsoft Windows DOS, čeprav jo je mogoče preusmeriti v datoteko. (To preusmeritev bom prikazal v naslednjem članku.) Znak za piko ločuje println () klic metode iz ven referenčna spremenljivka predmeta. Po drugi strani pa ven je razglašen v razredu z imenom Sistem in ločena od Sistem s piko. Referenčna spremenljivka predmeta je zelo podobna kazalcu C ali C ++: To je spremenljivka, ki vsebuje naslov druge spremenljivke. V prihodnjih člankih boste deležni precej izpostavljenosti referenčnim spremenljivkam predmetov.

Če ste delali s C ali C ++, verjetno poznate strukturo stavka zanke for (ki se v izvorni kodi prikaže prek ključne besede za). Stavek zanke for ponavljajoče izvaja enega ali več stavkov bodisi določeno število krat ali za nedoločen čas. (V prihodnjih člankih bom podrobno preučil izjavo for in druge izjave.) Appprimer, za izvrši a System.out.println klic metode za vsak argument, ki je bil v ukazni vrstici poslan temu programu. Opaziti args.length. V Javi dolžina je lastnost matrike in vrne število elementov matrike.

V ukazno vrstico vnesite javac App.java sestaviti App. Če ste vnesli vse, kot je prikazano, se vam na koncu prikaže datoteka predavanja Aplikacijski razred ki vsebuje Appnavodila za bajtno kodo. Torej, kako teči App? Oglejte si sliko 1. Ta slika prikazuje App zagon iz ukazne vrstice s tremi argumenti: eno, dva, in tri.

Opomba: Slika 1 prikazuje App teče pod Windows 98 SE. Unix in Linux delujeta App podobno. Ko pa tečete pod Macom, boste verjetno morali opraviti še nekaj dela. Rad bi vam pokazal, kako to narediti, toda Jave nisem nikoli uporabljal na Macu.

The java program zažene aplikacijo. V sistemu Windows je ta program shranjen v izvršljivi datoteki, imenovani java.exe. Kot z javac, java je določeno v ukazni vrstici. Ime datoteke razreda, ki vsebuje glavni () potem sledi metoda java.

The java program išče glavni () v datoteki razreda. Če ne najde glavni (), prikaže sporočilo o napaki. (Kot lahko vidite s slike 1, vi NE določite .razred končnico datoteke.)

Argumenti lahko sledijo imenu razreda, vendar niso obvezni. Na sliki 1 so ti argumenti eno, dva, in tri. java ustvari a Vrvica array (prek Java Native Interface - JNI) in zapolni vsak element s sklicem na Vrvica objekt, ki vsebuje znake, ki sestavljajo argument. Ko je končan, glavni () metoda se pokliče (prek JNI) in posreduje sklic na Vrvica matriko.

Recimo, da bi morali tipkati java app * v ukazni vrstici. Kaj mislite, da bi se prikazalo ukazno okno? Če menite, da je odgovor zvezdica, si oglejte sliko 2.

Slika 2 prikazuje App prikaz imen datotek v istem imeniku kot Aplikacijski razred. Izkazalo se je, da zvezdica predstavlja nadomestni znak. Z drugimi besedami, predstavlja vsa imena datotek v trenutnem imeniku. Kdaj java gradi Vrvica array pridobi seznam vseh imen datotek trenutnega imenika in vsako ime datoteke postavi v ločeno Vrvica objekt, ki se nato shrani kot element v matriki.

Poskusite teči java app * *. Ugani, kaj bo prikazano. Ker vsaka zvezdica povzroča java če želite dobiti seznam vseh imen datotek, boste v trenutnem imeniku videli dve kopiji vseh imen datotek.

Recimo, da napišete a Kalkulator aplikacija, ki pomnoži dve številki z zvezdico, kot v java kalkulator 4 * 3. Glede na prejšnjo razpravo se 4 in 3 ne bosta pomnožila. Če želite, da bi zvezdico razlagali kot samo sebe - in ne nadomestnega znaka - jo morate obkrožiti s parom dvojnih narekovajev. Na primer, bi vtipkali java kalkulator 4 "*" 3. Če vaš argument vsebuje vdelane presledke in jih želite vključiti kot del argumenta, morate uporabiti dvojne narekovaje. Na primer, vnesite java app "moj sestavljeni argument" v ukazni vrstici, da določite moj sestavljeni argument kot Appen sam argument.

Naša prva aplikacija Java je bila sestavljena iz enega razreda. Lahko pa ustvarite tudi aplikacije, ki so sestavljene iz več razredov. Poleg tega ima lahko vsak razred svojega glavni () metoda. Če želite videti, kako je ta situacija, si oglejte seznam 2.

Seznam 2. Fred.java

// Fred.java razred A {javni statični void main (String [] psi) {System.out.println ("metoda razreda A (main ()"); }} razred B {javna statična void main (String [] piščanci) {System.out.println ("metoda razreda B main ()"); System.out.println ("Število argumentov:" + piščanci.dolžina); }} 

Seznam 2 predstavlja izvorno kodo, shranjeno v datoteki z imenom Fred.java. Ta izvorna koda je sestavljena iz dveh razredov: A in B. Ko je sestavljen (kot v javac Fred.java), na koncu dobite dve datoteki razreda: Razred in B.razred. Če bi tipkali java A, bi videli Glavna metoda razreda A v ukaznem oknu. Če pa bi morali tipkati java B, bi se prikazalo ukazno okno Glavna metoda razreda B, čemur sledi vrstica, ki se začne z Število argumentov: in določa število argumentov, posredovanih v ukazni vrstici.

Je Fred ena ali dve aplikaciji? Odgovor je odvisen od vaše perspektive. Običajno je aplikacija sestavljena iz enega razreda z glavni () metoda. Kot ste videli, zaženete aplikacijo z navedbo java in ime razreda, ki vsebuje glavni (). Lahko pa se znajdete, da postavite glavni () metoda v drugih razredih (za odpravljanje napak). Če želite preprečiti zmedo za uporabnike vašega programa, odstranite vse glavni () metode, razen glavni () metoda, ki zažene aplikacijo, ali identificirajte datoteko razreda, ki vsebuje uradnika glavni () pred uvedbo aplikacije.

Poleg java, Java 2 SDK vključuje javaw program, ki ga lahko uporabite za zagon aplikacij. Ta program je skoraj enak java, razen tega javaw med izvajanjem aplikacije ne prikaže ukaznega okna (razen če ga zaženete prek paketne datoteke sistema Windows, ki samodejno odpre ukazno okno). Recimo na primer, da je poklicana vaša datoteka predavanja GUIDemo je shranjena v c: \ jdk1.4 \ projekti imenik (ob predpostavki Windows). Odločite se, da ustvarite bližnjico Windows za zagon tega programa in izberete naslednjo ukazno vrstico: java -cp c: \ jdk1.4 \ projects GUIDemo. (The -cp možnost pove java kje najti datoteko razreda, imenovano GUIDemo.class.) Ko izberete bližnjico, se prikaže tudi ukazno okno GUIDemoje okno GUI. Če pa se spremenite java do javaw, ne boste videli ukaznega okna.

Zdaj, ko ste se imeli priložnost igrati z aplikacijami, si oglejmo še drugo kategorijo programov Java - apleti.

Apleti

An aplet je aplikacija, ki deluje v okviru spletnega brskalnika, ki nadzoruje programček. Ker pravokotno območje spletne strani prikazuje izhodni programček, so apleti opisani kot vdelani v spletne strani. Poleg tega brskalnik s klicem nekaterih metod - ki jih bomo kmalu raziskali - upravlja življenjski cikel programčka.

Datoteke razreda programčka se samodejno prenesejo v uporabnikov računalnik, ko uporabnik brska po spletni strani, ki vsebuje programček. Po prenosu navidezni stroj brskalnika ali programska oprema Java Plug-in izvrši te datoteke razredov. (Glejte članek o člankih, ki raziskujejo vtičnik Java.)

Predstavljajte si zlonamerno osebo, ki ustvari programček, ki izbriše datoteke, zapravlja gomile papirja za tiskalnik, krade gesla ali druge občutljive podatke itd. Applet z neomejenim dostopom do uporabnikovega računalnika lahko izvede vse te napake. Iz tega razloga lahko apleti izvajajo le omejene funkcije. Applet na primer ne more izvajati nobenih dejavnosti, povezanih z datotekami.

Sun je vzpostavil poseben (in vključen) postopek za spreminjanje omejenih apletov v neomejene aplete. Neomejeni programčki pa se lahko izvajajo le z dovoljenjem uporabnika. (To temo bomo raziskali v prihodnjem članku.) Če želite biti programček, mora biti en - in samo en - razred programov v skladu z naslednjim vzorcem:

javni razred ime_razreda razširi java.applet.Applet {} 

Zahtevano javnosti ključna beseda omogoča spletnemu brskalniku dostop do programčka. The podaljša Ključna beseda označuje objektno usmerjen programski koncept dedovanja in predlaga, da ime_razreda class podeduje zmožnosti programčka od razreda z imenom Applet (ki se nahaja v java.applet paket - organizacijski mehanizem za razrede in datoteke razredov - ki ga bomo raziskali v prihodnjem članku).

Vsak programček ima življenjski cikel. Applet se inicializira (enkrat in samo enkrat), zažene in ustavi (enkrat ali večkrat v življenju) in uniči (enkrat in samo enkrat). Brskalnik na pomembnih točkah v tem življenjskem ciklu pokliče enega od štirih načinov, ki kaže, da je programček prešel v drugo fazo obstoja. Te metode so v(), začetek (), stop (), in uničiti ().

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