Programavimas

Programos, programėlės ir hibridai

Jei sekėte „Java 101“, žinote, kad Jacobas Weintraubas sukūrė puikią straipsnių seriją, skirtą padėti „Java“ naujokams tapti „Java“ kūrėjais. Tačiau, kadangi Jokūbas nebegali tęsti šios kolonos, „JavaWorld“ perdavė man deglą.

Greitai sužinosite, kad mano kelias tapti „Java“ kūrėju eina kitu keliu. Pvz., Prieš gilindamasis į objektyvią jos pusę, aš norėčiau pakalbėti apie „Java“ programavimo aspektus, kurie nėra orientuoti į objektą (pvz., Tipai, kintamieji, operatoriai, išraiškos ir teiginiai). Tikiu, kad šis požiūris sustiprės „Java 101“natūralus srautas iš vienos temos į kitą - srautas, kuris sklandžiai juda nuo pradžios iki pabaigos. Siekdamas palengvinti diskusiją, kartais pateiksiu išplėstinę koncepciją, kol ją visiškai paaiškinsiu. Todėl dirbdami su šiuo ir būsimais straipsniais, trumpai paaiškinsite pažangesnes temas.

„Java 101“ pristatys daugybę programų pavyzdžių. Kiekviena programa yra sudaryta naudojant „Sun“ „Java 2 Platform“, „Standard Edition“ 1.4 versijos (dar vadinamos SDK 1.4) kompiliatoriumi ir išbandyta „Windows 98 SE“ platformoje. Nors stengsiuosi, kad „Windows“ nuorodų būtų kuo mažiau, tai ne visada bus įmanoma, todėl perspėsiu, kai straipsnis nuklysta į „Windows“ pasaulį.

Kadangi iš serverio perspektyvos neskyriau daug laiko, dirbdamas su „Java“, šiame stulpelyje daugiausia dėmesio bus skiriama kliento „Java“. Tai nereiškia, kad nenagrinėsime tokių temų kaip Nuotolinio metodo iškvietimas ir JDBC, kurios sujungia kliento ir serverio puses. Tačiau aš nepateiksiu servletų, „Enterprise JavaBeans“, „Java Server Pages“ ir kitų serverio temų. Norėdami geriau suprasti temas, kurias apžvelgsiu, žr. Šoninę juostą „Kelias į priekį“ „Java 101“ kurso metmenys.

Šio mėnesio straipsnyje aptarsiu programų, programėlių ir hibridinių programų struktūrą. Žvelgiant iš programos perspektyvos, galite pastebėti ankstesnių Jokūbo straipsnių sutapimus, bet aš taip pat pristatysiu nemažai naujo turinio.

Programos kategorijos

„Java“ suteikia galimybę kurti keturių rūšių programas: programas, programėles, hibridus ir servletus. Aptariau tris pirmąsias šio straipsnio programas. Norėdami sužinoti daugiau apie servletus, skaitykite „Java 2 Platform“, „Enterprise Edition“ dokumentaciją.

Programos

An taikymas yra atskira programa, susidedanti iš bent vienos klasės su a pagrindinis () metodas. Šis metodas turi tokį parašą:

public static void main (String [] argumentai)

visuomenės raktinis žodis reiškia pagrindinis () yra iškviečiamas iš klasės, kurioje jis deklaruotas, ribų. statinis raktinis žodis reiškia pagrindinis () yra iškviečiamas be objekto nuorodos. Kitaip tariant, JVM nereikia kurti objekto iš deklaruojamos klasės pagrindinis () prieš skambindamas pagrindinis (). Galiausiai tuštuma raktinis žodis reiškia pagrindinis () negrąžina vertės.

Kaip ir taikant kitus metodus, pagrindinis () turi parametrų sąrašą, tipų sąrašą ir kintamųjų pavadinimus. Į pagrindinis ()atveju rodomas tik vienas parametras - argumentuoja. Tas parametras yra paskelbtas nuoroda į masyvą, kuris taip pat žinomas kaip adresas Stygos objektai. Kiekviename objekte yra programos komandinės eilutės pagalba programai perduoto argumento turinys. Pastaba: Jums nereikia naudoti argumentuoja kaip to parametro pavadinimas. Jūs taip pat lengvai galite nurodyti viščiukų, kaip ir Styginiai viščiukai.

