Jos olet seurannut Java 101, tiedät, että Jacob Weintraub on luonut erinomaisen artikkelisarjan, joka on suunniteltu auttamaan Java-aloittelijoita tulemaan Java-kehittäjiksi. Koska Jaakob ei kuitenkaan voi enää jatkaa tätä saraketta, JavaWorld on välittänyt taskulampun minulle.
Huomaat nopeasti, että matkani Java-kehittäjäksi tulee eri polkua. Esimerkiksi, mieluummin puhun mieluummin Java-ohjelmointinäkökohdista, jotka eivät ole olio-orientoituneita (kuten tyypit, muuttujat, operaattorit, lausekkeet ja lauseet), ennen kuin syvenen sen olioihin. Uskon, että lähestymistapa paranee Java 101luonnollinen virta yhdestä aiheesta toiseen - virtaus, joka liikkuu saumattomasti alusta loppuun. Keskustelun helpottamiseksi esitän toisinaan edistyneen konseptin, ennen kuin selitän sen täysin. Tämän seurauksena saat lyhyitä selityksiä edistyneemmistä aiheista työskennellessäsi tämän ja tulevien artikkeleiden läpi.
Java 101 esittelee monia esimerkkiohjelmia. Jokainen ohjelma on koottu Sunin Java 2 Platform, Standard Edition version 1.4 (tunnetaan myös nimellä SDK 1.4) kääntäjällä ja testattu Windows 98 SE -alustalla. Vaikka yritän pitää Windows-viitteet mahdollisimman pieninä, se ei aina ole mahdollista, joten varoitan sinua, kun artikkeli harhauttaa Windowsin maailmaan.
Koska en ole viettänyt paljon aikaa Java-palvelun kanssa palvelimen näkökulmasta, tässä sarakkeessa keskitytään asiakaspuolen Java-palvelimeen. Tämä ei tarkoita sitä, ettemme tutkisi aiheita, kuten Remote Method Invocation ja JDBC, jotka yhdistävät asiakas- ja palvelinpuolet. En kuitenkaan esitä palvelimia, Enterprise JavaBeansia, Java Server Pagesia ja muita palvelinpuolen aiheita. Saadaksesi paremman käsityksen käsittelemistäni aiheista, katso sivun sivupalkki The Road Ahead Java 101 kurssin pääpiirteet.
Tämän kuukauden artikkelissa keskustelen sovellus-, appletti- ja hybridiohjelmien rakenteesta. Sovelluksen näkökulmasta saatat löytää päällekkäisyyksiä Jacobin aikaisemmista artikkeleista, mutta esitän myös melko paljon uutta sisältöä.
Ohjelmaluokat
Java antaa sinulle mahdollisuuden luoda neljän tyyppisiä ohjelmia: sovelluksia, sovelmia, hybridit ja servletit. Keskustelen tämän artikkelin kolmesta ensimmäisestä ohjelmasta. Lisätietoja servlet-sovelluksista on Java 2 Platform, Enterprise Edition -dokumentaatiossa.
Sovellukset
An sovellus on erillinen ohjelma, joka koostuu vähintään yhdestä luokasta, jonka a main ()
menetelmä. Menetelmässä on seuraava allekirjoitus:
public staattinen void main (String [] väittää)
julkinen
avainsana tarkoittaa main ()
on soitettavissa sen luokan ulkopuolelta, johon se on ilmoitettu. staattinen
avainsana tarkoittaa main ()
on soitettavissa ilman objektiviittausta. Toisin sanoen, JVM: n ei tarvitse luoda objektia ilmoitettavasta luokasta main ()
ennen soittamista main ()
. Lopuksi mitätön
avainsana tarkoittaa main ()
ei palauta arvoa.
Kuten muillakin menetelmillä, main ()
on parametriluettelo, luettelo tyypeistä ja muuttujien nimistä. Sisään main ()
tapauksessa vain yksi parametri ilmestyy - väittää
. Kyseinen parametri julistetaan viittaukseksi - tunnetaan myös nimellä - osoitteen ryhmään Merkkijono
esineitä. Jokainen objekti sisältää argumentin sisällön, joka välitetään sovellukselle ohjelman komentorivin kautta. merkintä: Sinun ei tarvitse käyttää väittää
parametrin nimellä. Voit määrittää yhtä helposti kanoja
, kuten String-kanat
.
Listaus 1 esittää kutsutun sovelluksen lähdekoodin Sovellus
. Tämä sovellus tulostaa luettelon argumenteista, jotka välitetään itselleen komentorivin kautta.
Listaus 1. App.java
// App.java-luokka App {public static void main (String [] args) {System.out.println ("Komento-argumentit \ n"); for (int i = 0; i <args.pituus; i ++) System.out.println (args [i]); }}
TEKSTILAATIKKO:
TEXTBOX_HEAD: Kommentit
Listaus 1 kuvaa tekniikkaa, jota käytän ohjelmien tunnistamiseen - laitan lähdetiedoston yläosaan kommentin, joka tunnistaa lähdetiedoston nimen. Minusta kommentti on hyödyllinen ohjelmien seurannassa. Jos et ole perehtynyt kommentin käsitteeseen, se ei ole muuta kuin lähdekoodidokumentaatio, jolla on merkitystä vain lähdetasolla. Kun lähdekoodi on koottu, kommentti heitetään pois. Katsomme kommentteja uudelleen ensi kuussa.
: END_TEXTBOX
Koodi sisällä Sovellus
on main ()
menetelmä kutsuu yhtä ulos
olion viitemuuttujat println ()
menetelmät tietojen lähettämiseksi vakiolähtölaitteelle. Tämä laite on yleensä komentoikkuna, kuten Microsoft Windows DOS -ikkuna, vaikka laite voidaan ohjata tiedostoon. (Esitän tämän uudelleenohjauksen seuraavassa artikkelissa.) Pistemerkki erottaa println ()
menetelmäpuhelu ulos
olion viitemuuttuja. Puolestaan ulos
ilmoitetaan luokassa nimeltä Järjestelmä
ja erotettu Järjestelmä
pistemerkillä. Kohdeviittausmuuttuja muistuttaa läheisesti C- tai C ++ -osoitinta: Se on muuttuja, joka sisältää toisen muuttujan osoitteen. Saat melko paljon altistusta objektien viitemuuttujille tulevissa artikkeleissa.
Jos olet työskennellyt C: n tai C ++: n kanssa, olet todennäköisesti perehtynyt for loop -sovelluksen rakenteeseen (joka näkyy lähdekoodissa avainsanan kautta) varten
). For loop -lauseke suorittaa toistuvasti yhden tai useamman käskyn joko tietyn määrän kertoja tai loputtomiin. (Tulevissa artikkeleissa tutkin yksityiskohtaisesti for loop -lausetta ja muita lausuntoja.) Sovellus
tapaus, varten
suorittaa a System.out.println
method-kutsu jokaiselle ohjelmalle komentorivillä välitetylle argumentille. Ilmoitus arg. pituus
. Java-kielellä pituus
on taulukon ominaisuus, ja se palauttaa matriisielementtien määrän.
Kirjoita komentoriville javac App.java
kääntää Sovellus
. Jos olet kirjoittanut kaiken kuvan osoittamalla tavalla, sinun pitäisi päätyä luokkatiedostoon nimeltä App. Luokka
joka sisältää Sovellus
tavun koodin ohjeet. Joten miten juokset Sovellus
? Katso kuva 1. Tämä kuvio osoittaa Sovellus
suoritetaan komentoriviltä kolmella argumentilla: yksi
, kaksi
ja kolme
.
merkintä: Kuva 1 esittää Sovellus
käynnissä Windows 98 SE: ssä. Unix ja Linux toimivat Sovellus
samoin. Kuitenkin, kun suoritat Macin alla, sinun on todennäköisesti suoritettava hieman enemmän työtä. Haluaisin näyttää sinulle kuinka se tehdään, mutta en ole koskaan käyttänyt Javaa Macissa.
java
Ohjelma suorittaa sovelluksen. Windowsissa kyseinen ohjelma on tallennettu suoritettavaan tiedostoon nimeltä java.exe
. Kuten javac
, java
on määritetty komentorivillä. Luokkatiedoston nimi, joka sisältää main ()
menetelmä seuraa sitten java
.
java
Ohjelma etsii main ()
menetelmä luokkatiedostossa. Jos se ei löydä main ()
, se lähettää virheilmoituksen. (Kuten voit nähdä kuvasta 1, sinä ÄLÄ määritä .luokka
tiedostopääte.)
Argumentit voivat seurata luokan nimeä, mutta ne ovat valinnaisia. Kuvassa 1 nämä argumentit ovat yksi
, kaksi
ja kolme
. java
luo Merkkijono
taulukko (Java Native Interface - JNI: n kautta), ja täyttää jokaisen elementin viitteellä a Merkkijono
objekti, joka sisältää argumentin muodostavat merkit. Kun olet valmis, main ()
menetelmää kutsutaan (JNI: n kautta) ja se välitti viitteen Merkkijono
taulukko.
Oletetaan, että kirjoitit java-sovellus *
komentorivillä. Mitä luulet komentoikkunan näyttävän? Jos luulet vastauksen olevan tähti, katso kuva 2.
Kuva 2 esittää Sovellus
näyttää samassa hakemistossa olevien tiedostojen nimet App. Luokka
. On käynyt ilmi, että tähtimerkki edustaa jokerimerkkiä. Toisin sanoen se edustaa kaikkia nykyisen hakemiston tiedostonimiä. Kun java
rakentaa Merkkijono
taulukko, se hakee luettelon kaikista nykyisen hakemiston tiedostonimistä ja sijoittaa kukin tiedostonimet erilliseen Merkkijono
objekti, joka sitten tallennetaan elementtinä matriisiin.
Yritä juosta java-sovellus * *
. Arvaa mitä näytetään. Koska jokainen tähti aiheuttaa java
Saadaksesi luettelon kaikista tiedostojen nimistä, näet kaksi kopiota kaikista nykyisen hakemiston tiedostojen nimistä.
Oletetaan, että kirjoitat a Laskin
sovellus, joka kertoo kaksi numeroa tähdellä, kuten kohdassa java-laskin 4 * 3
. Edellisen keskustelun perusteella 4 ja 3 eivät lisäänny. Jos haluat, että tähti tulkitaan itsestään - eikä jokerimerkiksi -, sinun on ympäröitävä se kahdella lainausmerkillä. Esimerkiksi kirjoitat java-laskin 4 "*" 3
. Jos argumenttisi sisältää upotettuja välilyöntejä ja haluat sisällyttää nämä välilyönnit osaksi argumenttia, sinun on käytettävä lainausmerkkejä. Kirjoita esimerkiksi java-sovellus "yhdistetty argumenttini"
komentorivillä määrittääksesi yhdistetty argumenttini
kuten Sovellus
ainoa argumentti.
Ensimmäinen Java-sovelluksemme koostui yhdestä luokasta. Voit kuitenkin luoda myös sovelluksia, jotka koostuvat useista luokista. Lisäksi jokaisella luokalla voi olla oma main ()
menetelmä. Katso Listaus 2 nähdäksesi miltä tilanne näyttää.
Listaus 2. Fred.java
// Fred.java luokka A {public static void main (String [] -koirat) {System.out.println ("Class A main () -menetelmä"); }} luokka B {public static void main (String [] kanat) {System.out.println ("luokan B main () menetelmä"); System.out.println ("Num args:" + kananpituus); }}
Listaus 2 näyttää lähdekoodin, joka on tallennettu nimettyyn tiedostoon Fred.java
. Lähdekoodi koostuu kahdesta luokasta: A
ja B
. Kun kootaan (kuten javac Fred.java
), saat kaksi luokkatiedostoa: Luokka
ja B. luokka
. Jos kirjoitat java A.
, näet Luokan A pää () menetelmä
komentoikkunassa. Jos kuitenkin kirjoitat java B
, komentoikkuna tulee näkyviin Luokan B pää () menetelmä
, jota seuraa rivi, joka alkaa Num args:
ja tunnistaa komentoriville lähetettyjen argumenttien määrän.
On Fred
yksi sovellus tai kaksi sovellusta? Vastaus riippuu näkökulmastasi. Normaalisti sovellus koostuu yhdestä luokasta, jossa on a main ()
menetelmä. Kuten olet nähnyt, suoritat sovelluksen määrittelemällä java
ja sen luokan nimi, joka sisältää main ()
. Saatat kuitenkin löytää itsesi sijoittamalla main ()
menetelmä muissa luokissa (virheenkorjausta varten). Poista kaikki, jotta ohjelmaa käyttävät eivät pääse sekaannukseen main ()
menetelmiä lukuun ottamatta main ()
menetelmä, jolla sovellus käynnistetään, tai tunnista virkamies sisältävä luokkatiedosto main ()
ennen sovelluksen käyttöönottoa.
Lisäksi java
, Java 2 SDK sisältää a javaw
Ohjelma, jolla voit suorittaa sovelluksia. Tuo ohjelma on melkein identtinen java
, paitsi että javaw
ei näytä komentoikkunaa sovellusta suoritettaessa (ellet aja sovellusta Windowsin komentotiedoston kautta, joka avaa komentoikkunan automaattisesti). Oletetaan esimerkiksi, että luokkatiedostosi on nimeltään GUIDemo
on tallennettu c: \ jdk1.4 \ projektit
hakemistoon (olettaen Windows). Päätät luoda Windowsin pikakuvakkeen kyseisen ohjelman ajamiseksi ja valitset seuraavan komentorivin: java -cp c: \ jdk1.4 \ projektoi GUIDemon
. ( -cp
vaihtoehto kertoo java
mistä löytää luokkatiedosto nimeltä GUIDemo.class
.) Kun valitset pikakuvakkeen, komentoikkuna avautuu yhdessä GUIDemo
GUI-ikkuna. Kuitenkin, jos muutat java
että javaw
, et näe komentoikkunaa.
Nyt kun sinulla on ollut mahdollisuus pelata sovelluksilla, katsotaanpa Java-ohjelmien toista luokkaa - sovelmia.
Appletit
An sovelma on sovellus, joka toimii sovelman ohjaavan verkkoselaimen yhteydessä. Koska verkkosivun suorakulmainen alue näyttää sovelman lähdön, sovelmien kuvataan upotettavan verkkosivuihin. Lisäksi kutsumalla tiettyjä menetelmiä - joita tutkimme pian - selain hallitsee sovelman elinkaarta.
Applet-luokan tiedostot latautuvat automaattisesti käyttäjän koneelle, kun käyttäjä selaa verkkosovellusta, joka sisältää sovelman. Lataamisen jälkeen selaimen virtuaalikone tai Java Plug-in -ohjelmisto suorittaa nämä luokkatiedostot. (Katso artikkelia Resurssit artikkelista, joka tutkii Java-laajennusta.)
Kuvittele, että pahantahtoinen henkilö luo sovelman, joka poistaa tiedostoja, tuhlaa tulostuspaperia, varastaa salasanoja tai muita arkaluontoisia tietoja jne. Appletti, jolla on rajoittamaton pääsy käyttäjän koneeseen, voi suorittaa kaikki nämä rikkomukset. Tästä syystä sovelmat voivat suorittaa vain rajoitettuja toimintoja. Esimerkiksi sovelma ei voi suorittaa mitään tiedostoihin liittyviä toimintoja.
Sun on ottanut käyttöön erityisen (ja mukana olevan) menettelyn rajoitettujen sovelmien muuttamiseksi rajoittamattomiksi sovelmiksi. Rajoittamattomat sovelmat voivat kuitenkin toimia vain käyttäjän luvalla. (Tutkimme kyseistä aihetta tulevassa artikkelissa.) Ollakseen appletti, yhden - ja vain yhden - appletin luokista on noudatettava seuraavaa mallia:
julkinen luokka luokan nimi laajentaa java.applet.Applet {}
Vaadittu julkinen
avainsana antaa verkkoselaimelle pääsyn sovelmaan. ulottuu
avainsana ilmaisee perinnön olio-ohjelmoinnin käsitteen ja ehdottaa, että luokan nimi
luokka perii sovelman ominaisuudet nimeltään luokalta Appletti
(sijaitsee java.applet
(organisaatiomekanismi luokille ja luokkatiedostoille - tutkitaan tulevassa artikkelissa).
Jokaisella sovelmalla on elinkaari. Appletti alustetaan (kerran ja vain kerran), käynnistetään ja pysäytetään (yksi tai useampi kerta elämänsä aikana) ja tuhotaan (kerran ja vain kerran). Selain kutsuu yhtä neljästä menetelmästä merkittävissä kohdissa kyseisen elinkaaren aikana osoittaakseen, että sovelma on siirtynyt toiseen olemassaolovaiheeseen. Nuo menetelmät ovat sen sisällä()
, alkaa()
, lopettaa()
ja tuhota()
.