Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

© Kozsik Tamás 2000-2006 Java Technológia Standard Edition.

Hasonló előadás


Az előadások a következő témára: "© Kozsik Tamás 2000-2006 Java Technológia Standard Edition."— Előadás másolata:

1 © Kozsik Tamás Java Technológia Standard Edition

2 © Kozsik Tamás A kódolás után... Forrásfájlok.java „Félig-meddig” lefordítjuk pl. javac Bájtkód.class Interpretáljuk pl. java Platformfüggetlenség, biztonság

3 © Kozsik Tamás Lerajzolva: Forrás class fájl Osztály betöltő Bájtkód ellenőrző JIT kódgenerátorInterpreter Platform Fordító

4 © Kozsik Tamás Fordítás Ha abban a könyvtárban vagyunk, ahol a fájl: javac Hello.java Ha eggyel lejjebb, pl. cd.. után javac udv/Hello.java Ha több fájlt is le akarunk fordítani javac udv/*.java

5 © Kozsik Tamás Fordítás (több fájl) Írjuk össze a lefordítandó forrásfájlok nevét egy fájlba, pl. a forrasok fájlba. $ cat forrasok Hello.java Szia.java Salut.java $

6 © Kozsik Tamás A fordítási egységek … több típusdefiníciót is tartalmazhatnak Mindegyikhez keletkezik egy.class fájl Csavar.java package raktár.adatok; public class Csavar extends Anyag {...} class CsavarMenet {...} A fordítás során két fájl keletkezik: Csavar.class CsavarMenet.class

7 © Kozsik Tamás A lefordított fájlok elhelyezése Követni kell a csomag-hierarchiát –különben a virtuális gép ( java ) tanácstalan lesz Alkönyvtárak létrehozása Például a raktar.adatok.Csavar osztály.class fájlját a raktár/adatok alkönyvtárba kell tenni raktár/adatok/Csavar.class

8 © Kozsik Tamás A -d kapcsoló Nem kell kézzel másolgatni: bízzuk rá a javac fordítóra Megmondjuk, mi legyen a célkönyvtár Azon belül felépíti a szükséges könyvtárstruktúrát javac -d. Csavar.java javac -d../classes Csavar.java

9 © Kozsik Tamás A források elhelyezése Javaslat: ugyanolyan struktúrában, mint a.class fájloknál, azaz követve a csomaghierarchiát. Pl.: src raktar adatok gui web classes raktar adatok gui web

10 © Kozsik Tamás Forrásfájlok elhelyezése (2) Lehetnek egy könyvtárszerkezetben a.class fájlokkal Lehetnek két különböző, de azonos szerkezetű könyvtárstruktúrában a forrás és a.class fájlok Lehetnek egész máshogy is, pl. sok könyvtárban szétszórva

11 © Kozsik Tamás A -sourcepath kapcsoló Ha sok könyvtárba vannak szétszórva a forrásfájlok, akkor használhatjuk a -sourcepath kapcsolót Megadható, hogy mely könyvtárakban kell keresni forrásfájlok után javac -sourcepath ~/src/java:~/projects/raktar DB.java

12 © Kozsik Tamás Hivatkozások a fordítási egységen kívülre Ha egy fordítási egység hivatkozik egy másik fordítási egységben levő típusra, akkor a javac fordító: –megpróbálja megtalálni a hozzá tartozó.class fájlt - ha egyáltalán le van már az a típus fordítva –ha nincs lefordítva, akkor megkeresi a megfelelő.java fájlt, és rekurzívan azt is lefordítja

13 © Kozsik Tamás Rekurzív fordítás A neve alapján keresi meg a hivatkozott típust tartalmazó forrásfájlt a javac –A fájlnévnek meg kell egyeznie a típusnévvel –A -sourcepath kapcsoló szerepe...

14 © Kozsik Tamás Hol keresse a.class fájlokat? Alapértelmezésben –a szabványos könyvtárakban és –az aktuális munkakönyvtárban A -classpath kapcsoló segítségével más is megadható javac -classpath ~/classes:. DB.java A szabványos könyvtárakban, a ~/classes könyvtárban és az aktuális munkakönyvtárban.

15 © Kozsik Tamás A -classpath kapcsoló Megadható több könyvtárnév, amelyekben a.class fájlokat keresheti a fordító –a könyvtárnevek elválasztásához UNIX alatt a : Windows alatt a ; használandó Nem csak könyvtárnevek, hanem.zip és.jar fájlok is megadhatók, azokban is keres A kapcsoló rövidebb alakja: -cp

16 © Kozsik Tamás Hogyan történik a keresés? javac -classpath ~/classes:. DB.java –Tegyük fel, hogy hivatkozás történik a raktar.adatok.Csavar osztályra. –A szabványos könyvtárakban nem találja. Ott java. és javax. kezdetű típusok vannak... –Keresi a ~/classes/raktar/adatok/Csavar.class fájlt –Ha az sincs, keresi a raktar/adatok/Csavar.class fájlt –Ha az sincs, keresi a forrását, a raktar/adatok/Csavar.java fájlt, hogy lefordítsa a -sourcepath kapcsoló alapján ha nincs megadva, akkor az aktuális könyvtárban

17 © Kozsik Tamás Osztálykeresési útvonal hagyományos megadása A CLASSPATH környezeti változó Manapság nem illendő használni –könnyen összekavarodnak a dolgok, ha több projekten is dolgozunk Helyette a -classpath kapcsoló

18 © Kozsik Tamás A javac fordító egyéb kapcsolói Szabványos kapcsolók, pl. -gnyomkövetési infók -Ooptimalizálás -targetkód verziószám (1.1, 1.2, …) -nowarnne legyenek figyelmeztetések -deprecation… erről még lesz szó… Nem szabványos kapcsolók –Későbbi/korábbi fordítók nem biztos, hogy ismerik –Pl. heap méretének beállítása

19 © Kozsik Tamás A virtuális gép indítása A java parancsnak is adhatunk kapcsolókat A -classpath ugyanúgy, mint fordításkor –az ott megadott helyeken keresi az osztályokat az osztálybetöltő Más szabványos kapcsolók, pl. -version Ha a főprogram nem névtelen csomagban van: teljes osztálynevet kell megadni java -classpath ~/classes:. raktar.Indit Mit is jelent a java Hello.class parancs?

20 © Kozsik Tamás Feladat Nézzük meg, milyen opciói vannak a fordítónak és a virtuális gépnek!

21 © Kozsik Tamás Deprecation Az API néhány eleme elavulhat az újabb és újabb verziók kihozatalakor –osztályok, interfészek, metódusok A deprecated szóval jelölik meg a dokumentációban Nem illeszkedik az aktuális Java szemlélethez –pl. internacionalizáció Újabb API verziók nem biztos, hogy támogatni fogják Használatuk kerülendő

22 © Kozsik Tamás Deprecated feloldása A fordító figyelmeztetést küld, ha deprecated elemet használunk Fordítsuk újra a -deprecation kapcsolóval Hibalistát kapunk azokról az elemekről, amelyek deprecated állapotúak A dokumentáció megadja, mi kell helyette Érdemes a javítást elvégezni, hogy a programunk hosszabb életű legyen...

23 © Kozsik Tamás Feladat Hozzunk létre egy java.util.Date objektumot a születési időnkkel, és írassuk ki. Tüntessük el a programunkból az elavult elemeket!

24 © Kozsik Tamás A -D kapcsoló A virtuális gépnek paraméterek adhatók át System properties - rendszerjellemzők A programból lekérdezhetőek Vannak automatikusan beállítottak, és mi is létrehozhatunk újabbakat a -D kapcsolóval

25 © Kozsik Tamás Példa import java.util.*; public class Jellemzok { public static void main(String[] args) { Properties p = System.getProperties(); Enumeration nevek = p.propertyNames(); while ( nevek.hasMoreElements() ) { String név = (String) nevek.nextElement(); String érték = p.getProperty(név); System.out.println(név + " = " + érték); } java -Dezaneve=valami Jellemzok

26 © Kozsik Tamás Szemelvények az eredményből (1) java -Dezaneve=valami Jellemzok java.version = 1.3 user.timezone = Europe/Paris java.specification.version = 1.2 java.vm.vendor = Sun Microsystems Inc. user.home = /h/teacher/kto java.vm.specification.version = 1.0 os.arch = sparc...

27 © Kozsik Tamás Szemelvények az eredményből (2) java -Dezaneve=valami Jellemzok... user.language = en user.name = kto path.separator = : file.separator = / user.dir = /h/mnt/pandora/userlv/home/teacher/kto ezaneve = valami...

28 © Kozsik Tamás Segédprogramok javacfordító javavirtuális gép javadocdokumentáció generálása jarJava ARchieve készítése...

29 © Kozsik Tamás javadoc: HTML dokumentáció A programszövegből a specifikációk kigyűjtése (csomagnevek, osztálynevek, adattagok, metódusok, kivételek...) Dokumentációs megjegyzések beillesztése /** … */ Speciális adatok a dokumentációs megjegyzéseken belül (ún. tag-ek)

