Programmēšana

Lietojumprogrammas, sīklietotnes un hibrīdi

Ja esat sekojis Java 101, jūs zināt, ka Jēkabs Veintraubs ir izveidojis lielisku rakstu sēriju, kas izstrādāta, lai palīdzētu Java iesācējiem kļūt par Java izstrādātājiem. Tomēr, tā kā Jēkabs vairs nevar turpināt šo kolonnu, JavaWorld ir nodevis man lāpu.

Jūs ātri atklāsiet, ka mans ceļš uz Java izstrādātāju iet citu ceļu. Piemēram, es labāk runāju par Java programmēšanas aspektiem, kas nav orientēti uz objektu (piemēram, tipi, mainīgie, operatori, izteicieni un paziņojumi), pirms iedziļināties tā objektorientētajā pusē. Es uzskatu, ka šī pieeja uzlabosies Java 101dabiskā plūsma no vienas tēmas uz otru - plūsma, kas vienmērīgi virzās no sākuma līdz beigām. Lai atvieglotu diskusiju, es laiku pa laikam iepazīstināšu ar progresīvu koncepciju, pirms to pilnībā izskaidroju. Rezultātā, strādājot ar šo un nākamajiem rakstiem, jūs sastapsieties ar īsiem paskaidrojumiem par progresīvākām tēmām.

Java 101 iepazīstinās ar daudzām piemēru programmām. Katra programma ir apkopota ar Sun Java 2 Platform, Standard Edition 1.4 versijas (pazīstama arī kā SDK 1.4) kompilatoru un pārbaudīta uz Windows 98 SE platformas. Lai gan es centīšos minimizēt Windows atsauces, tas ne vienmēr būs iespējams, tāpēc brīdināšu, kad raksts nomaldās Windows pasaulē.

Tā kā no servera viedokļa es neesmu pavadījis daudz laika, strādājot ar Java, šī sleja tiks koncentrēta uz klienta Java. Tas nenozīmē, ka mēs neizpētīsim tādas tēmas kā Remote Method Invocation un JDBC, kas savieno klienta un servera puses. Tomēr es neuzrādīšu servletus, Enterprise JavaBeans, Java Server Pages un citas servera puses tēmas. Lai iegūtu labāku priekšstatu par apskatāmajiem priekšmetiem, skatiet. Sānjoslu The Road Ahead Java 101 kursa izklāsts.

Šī mēneša rakstā es aplūkoju lietojumprogrammu, sīklietotņu un hibrīdprogrammu struktūru. Raugoties no lietojuma viedokļa, jūs varētu atrast dažus Jēkaba ​​iepriekšējo rakstu pārklāšanos, taču es arī ieviesīšu diezgan daudz jauna satura.

Programmu kategorijas

Java dod jums iespēju izveidot četru veidu programmas: lietojumprogrammas, sīklietotnes, hibrīdus un servletus. Es aplūkoju pirmās trīs programmas šajā rakstā. Lai uzzinātu vairāk par servletiem, lūdzu, skatiet Java 2 platformas Enterprise Edition dokumentāciju.

Pieteikumi

An pieteikumu ir atsevišķa programma, kas sastāv vismaz no vienas klases ar a galvenais () metodi. Šai metodei ir šāds paraksts:

public static void main (String [] argumenti)

The publiski atslēgvārds nozīmē galvenais () ir izsaucams ārpus tās klases, kurā tā ir deklarēta. The statisks atslēgvārds nozīmē galvenais () ir izsaucams bez objekta atsauces. Citiem vārdiem sakot, JVM nav jāizveido objekts no deklarētās klases galvenais () pirms zvana galvenais (). Visbeidzot spēkā neesošs atslēgvārds nozīmē galvenais () neatgriež vērtību.

Tāpat kā ar citām metodēm, galvenais () ir parametru saraksts, veidu saraksts un mainīgo nosaukumi. In galvenais ()gadījumā parādās tikai viens parametrs - argumentē. Šis parametrs tiek pasludināts kā atsauce uz masīvu Stīga objektiem. Katrā objektā ir argumenta saturs, kas programmas komandrindas veidā nodots lietojumprogrammai. Piezīme: Jums nav jāizmanto argumentē kā šī parametra nosaukums. Jūs varat tikpat viegli norādīt vistas, kā Stīgas [] vistas.