1 sąraše pateikiamas vadinamos programos šaltinio kodas Program. Ta programa išspausdina sąrašą argumentų, kurie jai perduodami naudojant komandinę eilutę.

Sąrašas 1. App.java

// App.java klasės programa {public static void main (String [] args) {System.out.println ("Komandos argumentai \ n"); už (int i = 0; i <args.length; i ++) System.out.println (args [i]); }} 

TEKSTO DĖŽUTĖ:

TEXTBOX_HEAD: komentarai

1 sąrašas iliustruoja metodą, kurį naudoju programoms identifikuoti - šaltinio failo viršuje dedu komentarą, identifikuojantį šaltinio failo pavadinimą. Manau, kad tas komentaras yra naudingas sekant programas. Jei nesate susipažinę su komentaro sąvoka, tai yra ne kas kita, kaip šaltinio kodo dokumentacija, turinti prasmę tik šaltinio lygiu. Sudarant šaltinio kodą, komentaras išmetamas. Kitą mėnesį vėl peržiūrėsime komentarus.

: END_TEXTBOX

Kodas per Program's pagrindinis () metodas vadina vieną iš išėjo objekto nuorodos kintamojo println () informacijos išvedimo į standartinį išvesties įrenginį metodai. Paprastai tas įrenginys yra komandų langas, pvz., „Microsoft Windows“ DOS langas, nors įrenginį galima nukreipti į failą. (Aš tą peradresavimą pademonstruosiu tolesniame straipsnyje.) Laikotarpio simbolis skiria println () metodo skambutis iš išėjo objekto nuorodos kintamasis. Savo ruožtu išėjo yra deklaruojamas klasėje, vadinamoje Sistema ir atskirta nuo Sistema pagal laikotarpio veikėją. Objekto nuorodos kintamasis labai panašus į C arba C ++ žymeklį: tai kintamasis, kuriame yra kito kintamojo adresas. Būsimuose straipsniuose gausite nemažai objekto nuorodos kintamųjų poveikio.

Jei dirbote su „C“ arba „C ++“, tikriausiai esate susipažinę su „for loop“ sakinio struktūra (kuri rodoma šaltinio kode per raktinį žodį) dėl). „For loop“ sakinys pakartotinai vykdo vieną ar daugiau sakinių nurodytą skaičių kartų arba neribotą laiką. (Būsimuose straipsniuose aš išsamiai išnagrinėsiu for loop ciklą ir kitus teiginius.) Programatveju, dėl vykdo a System.out.println metodo iškvietimas kiekvienam argumentui, kuris buvo perduotas tai komandai komandinėje eilutėje. Pastebėti argumentai.ilgis. „Java“ kalboje ilgio yra masyvo ypatybė ir pateikia masyvo elementų skaičių.

Komandos eilutėje įveskite javac App.java sudaryti Program. Jei viską įvedėte taip, kaip parodyta, turėtumėte gauti klasės failą, vadinamą Programos klasė kad yra Programbaito kodo instrukcijos. Taigi, kaip jūs bėgate Program? Pažvelkite į 1 paveikslą Program paleisti iš komandinės eilutės su trim argumentais: vienas, duir trys.

Pastaba: 1 paveiksle parodyta Program veikia naudojant „Windows 98 SE“. „Unix“ ir „Linux“ veikia Program panašiai. Tačiau paleisdami „Mac“, tikriausiai turėsite atlikti šiek tiek daugiau darbų. Mielai parodyčiau, kaip tai padaryti, tačiau „Mac“ niekada nenaudojau „Java“.

java programa vykdo programą. Sistemoje „Windows“ ta programa saugoma vykdomajame faile, vadinamame java.exe. Kaip ir su javac, java yra nurodytas komandinėje eilutėje. Klasės failo, kuriame yra, pavadinimas pagrindinis () metodas java.

java programa ieško pagrindinis () metodas klasės faile. Jei neranda pagrindinis (), jis pateikia klaidos pranešimą. (Kaip matote iš 1 paveikslo, jūs NE nurodykite .klasė failo plėtinys.)

