Java Technológia Standard Edition

Slides:



Advertisements
Hasonló előadás
© Kozsik Tamás Különböző nyelvekhez igazítás Internationalization - i18n.
Advertisements

Osztály leszármaztatás
C++ programozási nyelv Gyakorlat hét
© Kozsik Tamás Appletek A Java nyelv elsődleges számú reklámja HTML oldalak aktívvá tevéséhez Kisalkalmazás WEB-böngésző által futtatott Java.
Programozás III KOLLEKCIÓK 2..
A Java programozási nyelv
Adatbányászati technikák (VISZM185)
Öröklődés 2..
HADOOP Korszerű Adatbázisok Elérés, Belépés Elérés: eszakigrid109.inf.elte.hu Belépés: felhasználó/jelszó: neptun-kód Manager oldalak:
LINUX/UNIX PARANCSOK.
RMI = Remote Method Invocation
© Kozsik Tamás Tömbök, kollekciók és egyéb alaposztályok.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Objektum-elvű programozás (OOP)
© Kozsik Tamás JavaBeans Nagyon divatos technológia Nem tévesztendő össze az Enterprise Java Beans technológiával Programozási konvenciók gyűjteménye.
Bevezetés a Java programozásba
10. előadás (2004. április 20.) A C előfordító (folytatás) Néhány hasznos compiler opció Egy tanulságos könyvtári függvény Változó hosszúságú argumentum.
Öröklődés Polimorfizmus Csomagok Absztrakt osztályok, interfészek
Fájlkezelés, IO Kivételkezelés Belső osztályok
Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]
Abstract osztályok és interface-ek Beolvasás és kiíratás 7. gyakorlat.
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Követelmények Bevezetés a Javába Első java program írása Dokumentációk
Fejlett Programozási Technológiák II. Világos Zsolt 1. gyakorlat.
Tömbök ismétlés Osztályok Java-ban Garbage collection
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
A Java programozási nyelvSoós Sándor 1/16 Java programozási nyelv 6. rész – Java a gyakorlatban Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Java programozási nyelv 3. rész – Osztályok I.
A C++ programozási nyelvSoós Sándor 1/12 C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
Java programozási nyelv 5. rész – Osztályok III.
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
C# tagfüggvények.
JSP és JavaBean JavaServer Pages és Java Beans Fabók Zsolt Általános Informatikai Tanszék Miskolci Egyetem.
C# tagfüggvények.
Készítette: Keszthelyi Zsolt
Csomagok.
Annotációk a Java 5 nyelvben Kozsik Tamás. Annotációk Módosítószavak bővítése A programszöveg elemeihez rendelhetők –Csomagokhoz, típusokhoz, metódusokhoz,
© Kozsik Tamás Csomagok. © Kozsik Tamás A program tagolása Típusdefiníciók (osztályok, interfészek) Metódusok Blokk utasítások Csomagok.
Kivételkezelés.
III. Java környezet 9. A Java nyelvről 10. Java programfejlesztés, JDK.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Hernyák Zoltán Programozási Nyelvek II.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
Java programozási nyelv Metódusok
Komoróczy Tamás 1 Java programozási nyelv A nyelv alapjai.
Java programozási nyelv Adatbekérés konzolról
Programozás III KOLLEKCIÓK.
Egyenesvonalú (lineáris) adatszerkezetek
Objektum orientált programozás 3. Függvények Nagy Szilvia.
Objektum orientált programozás
1 Objektum orientált programozás Öröklődés: többszörös öröklődés, konstruktorok, destruktorok, overloading Nagy Szilvia.
Apache Ant 2. gyakorlat Alkalmazásfejlesztés /2 Gyakorlat Zalatnai Csongor.
Programozás III KIVÉTEL – CSOMAG. CSOMAGOK Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek. A Java is csomagok halmaza: csomagokban.
Programozás III KOLLEKCIÓK.
Programozás III CSOMAG. CSOMAGOK Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek. A Java is csomagok halmaza: csomagokban van.
Függvények a C nyelvben 1 Függvényeket a következő esetekben szokás írni: Ha ugyanazt a tevékenységet többször is el kell végeznünk ugyanolyan típusú,
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
DLL használata és készítése Feladat
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 7. gyakorlat.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 6. gyakorlat.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Thread és Task.
Előadás másolata:

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

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 © Kozsik Tamás 2000-2006

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

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 © Kozsik Tamás 2000-2006

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 $ javac @forrasok © Kozsik Tamás 2000-2006

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 © Kozsik Tamás 2000-2006

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 © Kozsik Tamás 2000-2006

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 © Kozsik Tamás 2000-2006

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 © Kozsik Tamás 2000-2006

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 © Kozsik Tamás 2000-2006

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 © Kozsik Tamás 2000-2006

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 © Kozsik Tamás 2000-2006

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... © Kozsik Tamás 2000-2006

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. © Kozsik Tamás 2000-2006

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 © Kozsik Tamás 2000-2006

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 © Kozsik Tamás 2000-2006

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ó © Kozsik Tamás 2000-2006

A javac fordító egyéb kapcsolói Szabványos kapcsolók, pl. -g nyomkövetési infók -O optimalizálás -target kód verziószám (1.1, 1.2, …) -nowarn ne 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 © Kozsik Tamás 2000-2006

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? © Kozsik Tamás 2000-2006

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

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ő © Kozsik Tamás 2000-2006

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... © Kozsik Tamás 2000-2006

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! © Kozsik Tamás 2000-2006

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 © Kozsik Tamás 2000-2006

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 © Kozsik Tamás 2000-2006

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 ... © Kozsik Tamás 2000-2006

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 © Kozsik Tamás 2000-2006

Segédprogramok javac fordító java virtuális gép javadoc dokumentáció generálása jar Java ARchieve készítése ... © Kozsik Tamás 2000-2006

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) © Kozsik Tamás 2000-2006

javadoc tag-ek @author szerző neve - email címe @version verziószám @param paraméter dokumentálása @return visszatérési érték dokum. @throws kiváltott kivételek dokum. @see hivatkozás, link @deprecated elavultság jelzése © Kozsik Tamás 2000-2006

/** Hagyományos verem adattípus. @author Kozsik Tamás @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 veremből. @result Object A verem tetején levő elem. @throws UresException Ha üres a verem. public Object pop() throws UresException {...} } © Kozsik Tamás 2000-2006

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.) © Kozsik Tamás 2000-2006

jar cvf classes.jar Foo.class Bar.class 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 © Kozsik Tamás 2000-2006

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 © Kozsik Tamás 2000-2006