Programmering

Programmer, applets og hybrider

Hvis du har fulgt med Java 101, vet du at Jacob Weintraub har laget en utmerket serie artikler designet for å hjelpe Java nybegynnere å bli Java-utviklere. Ettersom Jacob ikke lenger kan fortsette denne kolonnen, JavaWorld har gitt fakkelen til meg.

Du vil raskt oppdage at ruten min til å bli Java-utvikler følger en annen vei. For eksempel foretrekker jeg å snakke om programmeringsaspektene til Java som ikke er objektorientert (som typer, variabler, operatører, uttrykk og utsagn) før jeg går ned i den objektorienterte siden. Jeg tror den tilnærmingen vil forbedre seg Java 101sin naturlige flyt fra ett emne til et annet - en flyt som sømløst beveger seg fra start til slutt. For å lette diskusjonen vil jeg noen ganger presentere et avansert konsept før jeg forklarer det fullt ut. Som et resultat vil du støte på korte forklaringer om mer avanserte emner når du arbeider deg gjennom denne og fremtidige artikler.

Java 101 vil introdusere mange eksempelprogrammer. Hvert program er samlet med Suns Java 2 Platform, Standard Edition versjon 1.4 (også kjent som SDK 1.4) kompilator og testet på Windows 98 SE-plattformen. Selv om jeg prøver å holde Windows-referanser til et minimum, vil det ikke alltid være mulig, så jeg vil advare deg når en artikkel kommer inn i Windows-verdenen.

Fordi jeg ikke har brukt mye tid på å håndtere Java fra serverperspektivet, vil denne kolonnen fokusere på klientsiden Java. Det betyr ikke at vi ikke vil utforske emner som Remote Method Invocation og JDBC, som bygger bro over klienten og serveren. Imidlertid vil jeg ikke presentere servlets, Enterprise JavaBeans, Java Server Pages og andre emner på serversiden. For å få en bedre ide om emnene jeg skal dekke, se sidefeltet, Veien fremover, for Java 101 kursplan.

I denne månedens artikkel diskuterer jeg strukturen til applikasjon, applet og hybridprogrammer. Fra et applikasjonsperspektiv kan du finne noe overlapp fra Jacobs tidligere artikler, men jeg vil også introdusere ganske mye nytt innhold.

Programkategorier

Java gir deg muligheten til å lage fire typer programmer: applikasjoner, applets, hybrider og servlets. Jeg diskuterer de tre første programmene i denne artikkelen. For å lære mer om servlets, vennligst se dokumentasjonen til Java 2 Platform, Enterprise Edition.

applikasjoner

An applikasjon er et frittstående program som består av minst en klasse med en hoved() metode. Denne metoden har følgende signatur:

public static void main (String [] args)

De offentlig søkeord betyr hoved() kan kalles utenfor klassen det er deklarert i. De statisk søkeord betyr hoved() kan kalles uten en objektreferanse. Med andre ord trenger ikke JVM å lage et objekt fra klassen som erklærer hoved() før du ringer hoved(). Til slutt, tomrom søkeord betyr hoved() returnerer ikke en verdi.

Som med andre metoder, hoved() har en parameterliste, en liste over typer og variabelnavn. I hoved()i tilfelle vises bare en parameter - argumenterer. Denne parameteren er erklært en referanse til - også kjent som adresse til - en rekke String gjenstander. Hvert objekt inneholder innholdet i et argument som sendes til applikasjonen ved hjelp av programmets kommandolinje. Merk: Du trenger ikke bruke argumenterer som parameterens navn. Du kan like enkelt spesifisere kyllinger, som i String [] kyllinger.

Oppføring 1 presenterer kildekoden for et program som heter App. Denne applikasjonen skriver ut en liste over argumenter som blir sendt til seg selv ved hjelp av kommandolinjen.

Oppføring 1. App.java

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

TEKSTBOKS:

TEXTBOX_HEAD: Kommentarer

Oppføring 1 illustrerer en teknikk som jeg bruker for å identifisere programmer - øverst i en kildefil legger jeg en kommentar som identifiserer kildefilens navn. Jeg synes den kommentaren er nyttig for å holde oversikt over programmer. Hvis du ikke er kjent med begrepet en kommentar, er det ikke noe annet enn kildekodedokumentasjon som bare har betydning på kildenivå. Når kildekoden er kompilert, kastes kommentaren. Vi ser på kommentarer igjen neste måned.

: END_TEXTBOX