1. sarakstā tiek parādīts izsauktās lietojumprogrammas avota kods App. Šī lietojumprogramma izdrukā argumentu sarakstu, kas tiek nodots komandrindas veidā.

Saraksts 1. App.java

// App.java klase App {public static void main (String [] args) {System.out.println ("Komandu argumenti \ n"); par (int i = 0; i <args.length; i ++) System.out.println (args [i]); }} 

TEKSTS:

TEXTBOX_HEAD: komentāri

1. saraksts ilustrē paņēmienu, ko izmantoju programmu identificēšanai - avota faila augšdaļā ievietoju komentāru, kas identificē avota faila nosaukumu. Es uzskatu, ka šis komentārs ir noderīgs programmu izsekošanai. Ja jums nav zināms komentāra jēdziens, tas ir nekas cits kā avota koda dokumentācija, kurai ir nozīme tikai avota līmenī. Apkopojot pirmkodu, komentārs tiek izmests. Nākamajā mēnesī mēs vēlreiz izskatīsim komentārus.

: END_TEXTBOX

Kods App's galvenais () metode izsauc vienu no ārā objekta atsauces mainīgie println () metodes informācijas izvadei uz standarta izvades ierīci. Parasti šī ierīce ir komandu logs, piemēram, Microsoft Windows DOS logs, lai gan ierīci var novirzīt uz failu. (Šo novirzīšanu es parādīšu nākamajā rakstā.) Perioda raksturs atdala println () metodes zvans no ārā objekta atsauces mainīgais. Pagriezienā, ārā tiek deklarēts klasē, ko sauc Sistēma un atdalīts no Sistēma pēc perioda rakstura. Objekta atsauces mainīgais ir ļoti līdzīgs C vai C ++ rādītājam: Tas ir mainīgais, kas satur cita mainīgā adresi. Gaidāmajos rakstos jūs saņemsiet diezgan daudz ekspozīcijas ar objektu atsauces mainīgajiem.

Ja esat strādājis ar C vai C ++, jūs, iespējams, esat iepazinies ar for loop priekšraksta struktūru (kas avota kodā tiek parādīts, izmantojot atslēgvārdu) priekš). For loop paziņojums atkārtoti izpilda vienu vai vairākus priekšrakstus vai nu noteiktu skaitu reižu, vai bezgalīgi. (Turpmākajos rakstos es detalizēti izpētīšu for loop paziņojumu un citus paziņojumus.) Appgadījumā, priekš izpilda a System.out.println method izsaukums katram argumentam, kas šai programmai tika nodots komandrindā. Paziņojums arg.garums. Java valodā garums ir masīva īpašums, un tas atgriež masīva elementu skaitu.

Komandrindā ierakstiet javac App.java sastādīt App. Ja esat ievadījis visu, kā parādīts, jums vajadzētu iegūt klases failu ar nosaukumu App.klase kas satur Appbaita koda instrukcijas. Tātad, kā jūs skriet App? Apskatiet 1. attēlu. Šis attēls parāda App darbojas no komandrindas ar trim argumentiem: viens, divi, un trīs.

Piezīme: 1. attēlā parādīts App darbojas ar Windows 98 SE. Darbojas Unix un Linux App līdzīgi. Tomēr, palaižot zem Mac, jums, iespējams, būs jāpaveic nedaudz vairāk darba. Es labprāt parādītu, kā to izdarīt, bet es nekad neesmu lietojis Java Mac datorā.

The java programma izpilda lietojumprogrammu. Operētājsistēmā Windows šī programma tiek saglabāta izpildāmajā failā ar nosaukumu java.exe. Kā ar javac, java ir norādīts komandrindā. Klases faila nosaukums, kurā ir galvenais () pēc tam seko metode java.

The java programma meklē galvenais () metode klases failā. Ja tas neatrod galvenais (), tas izsniedz kļūdas ziņojumu. (Kā redzat no 1. attēla, jūs NEDRĪKST norādiet .klase faila paplašinājums.)

