Ohjelmointi

Sovellukset, sovelmat ja hybridit

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ä Sovelluson 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.) Sovellustapaus, 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ää Sovellustavun koodin ohjeet. Joten miten juokset Sovellus? Katso kuva 1. Tämä kuvio osoittaa Sovellus suoritetaan komentoriviltä kolmella argumentilla: yksi, kaksija 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, kaksija 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 Sovellusainoa 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ä GUIDemoGUI-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().

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