Kode innen Apps hoved() metoden kaller en av ute objektreferansevariabler println () metoder for å sende informasjon til standardutdataenheten. Enheten er vanligvis et kommandovindu som Microsoft Windows DOS-vindu, selv om enheten kan omdirigeres til en fil. (Jeg vil demonstrere den viderekoblingen i en påfølgende artikkel.) Periode-tegnet skiller mellom println () metodeanrop fra ute objektreferansevariabel. I sin tur ute blir erklært i en klasse som heter System og skilt fra System av en periode karakter. En objektreferansevariabel ligner nær en C- eller C ++ -peker: Det er en variabel som inneholder adressen til en annen variabel. Du vil få ganske mye eksponering for objektreferansevariabler i kommende artikler.

Hvis du har jobbet med C eller C ++, er du sannsynligvis kjent med strukturen til for loop-setningen (som vises i kildekoden via nøkkelord til). For loop-setningen utfører gjentatte ganger en eller flere utsagn enten for et spesifisert antall ganger eller på ubestemt tid. (I fremtidige artikler vil jeg utforske for loop-uttalelsen og andre utsagn i detalj.) I Appsaken, til utfører a System.out.println metodekall for hvert argument som ble sendt til det programmet på kommandolinjen. Legge merke til args.lengde. I Java, lengde er en egenskap for en matrise, og den returnerer et antall matriseelementer.

Skriv på kommandolinjen javac App.java å kompilere App. Hvis du har angitt alt som vist, bør du ende opp med en klassefil som heter App.klasse som inneholder Apps byte kode instruksjoner. Så hvordan løper du App? Ta en titt på figur 1. Denne figuren viser App kjører fra kommandolinjen med tre argumenter: en, to, og tre.

Merk: Figur 1 viser App kjører under Windows 98 SE. Unix og Linux kjøres App på samme måte. Men når du kjører under Mac, må du sannsynligvis fullføre litt mer arbeid. Jeg vil gjerne vise deg hvordan du gjør det, men jeg har aldri brukt Java på en Mac.

De java programmet kjører et program. Under Windows er det programmet lagret i en kjørbar fil som heter java.exe. Som med javac, java er spesifisert på kommandolinjen. Navnet på klassefilen som inneholder hoved() metoden følger deretter java.

De java programmet ser etter hoved() metode i klassefilen. Hvis den ikke finner hoved(), sender den ut en feilmelding. (Som du kan se fra figur 1, du IKKE spesifiser .klasse filutvidelse.)

Argumenter kan følge klassens navn, men de er valgfrie. I figur 1 er disse argumentene en, to, og tre. java skaper en String array (ved hjelp av Java Native Interface - JNI), og fyller hvert element med en referanse til a String objekt som inneholder tegnene som komponerer et argument. Når den er fullført, hoved() metoden kalles (ved hjelp av JNI) og sendte en referanse til String array.

Anta at du skulle skrive java-app * på kommandolinjen. Hva tror du kommandovinduet vil vise? Hvis du tror svaret er en stjerne, kan du sjekke ut figur 2.

Figur 2 viser App viser navnene på filene i samme katalog som App.klasse. Det viser seg at stjernetegnet representerer et jokertegn. Med andre ord representerer det alle filnavn i gjeldende katalog. Når java bygger den String array, den får en liste over alle den nåværende katalogens filnavn, og plasserer hvert filnavn i et eget String objekt, som deretter lagres som et element i matrisen.

Prøv å løpe java-app * *. Gjett hva som vises. Fordi hver stjerne forårsaker java for å få en liste over alle filnavnene, ser du to kopier av alle filnavnene i den gjeldende katalogen.

Anta at du skriver en Kalkulator applikasjon som multipliserer to tall med stjernen, som i java kalkulator 4 * 3. Basert på forrige diskusjon vil 4 og 3 ikke formere seg. Hvis du vil at stjernen skal tolkes som seg selv - og ikke et jokertegn - må du omgi den med et par doble anførselstegn. For eksempel vil du skrive java Kalkulator 4 "*" 3. Videre, hvis argumentet ditt inneholder innebygde mellomromstegn, og du vil inkludere disse mellomromstegnene som en del av argumentet, må du bruke dobbelt anførselstegn. Skriv for eksempel java App "mitt sammensatte argument" på kommandolinjen for å spesifisere mitt sammensatte argument som Appsitt eneste argument.

Vår første Java-applikasjon besto av en enkelt klasse. Du kan imidlertid også opprette applikasjoner som består av flere klasser. Videre kan hver klasse ha sin egen hoved() metode. For å se hvordan den situasjonen ser ut, sjekk ut Oppføring 2.

Oppføring 2. Fred.java

// Fred.java klasse A {public static void main (String [] dogs) {System.out.println ("Method A main () method"); }} klasse B {public static void main (String [] kyllinger) {System.out.println ("Class B main () method"); System.out.println ("Num args:" + kyllinger.lengde); }} 

