Académique Documents
Professionnel Documents
Culture Documents
0
Z2/29 A Java programozsi nyelv ltalnos jellemzi. A statikus main fggvny szerepe. A kir utasts. Vltozk, opertorok, tpuskonverzik. Egyszer tpusok, adatok trolsa tmbkben. Tmbk ltrehozsa, a tmbk hasznlata. Tbbdimenzis tmbk. Tmbk rendezse. A Java programozsi nyelv ltalnos jellemzi Egyszer Objektumorientlt Elosztott Robosztus Biztonsgos Architektra semleges Hordozhat Interpretlt Nagy teljestmny Tbbszl Dinamikus A statikus main fggvny szerepe Amikor a JVM elindul, felkutatja azt az osztlyt, amelyiknek a nevt megadtuk neki a parancssorba, majd egy klnleges alak tagfggvnyt keres, a main tagfggvnyt. Ezt kveten a JVM mindent lefuttat, ami a main tagfggvny kapcsos zrjelei kztt tallhat. Minden Java-alkalmazsban lennie kell legalbb egy osztlynak, s legalbb egy main tagfggvnynek. public static void main (String[] args) { } public: nyolvnos, teht mindenki hozzfrhet void: visszaadott rtk tpusa main: tagfggvny neve static: az osztlyhoz tartozik String[] args: a tagfggvny argumentumai. Ennek a tagfggvnynek egy karakterlncokbl ll tmbt kell tadni, amelynek neve args { }: tagfggvny nyit s zr kapcsos zrjelei A kir utasts A konzolra kiiratni a System.out.print, printf es println utasitasokkal lehet, az els a parameterkent kapott valtozot egyszeren csak kiirja, a printf formazott sztringet ir ki, a formazast is meg kell adni neki parameterkent, mig a println a parameterkent kapott valtozot es egy sortorest fog a konzolra kiirni. Vltozk A Java nyelv azonosti betvel kell, hogy kezddjenek, s betvel vagy szmmal kell, hogy folytatdjanak. A betk kz itt az _ s a $ jel is beletartozik. pl.: abra, __abra$$A, EGY_SZM. Egy azonost hossza tetszleges lehet. A nyelv kulcsszavai nem lehetnek azonostk. A const s goto kulcsszavak nem hasznltak, de foglaltak. Hasonlan nem lehetnek azonostk a nyelv alaptpusaihoz kapcsold literlok sem: null, true, false. Opertorok A kifejezsek kirtkelsi sorrendjt alapveten a benne szerepl opertorok hatrozzk meg. Egy kifejezsben annak eldntsre, hogy melyik opertor lesz elszr vgrehajtva, hrom szably alkalmazhat: elszr a legbels zrjelen belli kifejezs lesz kirtkelve ha nincs zrjel, akkor elszr a nagyobb priorits opertor lesz vgrehajtva ha tbb opertor prioritsa is egyenl, akkor balrl jobbra, illetve nhny esetben jobbrl balra lesznek azok kirtkelve A mveletek tbbsge balrl jobbra rtkeldik ki: a+b+c ugyanaz, mint (a+b)+c. Az rtkadsok viszont jobbrl balra rtkeldnek ki: a=b=c ugyanaz, mint a=(b=c). Postfix opertorok [] tmb indexelse, pl.: array[12] . minstett nv, pl.: java.lang.System.out.println( ); (kif) zrjelezett kifejezs, pl.: (12+3) - 4
Tmbk ltrehozsa, a tmbk hasznlata Java nyelvben a [] jellssel lehet egy tmb tpust megadni. A tmbelemek indexelse 0 -val kezddik. A [] jel rhat az alaptpus, de a vltoz neve utn is: int[] ia, ib; // ia s ib tmb defincija int ic[], id; // alternatv forma, de itt csak ic lesz tmb Az gy ltrehozott vltoz tetszleges hosszsg, egsz szmokbl ll tmbre hivatkozhat. A tmb rtket a new opertorral lehet ltrehozni: ia = new int[20]; A tmb tpusok teht nem primitv tpusok, a tmb tpus vltozk objektumhivatkozst tartalmaznak. A tmb ismeri sajt mrett, amit meg is lehet tle krdezni a length mez hasznlatval: System.out.println(ia.length); A tmb mrete ismeretben el tudja dnteni, hogy egy adott index rvnyes -e. Ezt a futtat rendszer minden tmbelem-hivatkozsakor ellenrzi is. Amennyiben az index nem rvnyes, egy IndexOutOfBouindsException vltdik ki. A tmb tpusok sok tekintetben az osztlyokra hasonltanak mg az rkldsben is rszt vesznek. A programoz ugyan nem tud egy tmb tpust egy j osztly ltrehozsakor stpusknt felhasznlni, de a tmb tpusok kztt fennllhatnak bzistpus-altpus kapcsolatok. Tmbliterl Tmbk a kvetkez formban inicializlhatak: String[] szinek = {piros, fehr, zld}; Lehetsg van gynevezett nv nlkli tmbk ltrehozsra is a new opertor tpusos formjban: szinek = new String[]{piros, fehr, zld}; Tbbdimenzis tmbk A Java nyelvben nincs tbbdimenzis tmb, de van ms megolds, mivel egy tmb akr tmbkbl is llhat, melynek hossza mg klnbz is lehet: int[][] iaa = new int[3][]; // egy 3 elem, tmbkbl ll tmb ltrehozsa for (int i=0; i<iaa.length; i++) { iaa[i] = new int[i+1]; // i+1 elem tmb ltrehozsa for (int j=0; j<iaa[i].length; j++) iaa[i][j]=0; //tmbelemek inicializlsa } Ez a kdrszlet egy hromszg-mtrix ltrehozst s inicializlst vgzi. Tmbk rendezse int[] n = new int[]{-32,43,53,54,32,0,65,63,98,43,23}; boolean rendezett = false; while (!rendezett){ rendezett = true; for (int j=1; j<n.length; j++){ if (n[j-1]>n[j]){ int v = n[j-1]; n[j-1] = n[j]; n[j] = v; rendezett = false; } } } System.out.println(Arrays.toString(n));
Z2/35 Java kisalkalmazsok (applet) ksztse s futtatsa, appletek biztonsga. Az applet -ek elnyei s htrnyai. Java kisalkalmazsok (applet) ksztse Minden applet az Applet osztly leszrmazottja kell, hogy legyen, az appletspecifikus alaptpusokat pedig a java.applet csomag tartalmazza. Alaprtelmezett osztlybetltjk a sun.applet.AppletClassLosader a keressi tvonal mentn, a gyorsttrazs figyelembe vtelvel intzi a kdbetltst. Mivel a java.net.URLClassLoader leszrmazottja, gy biztostja szksg esetn a hlzaton keresztl trtn letltst. Digitlisan alrt archvumok kezelst specializcija, a sun.plugin.security.PluginClassLoader vgzi. Mivel az appletek pldnyostsa automatikusan, a begyaz HTML oldalt megjelent bngszben fut virtulis gpen trtnik, ezrt minden applet osztlynak publikusnak kell lennie, valamint rendelkeznie kell publikus paramter nlkli konstruktorral! Futtatsa Minden egyes applet futtatsa kln programszlban, egyes megvalstsok esetn pedig mg kln programszlcsoportban trtnik. A felhasznlt bngszprogram a tartalmaz HTML dokumentum megjelentsekor az applet begyazsnak helyn kihagy az indtsi paramtereknek megfelel mret tglalapot, majd a megadott osztlynv vagy szerializlt forma alapjn pldnyostja s elindtja az appletet. Mivel ennek elvgzse elg sokig is eltarthat, ezen id alatt az applet helyn az gynevezett indtsi kp jelenik meg. Alaprtelmezett esetben az applet terletnek kzepn fehr krlapon a Java log ltszik, melyet sugrirny, aktivitst jelz animci jr krbe, alatta pedig egy llapotjelz csk mutatja a letlts elrehaladottsgt, a bngsz sttuszsorban pedig a Loading Java Applet szveg jelenik meg. Amennyiben az applet betltsekor hiba lpne fel, a kijellt terletn vagy a bngsz sttuszsorban megjelenik a hibazenet, a bal fels sarokban pedig egy figyelmeztet ikon lesz lthat. Ekkor jobb egrrel az appletre kattintva egy felbukkan men hvhat el, amely lehetv teszi a Java konzol indtst, illetve informci megjelentst az alkalmazott Java futtatkrnyezetrl. Begyaz krnyezet Az applet sikeres betltse s pldnyostsa utn a futtat krnyezet ltrehoz s a setSub metdussal bellt egy AppletStub interfszt megvalst hozzrendelt objektumot, melyen keresztl az adott applet a bngszvel tartja a kapcsolatot. A begyazsi krnyezetet, azaz magt az appletet megjelent programot egy AppletContext interfszt megvalst objektum reprezentlja, melynek elrse a getAppletContext metdussal lehetsges. Ha egy appletet nem egy bngszprogram pldnyost automatikusan, akkor ezen objektumok sem jnnek ltre, gy a bngszspecifikus lehetsgek nem llnak az ilyen appletek rendelkezsre. Ugyanez a helyzet az applet konstruktornak vgrehajtsakor is, ugyanis ekkor mg nem trtnt meg a begyaz objektum belltsa. Appletek biztonsga Az appletekre vonatkoz biztonsgi megktsek betartst egy java.lang.SecurityManager osztly appletek ltal le nem cserlhet pldnya ellenrzi az applet futsa alatt, gy megktsek minden bngszprogramban msok. Alkalmazs esetn nem kerl belltsra alaprtelmezett SecurityManager. Az aktulis SecurityManager pldnyt a java.lang.System osztly tartalmazza. Minden knyesebb Java metdus vgrehajtsa eltt a futtatrendszer ellenrzi, hogy az adott mveletet engedlyezi -e az aktulis SecurityManager. Az ellenrzs rendszerint gy trtnik: SeyurityManager security = System.getSecurityManager(); if(security!=null) security.checkXXX(argumentum, ); Ha a program nem megengedett mveletet akar vgrehajtani, akkor a SecurityManager egy java.lang.SecurityException kivtelt vlt ki. Ha a mvelet engedlyezett, akkor a megfelel ellenrzmetdus nem csinl semmit. Az albbi felsorols a jelenlegi bngszk ltal megvalstott megszortsokat illusztrlja. Az appletek nem hasznlthatnak native metdusokat nem tlthetnek be programknyvtrakat (Runtime.load Libray) a futtat gpen nem engedlyezett semmilyen fjlmvelet szmukra, erforrsfjlokat is csak a sajt codebase vagy documentbase knyvtruk alatt rhetnek el csak az applet kdjt tartalmaz gppel hozhatnak ltre hlzati kapcsolatot a vgrehajt szmtgpen nem engedlyezett semmilyen program futtatsa szmukra (Runtime.exec) nem ltjk az sszes rendszerparamtert, a java.lang.System getProperty metdusval ltalban csak a kvetkezket tudjk olvasni: os.arch, os.name, os.version, browser, browser.vendor, browser.version,