Argumenti var sekot klases nosaukumam, taču tie nav obligāti. 1. attēlā šie argumenti ir viens, divi, un trīs. java izveido a Stīga masīvs (izmantojot Java vietējo saskarni - JNI), un katru elementu aizpilda ar atsauci uz a Stīga objekts, kurā ir rakstzīmes, kas veido argumentu. Kad tas ir pabeigts, galvenais () metodi sauc (izmantojot JNI) un nodeva atsauci uz Stīga masīvs.

Pieņemsim, ka jums bija jāraksta java lietotne * komandrindā. Ko, jūsuprāt, parādīs komandu logs? Ja domājat, ka atbilde ir zvaigznīte, skatiet 2. attēlu.

2. attēlā parādīts App parādot failu nosaukumus, kas atrodas tajā pašā direktorijā kā App.klase. Izrādās, ka zvaigznītes raksturs apzīmē aizstājējzīmi. Citiem vārdiem sakot, tas apzīmē visus pašreizējā direktorijā esošos failu nosaukumus. Kad java būvē Stīga masīvs, tas iegūst visu pašreizējā direktorija failu nosaukumu sarakstu un ievieto katru faila nosaukumu atsevišķā vietā Stīga objekts, kas pēc tam tiek saglabāts kā elements masīvā.

Mēģiniet skriet java lietotne * *. Uzminiet, kas tiks parādīts. Jo katra zvaigznīte izraisa java lai iegūtu visu failu nosaukumu sarakstu, pašreizējā direktorijā redzēsit divas visu failu nosaukumu kopijas.

Pieņemsim, ka jūs rakstāt a Kalkulators programma, kas reizina divus skaitļus ar zvaigznīti, kā tas ir java kalkulators 4 * 3. Pamatojoties uz iepriekšējo diskusiju, 4. un 3. pavairot netiks. Ja vēlaties, lai zvaigznīte tiktu interpretēta kā pati par sevi, nevis aizstājējzīme, tā jāapņem ar divkāršu pēdiņu rakstzīmju pāri. Piemēram, jūs ierakstītu java Kalkulators 4 "*" 3. Turklāt, ja jūsu arguments satur iegultas atstarpes rakstzīmes un vēlaties iekļaut šīs atstarpes rakstzīmes kā daļu no argumenta, jums jāizmanto pēdiņas. Piemēram, ierakstiet java App "mans saliktais arguments" komandrindā, lai norādītu mans saliktais argumentsAppvienīgais arguments.

Mūsu pirmā Java lietojumprogramma sastāvēja no vienas klases. Tomēr jūs varat arī izveidot lietojumprogrammas, kas sastāv no vairākām klasēm. Turklāt katrai klasei var būt savs galvenais () metodi. Lai uzzinātu, kā šī situācija izskatās, skatiet 2. sarakstu.

Sarakstā 2. Fred.java

// Fred.java A klase {public static void main (String [] suņi) {System.out.println ("A klases galvenā () metode"); }} B klase {public static void main (String [] cāļi) {System.out.println ("B klases main ((metode)"); System.out.println ("Num args:" + cāļu garums); }} 

2. sarakstā tiek parādīts avota kods, kas saglabāts failā ar nosaukumu Fred.java. Šis pirmkods sastāv no divām klasēm: A un B. Kad sastādīts (kā javac Fred.java), jūs iegūstat divus klases failus: Klase un B.klase. Ja jūs rakstītu java A, jūs redzētu A klases galvenā () metode komandu logā. Tomēr, ja jūs rakstāt java B, tiks parādīts komandu logs B klases galvenā () metode, kam seko rinda, kas sākas ar Num args: un identificē komandrindā nodoto argumentu skaitu.

Ir Freds viens pieteikums vai divi pieteikumi? Atbilde ir atkarīga no jūsu perspektīvas. Parasti lietojumprogramma sastāv no vienas klases ar a galvenais () metodi. Kā redzējāt, jūs palaižat lietojumprogrammu, norādot java un tās klases nosaukums, kurā ir galvenais (). Tomēr jūs varat atrast sev vietu galvenais () metode citās klasēs (atkļūdošanas nolūkos). Lai novērstu neskaidrības visiem, kas izmanto jūsu programmu, noņemiet visus galvenais () metodes, izņemot galvenais () metodi, ar kuru tiek sākta lietojumprogramma, vai identificējiet klases failu, kurā ir ierēdnis galvenais () pirms lietojumprogrammas izvietošanas.