Argumentai gali būti po klasės pavadinimo, tačiau jie yra neprivalomi. 1 paveiksle šie argumentai yra vienas, duir trys. java sukuria a Stygos masyvą (naudojant „Java Native Interface“ - JNI) ir užpildo kiekvieną elementą su nuoroda į a Stygos objektas, kuriame yra argumentą sudarantys simboliai. Kai baigsite, pagrindinis () metodas yra vadinamas (JNI būdu) ir perdavė nuorodą į Stygos masyvas.

Tarkime, kad turėjote spausdinti „Java“ programa * komandinėje eilutėje. Kaip manote, ką galėtų parodyti komandų langas? Jei manote, kad atsakymas yra žvaigždutė, patikrinkite 2 paveikslą.

2 paveiksle parodyta Program rodomi failų, esančių tame pačiame kataloge, pavadinimai Programos klasė. Pasirodo, kad žvaigždute pažymėtas simbolis reiškia pakaitos simbolį. Kitaip tariant, tai reiškia visus failų pavadinimus dabartiniame kataloge. Kada java stato Stygos masyvas, jis gauna visų dabartinių katalogų failų vardų sąrašą ir kiekvieną failo pavadinimą talpina atskirai Stygos objektas, kuris tada yra saugomas kaip masyvo elementas.

Pabandykite bėgti „Java“ programa * *. Spėk, kas bus rodoma. Nes kiekviena žvaigždutė sukelia java Norėdami gauti visų failų pavadinimų sąrašą, pamatysite dvi visų failų pavadinimų kopijas dabartiniame kataloge.

Tarkime, kad parašote a Skaičiuoklė programa, kuri daugina du skaičius su žvaigždute, kaip „Java“ skaičiuoklė 4 * 3. Remiantis ankstesne diskusija, 4 ir 3 nesidaugins. Jei norite, kad žvaigždutė būtų interpretuojama kaip pati, o ne pakaitinė simbolis, turite ją apgaubti dvigubų citatų simbolių pora. Pavyzdžiui, įveskite java skaičiuoklė 4 "*" 3. Be to, jei jūsų argumente yra įterptųjų tarpo simbolių ir norite įtraukti tuos tarpo ženklus kaip argumento dalį, turite naudoti dvigubas kabutes. Pavyzdžiui, įveskite „Java“ programa „mano sudėtinis argumentas“ komandinėje eilutėje nurodyti mano sudėtinis argumentas kaip Programvienintelis argumentas.

Pirmąją mūsų „Java“ programą sudarė viena klasė. Tačiau taip pat galite sukurti programas, sudarytas iš kelių klasių. Be to, kiekviena klasė gali turėti savo pagrindinis () metodas. Norėdami pamatyti, kaip atrodo ši situacija, peržiūrėkite 2 sąrašą.

Sąrašas 2. Fred.java

// Fred.java A klasė {public static void main (String [] šunys) {System.out.println ("A klasės pagrindinis () metodas"); }} B klasė {public static void main (String [] viščiukai) {System.out.println ("B klasės main () metodas"); System.out.println ("Num args:" + viščiukų ilgis); }} 

2 sąraše pateikiamas šaltinio kodas, saugomas vadinamame faile Fred.java. Šį šaltinio kodą sudaro dvi klasės: A ir B. Sudarius (kaip javac Fred.java), jūs gausite du klasės failus: Klasė ir B.klasė. Jei rašytum java A, pamatytum A klasės pagrindinis () metodas komandos lange. Tačiau, jei norėtumėte spausdinti java B, bus parodytas komandos langas B klasės pagrindinis () metodas, po kurio eina eilutė, kuri prasideda Num args: ir nurodo komandų eilutėje perduotų argumentų skaičių.

Yra Fredas viena paraiška ar dvi paraiškos? Atsakymas priklauso nuo jūsų perspektyvos. Paprastai programą sudaro viena klasė su a pagrindinis () metodas. Kaip matėte, paleisite programą nurodydami java ir klasės, kurioje yra, pavadinimas pagrindinis (). Tačiau galite atsidurti pagrindinis () metodas kitose klasėse (derinimo tikslams). Norėdami išvengti painiavos tiems, kurie naudojasi jūsų programa, pašalinkite visus pagrindinis () metodai, išskyrus pagrindinis () metodą, paleidžiantį programą, arba nustatyti klasės bylą, kurioje yra pareigūnas pagrindinis () metodas prieš diegiant programą.

