Java tutorial Java Technologia Standard Edition
Copyright á 2000-2001, Kozsik Tama s
Lerajzolva:
A kodola s uta n... „Forra sfa jlok „é Fe lig-meddigí lefordıtjuk „Ba jtkod „Interpreta ljuk
.java pl. javac .class pl. java
„Platformfu ggetlense g, biztonsa g
Osztaly betőlt˝
Forra s
Ba jtkod ellen˝rz˝
Fordıto
class fa jl
Interpreter
JIT kodgenera tor Platform
Fordıta s „Ha abban a kőnyvta rban vagyunk, ahol a fa jl: javac Hello.java „Ha eggyel lejjebb, pl. cd .. uta n javac udv/Hello.java
„Ha tőbb fa jlt is le akarunk fordıtani javac udv/*.java
Fordıta s (tőbb fa jl) „Irjuk őssze a lefordıtando forra sfa jlok neve t egy fa jlba, pl. a forrasok fa jlba. $ cat forrasok Hello.java Szia.java Salut.java $ javac @forrasok
1 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
A fordıta si egyse gek „– tőbb tıpusdefinıciot is tartalmazhatnak „Mindegyikhez keletkezik egy .class fa jl Csavar.java package raktar.adatok; public class Csavar extends Anyag {...} class CsavarMenet {...}
A lefordıtott fa jlok elhelyeze se „Kővetni kell a csomag-hierarchia t ú ku lőnben a virtua lis ge p (java) tana cstalan lesz
„Alkőnyvta rak le trehoza sa „Pe lda ul a raktar.adatok.Csavar oszta ly .class fa jlja t a raktar/adatok alkőnyvta rba kell tenni raktar/adatok/Csavar.class
„A fordıta s sora n ke t fa jl keletkezik: Csavar.class
CsavarMenet.class
A forra sok elhelyeze se
A -d kapcsolo „Nem kell ke zzel ma solgatni: bızzuk ra a javac fordıtora „Megmondjuk, mi legyen a ce lkőnyvta r „Azon belu l fele pıti a szu kse ges kőnyvta rstruktűra t javac -d . Csavar.java javac -d ../classes Csavar.java
„Javaslat: ugyanolyan struktűra ban, mint a .class fa jlokna l, azaz kővetve a csomaghierarchia t. Pl.: src raktar adatok gui web classes raktar adatok gui web
Forra sfa jlok elhelyeze se (2) „Lehetnek egy kőnyvta rszerkezetben a .class fa jlokkal „Lehetnek ke t ku lőnbőz˝, de azonos szerkezetÚ kőnyvta rstruktűra ban a forra s e s a .class fa jlok „Lehetnek ege sz ma shogy is, pl. sok kőnyvta rban sze tszorva
Java tutorial Copyright á 2000-2001, Kozsik Tama s
2 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
A -sourcepath kapcsolo „Ha sok kőnyvta rba vannak sze tszorva a forra sfa jlok, akkor haszna lhatjuk a -sourcepath kapcsolot „Megadhato, hogy mely kőnyvta rakban kell keresni forra sfa jlok uta n
Java tutorial Copyright á 2000-2001, Kozsik Tama s
javac -sourcepath ~/src/java:~/projects/raktar DB.java
Hivatkoza sok a fordıta si egyse gen kıvu lre „Ha egy fordıta si egyse g hivatkozik egy ma sik fordıta si egyse gben lev˝ tıpusra, akkor a javac fordıto: ú megproba lja megtala lni a hozza tartozo .class fa jlt - ha egya ltala n le van ma r az a tıpus fordıtva ú ha nincs lefordıtva, akkor megkeresi a megfelel˝ .java fa jlt, e s rekurzıvan azt is lefordıtja
Hol keresse a .class fa jlokat? „Alape rtelmeze sben ú a szabva nyos kőnyvta rakban e s ú az aktua lis munkakőnyvta rban
Rekurzıv fordıta s „A neve alapja n keresi meg a hivatkozott tıpust tartalmazo forra sfa jlt a javac ú A fa jlne vnek meg kell egyeznie a tıpusne vvel ú A -sourcepath kapcsolo szerepe...
A -classpath kapcsolo „Megadhato tőbb kőnyvta rne v, amelyekben a .class fa jlokat keresheti a fordıto
„A -classpath kapcsolo segıtse ge vel ma s is megadhato
ú a ko nyvtarnevek elvalasztasahoz UNIX alatt a : Windows alatt a ; hasznaland
javac -classpath ~/classes:. DB.java
„Nem csak kőnyvta rnevek, hanem .zip e s .jar fa jlok is megadhatok, azokban is keres „A kapcsolo rővidebb alakja: -cp
A szabva nyos kőnyvta rakban, a ~/classes kőnyvta rban e s az aktua lis munkakőnyvta rban.
3 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Hogyan tőrte nik a kerese s? javac -classpath ~/classes:. DB.java
ú Tegyu k fel, hogy hivatkoza s tőrte nik a raktar.adatok.Csavar oszta lyra. ú A szabva nyos kőnyvta rakban nem tala lja. „Ott java. e s javax. kezdetÚ tıpusok vannak...
ú Keresi a ~/classes/raktar/adatok/Csavar.class fa jlt ú Ha az sincs, keresi a raktar/adatok/Csavar.class fa jlt ú Ha az sincs, keresi a forra sa t, a raktar/adatok/Csavar.java fa jlt, hogy lefordıtsa
Oszta lykerese si űtvonal hagyoma nyos megada sa „A CLASSPATH kőrnyezeti va ltozo „Manapsa g nem illend˝ haszna lni ú kőnnyen ősszekavarodnak a dolgok, ha tőbb projekten is dolgozunk
„Helyette a -classpath kapcsolo
„a -sourcepath kapcsolo alapja n „ha nincs megadva, akkor az aktua lis kőnyvta rban
A javac fordıto egye b kapcsoloi „Szabva nyos kapcsolok, pl.
Java tutorial Copyright á 2000-2001, Kozsik Tama s
-g -O -target -nowarn -deprecation
nyomkővete si infok optimaliza la s kod verziosza m (1.1, 1.2, – ) ne legyenek figyelmeztete sek – err˝l me g lesz szo–
„Nem szabva nyos kapcsolok ú Ke s˝bbi/kora bbi fordıtok nem biztos, hogy ismerik ú Pl. heap me rete nek bea llıta sa
A virtua lis ge p indıta sa „A java parancsnak is adhatunk kapcsolokat „A -classpath ugyanűgy, mint fordıta skor ú az ott megadott helyeken keresi az oszta lyokat az oszta lybetőlt˝
Feladat „Ne zzu k meg, milyen opcioi vannak a fordıtonak e s a virtua lis ge pnek!
„Ma s szabva nyos kapcsolok, pl. -version „Ha a f˝program nem ne vtelen csomagban van: teljes oszta lynevet kell megadni java -classpath ~/classes:. raktar.Indit
„Mit is jelent a java Hello.class parancs?
4 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Deprecation „Az API ne ha ny eleme elavulhat az űjabb e s űjabb verziok kihozatalakor ú oszta lyok, interfe szek, metodusok
„A deprecated szoval jelőlik meg a dokumenta cioban „Nem illeszkedik az aktua lis Java szemle lethez ú pl. internacionaliza cio
„U jabb API verziok nem biztos, hogy ta mogatni fogja k „Haszna latuk keru lend˝
Deprecated felolda sa „A fordıto figyelmeztete st ku ld, ha deprecated elemet haszna lunk „Fordıtsuk űjra a -deprecation kapcsoloval „Hibalista t kapunk azokrol az elemekr˝l, amelyek deprecated a llapotűak „A dokumenta cio megadja, mi kell helyette „E rdemes a javıta st elve gezni, hogy a programunk hosszabb e letÚ legyen...
Feladat „Hozzunk le tre egy java.util.Date objektumot a szu lete si id˝nkkel, e s ırassuk ki. Tu ntessu k el a programunkbol az elavult elemeket!
A -D kapcsolo „A virtua lis ge pnek parame terek adhatok a t „System properties - rendszerjellemz˝k „A programbol leke rdezhet˝ek „Vannak automatikusan bea llıtottak, e s mi is le trehozhatunk űjabbakat a -D kapcsoloval
Java tutorial Copyright á 2000-2001, Kozsik Tama s
Pe 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 nev = (String) nevek.nextElement(); String ertek = p.getProperty(nev); System.out.println(nev + " = " + ertek); } } } java -Dezaneve=valami Jellemzok
5 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
Szemelve nyek az eredme nyb˝l (1)
Szemelve nyek az eredme nyb˝l (2)
java -Dezaneve=valami Jellemzok
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
... user.language = en user.name = kto path.separator = : file.separator = / user.dir = /h/mnt/pandora/userlv/home/teacher/kto ezaneve = valami ...
...
Sege dprogramok Java tutorial Copyright á 2000-2001, Kozsik Tama s
javadoc: HTML dokumenta cio „A programszővegb˝l a specifika ciok kigyÚjte se (csomagnevek, oszta lynevek, adattagok, metodusok, kive telek...) „Dokumenta cios megjegyze sek beilleszte se /** – */ „Specia lis adatok a dokumenta cios megjegyze seken belu l (űn. tag-ek)
„javac „java „javadoc „jar „...
fordıto virtua lis ge p dokumenta cio genera la sa Java ARchieve ke szıte se
javadoc tag-ek „@author „@version „@param „@return „@throws „@see „@deprecated
szerz˝ neve - email cıme verziosza m parame ter dokumenta la sa visszate re si e rte k dokum. kiva ltott kive telek dokum. hivatkoza s, link elavultsa g jelze se
6 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
/** Hagyomanyos verem adattıpus. @author Kozsik Tamas @version 1.0 */ public class Verem { /** A verem tartalma. */ java.util.Vector adatok = new java.util.Vector(); /** Betesz egy elemet a verembe. @see #pop @param adat Amit betesz. */ public void push(Object adat){...} /** Kivesz egy elemet a verembol. @result Object A verem tetejen levo elem. @throws UresException Ha ures a verem. */ public Object pop() throws UresException {...} }
jar - Java ARchieve „Le nyege ben zip forma tum, kis extra kkal „A jar program haszna lata hasonlıt a tar parancsra „Archıvum ke szıte se:
javadoc meghıva sa „A ku lőnfe le hozza fe re si kategoria k (public, protected, package, private) szerint lehet ku lőnbőz˝ re szletesse gÚ dokumenta ciot ke szıteni „Lehet saja t forma tumot definia lni (doclet) „E s van egy csomo kapcsolo (-classpath, -sourcepath, -d, stb.)
Ma s fejleszt˝eszkőzők „Sok ce g csina lt ma r Java fordıtot e s virtua lis ge pet „Pe lda ul a bőnge sz˝programokban is saja t szokott lenni ú Helyette haszna lhatunk plug-in virtua lis ge pet
jar cvf classes.jar Foo.class Bar.class
„Fejleszt˝ eszkőzőkben is szokott saja t lenni „Vannak hate konyabbak is, mint a Sun cuccok
Java tutorial Copyright á 2000-2001, Kozsik Tama s
7 PDF created with FinePrint pdfFactory trial version http://www.fineprint.com