30 © Kozsik Tamás javadoc neve - érték kivételek jelzése

31 © Kozsik Tamás /** Hagyományos verem Kozsik 1.0 */ public class Verem { /** A verem tartalma. */ java.util.Vector adatok = new java.util.Vector(); /** Betesz egy elemet a adat Amit betesz. */ public void push(Object adat){...} /** Kivesz egy elemet a Object A verem tetején levő UresException Ha üres a verem. */ public Object pop() throws UresException {...} }

32 © Kozsik Tamás javadoc meghívása A különféle hozzáférési kategóriák (public, protected, package, private) szerint lehet különböző részletességű dokumentációt készíteni Lehet saját formátumot definiálni (doclet) És van egy csomó kapcsoló (-classpath, -sourcepath, -d, stb.)

33 © Kozsik Tamás jar - Java ARchieve Lényegében zip formátum, kis extrákkal A jar program használata hasonlít a tar parancsra Archívum készítése: jar cvf classes.jar Foo.class Bar.class

34 © Kozsik Tamás Más fejlesztőeszközök Sok cég csinált már Java fordítót és virtuális gépet Például a böngészőprogramokban is saját szokott lenni –Helyette használhatunk plug-in virtuális gépet Fejlesztő eszközökben is szokott saját lenni Vannak hatékonyabbak is, mint a Sun cuccok


Letölteni ppt "© Kozsik Tamás 2000-2006 Java Technológia Standard Edition."

Hasonló előadás


Google Hirdetések