Be to java, „Java 2 SDK“ yra a javaw programa, kuria galite paleisti programas. Ta programa yra beveik identiška java, išskyrus tai javaw vykdant programą nerodo komandų lango (nebent paleidžiate programą per „Windows“ paketinį failą, kuris automatiškai atidaro komandų langą). Pvz., Tarkime, kad jūsų klasės failas vadinamas „GUIDemo“ yra saugomas c: \ jdk1.4 \ projektai katalogas (darant prielaidą, kad „Windows“). Nusprendėte sukurti tos programos vykdymui skirtą „Windows“ spartųjį klavišą ir pasirinkite šią komandinę eilutę: java -cp c: \ jdk1.4 \ projektuoja GUIDemo. ( -cp variantas pasako java kur rasti klasės failą, vadinamą GUIDemo.class.) Kai pasirenkate nuorodą, kartu su pasirodo komandų langas „GUIDemo“GUI langas. Tačiau jei pasikeisite java į javaw, komandų lango nematysite.

Dabar, kai turėjote galimybę žaisti su programomis, pažvelkime į antrąją „Java“ programų kategoriją - programėles.

Appletai

An programėlė yra programa, veikianti žiniatinklio naršyklės, valdančios programėlę, kontekste. Kadangi stačiakampio formos tinklalapio srityje rodoma programėlės išvestis, aprašoma, kad programėlės yra įterptos į tinklalapius. Be to, skambindama tam tikrais metodais, kuriuos netrukus ištirsime, naršyklė valdo programėlės gyvavimo ciklą.

Programėlės klasės failai automatiškai atsisiunčiami į vartotojo mašiną, kai vartotojas naršo į tinklalapį, kuriame yra programėlė. Atsisiųsdami naršyklės virtualioji mašina arba „Java Plug-in“ programinė įranga vykdo tuos klasės failus. (Žr. Straipsnio, kuriame nagrinėjamas „Java“ papildinys, šaltiniai.)

Įsivaizduokite, kad piktavalis sukuria programėlę, kuri ištrina failus, švaisto spausdintuvo popierių, pavagia slaptažodžius ar kitą neskelbtiną informaciją ir pan. Programėlė, turinti neribotą prieigą prie vartotojo mašinos, galėtų atlikti visus tuos netinkamus veiksmus. Dėl šios priežasties programėlės gali vykdyti tik ribotas funkcijas. Pavyzdžiui, programėlė negali atlikti jokių su failais susijusių veiksmų.

„Sun“ nustatė specialią (ir su ja susijusią) procedūrą, kaip ribotų programėlių paversti neribojamomis programėlėmis. Tačiau neribotos programėlės gali veikti tik gavus vartotojo leidimą. (Mes nagrinėsime tą temą būsimame straipsnyje.) Kad būtų programėlė, viena ir tik viena iš programėlių klasių turi atitikti šį modelį:

visuomenės klasė klasės_pavadinimas pratęsia java.applet.Applet {} 

Reikalingas visuomenės raktažodis suteikia žiniatinklio naršyklei prieigą prie programėlės. tęsiasi raktinis žodis nurodo objektyvaus paveldėjimo programavimo koncepciją ir siūlo, kad klasės_pavadinimas klasė paveldi programėlių galimybes iš vadinamos klasės Applet (įsikūręs java.apletas paketas - organizacinis klasių ir klasių failų mechanizmas, kuris bus nagrinėjamas būsimame straipsnyje).

Kiekviena programėlė turi savo gyvenimo ciklą. Programėlė inicijuojama (vieną ir tik vieną kartą), paleidžiama ir sustabdoma (vieną ar daugiau kartų per savo gyvenimą) ir sunaikinama (vieną ir tik vieną kartą). Naršyklė iškviečia vieną iš keturių metodų reikšmingais to gyvenimo ciklo momentais, kad parodytų, jog programėlė perėjo į kitą egzistavimo etapą. Tie metodai yra inicijuoti (), pradžia (), sustabdyti()ir sunaikinti ().

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