Papildus java, Java 2 SDK ietver a javaw programma, kuru varat izmantot, lai palaistu lietojumprogrammas. Šī programma ir gandrīz identiska java, izņemot to javaw palaižot lietojumprogrammu, netiek parādīts komandu logs (ja vien lietojumprogrammu nedarbojat, izmantojot Windows pakešfailu, kas automātiski atver komandu logu). Piemēram, pieņemsim, ka jūsu klases fails tiek saukts GUIDemo tiek glabāts c: \ jdk1.4 \ projekti direktorijā (pieņemot, ka ir Windows). Jūs nolemjat izveidot Windows saīsni šīs programmas darbībai un izvēlieties šādu komandrindu: java -cp c: \ jdk1.4 \ projektē GUIDemo. (The -cp opcija stāsta java kur atrast klases failu ar nosaukumu GUIDemo.class.) Atlasot saīsni, kopā ar logu tiek parādīts komandu logs GUIDemoGUI logs. Tomēr, ja maināt java uz javaw, komandu logs netiks rādīts.

Tagad, kad jums ir bijusi iespēja spēlēt ar lietojumprogrammām, apskatīsim otro Java programmu kategoriju - sīklietotnes.

Apletes

An sīklietotne ir lietojumprogramma, kas darbojas tīmekļa pārlūkprogrammas kontekstā, kas kontrolē sīklietotni. Tā kā tīmekļa lapas taisnstūrveida apgabals parāda sīklietotnes izvadi, sīklietotnes tiek aprakstītas kā iegultas vietnēs. Turklāt, izsaucot noteiktas metodes, kuras mēs drīz izpētīsim, pārlūks pārvalda sīklietotnes dzīves ciklu.

Apletes klases faili tiek automātiski lejupielādēti lietotāja datorā, kad lietotājs pārlūko vietni, kurā ir sīklietotne. Pēc lejupielādes pārlūkprogrammas virtuālā mašīna vai Java spraudņa programmatūra izpilda šos klases failus. (Skatiet raksta, kurā tiek pētīts Java spraudnis, resursus.)

Iedomājieties, ka ļaunprātīga persona izveido sīklietotni, kas izdzēš failus, izšķērdē printera papīru, nozog paroles vai citu sensitīvu informāciju utt. Sīklietotne ar neierobežotu piekļuvi lietotāja mašīnai varētu veikt visus šos pārkāpumus. Šī iemesla dēļ sīklietotnes var izpildīt tikai ierobežotas funkcijas. Piemēram, sīklietotne nevar veikt ar failu saistītas darbības.

Saule ir izveidojusi īpašu (un iesaistītu) procedūru ierobežoto sīklietotņu pārvēršanai par neierobežotām sīklietotnēm. Tomēr neierobežoti sīklietotnes var darboties tikai ar lietotāja atļauju. (Mēs izpētīsim šo tēmu nākamajā rakstā.) Lai būtu sīklietotne, vienai un tikai vienai sīklietotņu klasēm jāatbilst šādam paraugam:

sabiedrības klase klases_nosaukums paplašina java.applet.Applet {} 

Nepieciešamais publiski atslēgvārds nodrošina tīmekļa pārlūkprogrammai piekļuvi sīklietotnei. The pagarina atslēgvārds norāda uz objektorientētu mantošanas programmēšanas koncepciju un iesaka, ka klases_nosaukums klase manto sīklietotņu iespējas no klases, ko sauc Aplets (atrodas java.applet pakete - organizatoriskais mehānisms klasēm un klases failiem, kas jāizpēta nākamajā rakstā).

Katram sīklietotnei ir dzīves cikls. Sīklietotne tiek inicializēta (vienreiz un vienreiz), startēta un apturēta (vienu vai vairākas reizes dzīves laikā) un iznīcināta (vienreiz un vienreiz). Pārlūks izsauc vienu no četrām metodēm nozīmīgos dzīves cikla punktos, lai norādītu, ka sīklietotne ir iegājusi citā pastāvēšanas fāzē. Šīs metodes ir tajā(), sākt(), apstāties (), un iznīcināt().

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