Oppføring 2 viser kildekoden som er lagret i en fil som heter Fred.java. Den kildekoden består av to klasser: EN og B. Når det er samlet (som i javac Fred.java), ender du med to klassefiler: En klasse og B. klasse. Hvis du skulle skrive java A, vil du se Klasse A hovedmetode () i kommandovinduet. Men hvis du skulle skrive java B, vil kommandovinduet vises Klasse B hoved () metode, etterfulgt av en linje som begynner med Num argumenterer: og identifiserer antall argumenter som sendes på kommandolinjen.

Er Fred en applikasjon eller to applikasjoner? Svaret avhenger av ditt perspektiv. Normalt består en applikasjon av en enkelt klasse med en hoved() metode. Som du har sett, kjører du applikasjonen ved å spesifisere java og navnet på klassen som inneholder hoved(). Imidlertid kan du finne deg selv å plassere en hoved() metode i andre klasser (for feilsøkingsformål). For å forhindre forvirring for alle som bruker programmet ditt, må du fjerne alt hoved() metoder unntatt hoved() metode som starter søknaden, eller identifiser klassefilen som inneholder tjenestemannen hoved() metode før du distribuerer applikasjonen.

I tillegg til javainneholder Java 2 SDK en javaw program som du kan bruke til å kjøre applikasjoner. Det programmet er nesten identisk med java, bortsett fra det javaw viser ikke et kommandovindu når du kjører et program (med mindre du kjører programmet gjennom en Windows-batchfil, som automatisk åpner et kommandovindu). Anta for eksempel at klassefilen din heter GUIDemo lagres i c: \ jdk1.4 \ prosjekter katalog (forutsatt Windows). Du bestemmer deg for å lage en Windows-snarvei for å kjøre programmet, og velger følgende kommandolinje: java -cp c: \ jdk1.4 \ prosjekter GUIDemo. (De -cp alternativet forteller java hvor du kan finne en klassefil som heter GUIDemo.class.) Når du velger snarveien, dukker det opp et kommandovindu sammen med GUIDemoGUI-vindu. Men hvis du endrer deg java til javaw, vil du ikke se kommandovinduet.

Nå som du har hatt en sjanse til å spille med applikasjoner, la oss ta en titt på den andre kategorien av Java-programmer - applets.

Applets

An applet er et program som kjører i sammenheng med en nettleser som styrer appleten. Fordi et rektangulært område på websiden viser utdataene til en applet, blir applets beskrevet som innebygd i websidene. Videre, ved å ringe til bestemte metoder - som vi snart vil undersøke - administrerer nettleseren en applets livssyklus.

Klassefilene til en applet lastes ned automatisk til en brukers maskin når brukeren surfer til en webside som inneholder appleten. Når den er lastet ned, utfører nettleserens virtuelle maskin eller Java Plug-in-programvaren disse klassefilene. (Se Ressurser for en artikkel som utforsker Java Plug-in.)

Tenk deg en ondsinnet person som oppretter en applet som sletter filer, kaster bort papirpapir, stjeler passord eller annen sensitiv informasjon, og så videre. En applet med ubegrenset tilgang til en brukers maskin kan utføre alle disse ugjerningene. Av den grunn kan appletter bare utføre begrensede funksjoner. For eksempel kan ikke en applet utføre filrelaterte aktiviteter.

Sun har etablert en spesifikk (og involvert) prosedyre for å gjøre begrensede applets til ubegrensede applets. Imidlertid kan ubegrensede applikasjoner bare kjøres under brukerens tillatelse. (Vi vil utforske emnet i en fremtidig artikkel.) For å være en applet, må en - og bare en - av appletens klasser være i samsvar med følgende mønster:

offentlig klasse klassenavn utvider java.applet.Applet {} 

Det nødvendige offentlig nøkkelord gir nettleseren tilgang til appleten. De strekker nøkkelord angir det objektorienterte programmeringsbegrepet arv og antyder at klassenavn klasse arver appletfunksjoner fra en klasse som heter Applet (ligger i java.applet pakke - en organisasjonsmekanisme for klasser og klassefiler - som skal utforskes i en fremtidig artikkel).

Hver applet har en livssyklus. En applet initialiseres (en gang og bare en gang), startes og stoppes (en eller flere ganger i løpet av livet), og ødelegges (en og bare en gang). Nettleseren kaller en av fire metoder på viktige punkter i løpet av livssyklusen for å indikere at appleten har gått inn i en annen eksistensfase. Disse metodene er i det(), start(), Stoppe(), og ødelegge().

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