Bevezetés a Java programozási nyelvbe

Hasonló dokumentumok
Bevezetés a Java programozási nyelvbe

Java I. A Java programozási nyelv

Java I. A Java programozási nyelv

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

Szoftvertechnológia alapjai Java előadások

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Java programozási nyelv 6. rész Java a gyakorlatban

Abstract osztályok és interface-ek. 7-dik gyakorlat

Java programozási nyelv 5. rész Osztályok III.

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Java programozási nyelv 7. rész Java osztálykönyvtár 1.

Programozás I. 1. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozási nyelvek JAVA EA+GY 1. gyakolat

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

OOP: Java 8.Gy: Abstract osztályok, interfészek

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Programozási nyelvek Java

Segédanyag: Java alkalmazások gyakorlat

Segédanyag: Java alkalmazások gyakorlat

Java. JIT (Just in Time) fordítók alkalmazása, optimalizálás AOT (Ahead of Time) fordítók alkalmazásának lehetősége

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Már megismert fogalmak áttekintése

Enterprise JavaBeans 1.4 platform (EJB 2.0)

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Osztálytervezés és implementációs ajánlások

I. Bevezetés. 1. ábra A Java "logója"

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás

JAVA SE/ME tanfolyam tematika

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Interfészek. PPT 2007/2008 tavasz.

Java programozási nyelv 4. rész Osztályok II.

Programozás III A JAVA TECHNOLÓGIA LÉNYEGE. Többlépcsős fordítás JAVA PLATFORM. Platformfüggetlenség

A Java EE 5 plattform

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Osztálytervezés és implementációs ajánlások

JAVA PROGRAMOZÁS 2.ELŐADÁS

Java II. I A Java programozási nyelv alapelemei

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

OOP #14 (referencia-elv)

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

JNDI - alapok. Java Naming and Directory Interface

Programozási nyelvek Java

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Objektumorientált programozás C# nyelven

Java IX. telkezelés a Java-ban

Java IX. telkezelés a Java-ban

Mi a különbség az extends és az implements között. Mikor melyiket kell használni? Comperable-t megvalósító oasztályokban össze lehet hasonlitani

A Java nyelv. Bevezetés, alapok Elek Tibor

Java programozási nyelv

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

OOP alapok Egy OOP nyelvet három fontos dolog jellemez. egységbezárás ( encapsulation objektumoknak öröklés ( inheritance

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

Programozási nyelv Java

Java II. I A Java programozási nyelv alapelemei

1. Bevezetés A C++ nem objektumorientált újdonságai 3

Osztott alkalmazások fejlesztési technológiái Áttekintés

A Java nyelv IV. rész - appletek, hálózati alkalmazások fejlesztése

ISA szimulátor objektum-orientált modell (C++)

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás

Java programozási nyelv 9. rész Kivételkezelés

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

Programozási technológia I.

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Ismerkedés a Python programnyelvvel. és annak micropython változatával

Programozási nyelvek II.: JAVA

Programozási nyelvek Java

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

Programozás I. Első ZH segédlet

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

Interfészek. Programozás II. előadás. Szénási Sándor.

JAVA ALKALMAZÁSOK 1. ELŐADÁS 2/22/2017 1

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

CORBA. Mi a CORBA? A CORBA felépítése

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Programozás módszertan p.1/46

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

A C programozási nyelv III. Pointerek és tömbök.

Programozási technológia I 1. gyakorlat. A Java nyelvi alapjai, a NetBeans környezet

S ha kettészelik is: balfelöl belőle Valamivel mindig - Valamivel mindiq több marad. (Nyugat )

JAVA PROGRAMOZÁS 3.ELŐADÁS

AWK programozás, minták, vezérlési szerkezetek

OOP és UML Áttekintés

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés


Komponens alapú programozás Bevezetés

A C programozási nyelv III. Pointerek és tömbök.

Osztályok. 4. gyakorlat


A Java és a C++ összehasonlítása

Átírás:

Bevezetés a Java programozási nyelvbe Miskolci Egyetem Általános Informatikai Tanszék Bevezetés a Java programozási nyelvbe JAVABEV / 1

Egy kis történelem 1. 1990-es évek eleje: a SUN belső project-je (set top box) platform-független technológia szükségessége. Egyik akkori nyelv sem volt megfelelő, ezért terveztek egy újat. 1990-es évek közepe: az Internet rohamos terjedése újra felvetette a platform-független technológia szükségességét újraéledt a project, de általánosabb célkitűzéssel Bevezetés a Java programozási nyelvbe JAVABEV / 2

Egy kis történelem 2. 1995: Java 1 platform 1999: Java 2 platform Jelenleg: (2000. november) J2SDK 1.4 A Java egyszerre programozási nyelv platform Bevezetés a Java programozási nyelvbe JAVABEV / 3

A Java nyelv Platform-független magas szintű programozási nyelv objektum-orientált egyszerű elosztott (distributed) interpretált (de speciális módon) robosztus biztonságos hordozható architektúra független többszálú (multithreaded) Bevezetés a Java programozási nyelvbe JAVABEV / 4

A Java egyszerre fordított és interpretált JVM Forráskód Byte kód Gépi kód Bevezetés a Java programozási nyelvbe JAVABEV / 5

A Java mint platform A Java egy tisztán software megvalósítású platform is. Két része van a Java virtuális gép (JVM) a Java alkalmazási interface (Java API) Bevezetés a Java programozási nyelvbe JAVABEV / 6

Java program és applet Java program: Java-fordítóval készült önálló alkalmazás. az adott architektúrán futó JVM hajtja végre mindazon jogokkal rendelkezik, mint bármely más alkalmazás Applet: HTML oldalba ágyazott Java-kód a HTML oldal értelmezője (a böngésző) hajtja végre (a böngésző valósítja meg a JVM-et) korlátozott jogokkal rendelkezik Bevezetés a Java programozási nyelvbe JAVABEV / 7

A Java API Részei: alapvető funkciók (objektumok, stringek stb.) applet-ek hálózat-kezelés (URL, TCP, UDP, RMI) többnyelvűség biztonság software komponensek (JavaBeans) objektum szerializáció (perzisztencia) Java Database Connectivity (JDBC) Bevezetés a Java programozási nyelvbe JAVABEV / 8

A "Hello World" program class HelloWorld { public static void main( String args[] ) { System.out.println( "Hello" ); if ( args.length == 1 ) System.out.println( "World!" ); else System.out.println( args[0] + "!" ); } } Bevezetés a Java programozási nyelvbe JAVABEV / 9

Típusok Ugyanazok az alaptípusok, mint a C++ nyelvben, de pontosan specifikált helyfoglalással pontosan specifikált ábrázolási móddal minden alaptípusnak létezik egy megfelelő befoglaló osztálya is, hogy ahol osztálytípus szükséges, ott az legyen alkalmazható Bevezetés a Java programozási nyelvbe JAVABEV / 10

Operátorok, műveletvégzés A pointerekhez kapcsolódó operátorok kivételével ugyanaz, mint C++ -ban. Különbségek: két új operátor ( >>> és instanceof) balról jobbra szabály a kifejezések kiértékelésénél a kifejezésekben pontos típusegyezés szükséges tagkiválasztás mindig a. (pont) operátor nincs scope operátor Bevezetés a Java programozási nyelvbe JAVABEV / 11

Utasítások Gyakorlatilag ugyanazok. mint a C++ utasításai, de a break és a continue címkézhető nincs goto utasítás Bevezetés a Java programozási nyelvbe JAVABEV / 12

Osztályok Egy gyökerű: minden definiált osztály implicite az Object osztály leszármazottja. Csak egy ősosztály lehet! Osztály definíció: kulcsszó class nev extends bazis {.. } kulcsszó: abstract vagy static Metódusok: csak belső definíció Láthatósági kulcsszó: csak az adott mezőre érvényes. Alapértelmezés: protected Bevezetés a Java programozási nyelvbe JAVABEV / 13

Objektumok 1. Egy osztály típusú változó mindig referencia típusú. Objektum létrehozása mindig a new operátorral Egy osztály típusú változó definiálása csak referenciát hoz létre, objektumot nem. Értékadás: két referencia közötti értékadás után a két változó ugyanarra az objektumra hivatkozik Bevezetés a Java programozási nyelvbe JAVABEV / 14

Objektumok 2. Az objektumok közötti értékadást a clone metódussal tudjuk elérni minden osztály az Object ősosztályból örökli a programozó szükség esetén átdefiniálhatja. class A{.. }; A a, b; a = new A(); b = a; //Egy objektum két névvel! b = a.clone(); //a b egy új objektum //referenciája Bevezetés a Java programozási nyelvbe JAVABEV / 15

Szemétgyűjtés Minden objektum csak referencián keresztül érhető el. Ha egy objektumra egyetlen referencia sem hivatkozik, akkor az elveszett a program számára. Minden Java program egyik szálaként fut egy szemétgyűjtő algoritmus, amely előbb-utóbb törli a memóriából a hivatkozás nélküli objektumokat. Java-ban nincs értelme az objektum törlésének, csak a rá való hivatkozást kell megszüntetni. Bevezetés a Java programozási nyelvbe JAVABEV / 16

Interface 1. Az interface tagjainak csak deklarációja van, nincs definíciója. C++ -ban az absztrakt osztály a megfelelője Bármely osztály implementálhat egy vagy több interface-t. Az osztály feladata az interface elemeinek definíciója. Ezzel megvalósítható a többszörös öröklésnek megfelelő kapcsolatrendszer Bevezetés a Java programozási nyelvbe JAVABEV / 17

Példa: interface A{ int a; void fgv( void ); } Interface 2. class B implements A{.. } class C implements A{.. } Ezután A típusú referenciával mind B, mind C típusú objektumot elérhetünk. Bevezetés a Java programozási nyelvbe JAVABEV / 18

Kivételek 1. Hasonló mechanizmus, mint a C++ nyelvben, de szigorúbb szabályokkal. Egy függvény definíciójában mindig fel kell sorolni azokat a kivételeket, amelyek explicite keletkezhetnek a függvény végrehajtása során. class A { int a; void fgv( void ) throws RunTimeException {.. }; } Bevezetés a Java programozási nyelvbe JAVABEV / 19

A kivételeket lehet elkapni: Kivételek 2. try { a.fgv(); } catch( RunTimeException ex ) {.. }; Bevezetés a Java programozási nyelvbe JAVABEV / 20

Kivételek 3. továbbterjeszteni void fgv1( void ) throws RunTimeExceprion {.. a.fgv(); } Más lehetőség nincs, tehát nem lehet lekezeletlen kivétel a programban a szabályok betartását már a fordító is ellenőrzi Bevezetés a Java programozási nyelvbe JAVABEV / 21

Modularitás a Java nyelvben A Java-ban a programok tagolásának eszköze a csomag (package). Minden csomagnak saját névtere van A Java-ban a csomagokban lehetnek alcsomagok, a csomagszerkezet fastruktúrát alkot A csomag tartalmát a fordítási egységek adják meg. A fordítási egységekben találhatók a csomaghoz tartozó kódok, azaz típusok (osztályok és interface-ek) definíciói. Bevezetés a Java programozási nyelvbe JAVABEV / 22

Hivatkozások A csomagokra hierarchikus szerkezetű azonosítóval hivatkozhatunk. Az A csomag B alcsomagjában levő C alcsomag: A.B.C Az egyes csomagokban található típusokra teljesen analóg módon hivatkozhatunk. Például a fenti csomagban definiált T típus: A.B.C.T Bevezetés a Java programozási nyelvbe JAVABEV / 23

Csomagok és fordítási egységek 1. Csomagok és fordítási egységek összerendelése: leképezés az operációs rendszer file-rendszerére tárolás adatbázisban. A továbbiakban az első megoldással foglalkozunk. A fordítási egységek file-ok.java kiterjesztéssel a csomag-alcsomag nevek pedig katalógus nevek, amelyekből útvonal generálódik Bevezetés a Java programozási nyelvbe JAVABEV / 24

Csomagok és fordítási egységek 2. A fenti példában említett A.B.C csomag megkeresése a következőképpen történik: egy előre kijelölt katalógus A alkatalógusának B alkatalógusában a Java fordító a C.java filet-keresi a lefordított byte-kódot ugyanoda C.class néven helyezi el. Hálózati csomag: az első csoportnév nagybetű: HU.uni-miskolc.iit.queen.ficsor.javap Bevezetés a Java programozási nyelvbe JAVABEV / 25

A fordítási egység szerkezete 1. Egy fordítási egység az alábbi részekből áll csomagdeklaráció importdeklarációk típusdeklarációk Csomagnév megadása (csomagdeklaráció) package csomagnév Bevezetés a Java programozási nyelvbe JAVABEV / 26

A fordítási egység szerkezete 2. Egy másik csomagban deklarált publikus típust a teljes azonosítójával kell megnevezni. Ezt rövidíthetjük az adott típust importálásával import A.B.C.T Egy csomag valamennyi típusát is importálhatjuk import A.B.C.* Minden programba automatikusan importálódik a java.lang csomag. Bevezetés a Java programozási nyelvbe JAVABEV / 27

A Java osztály könyvtár A Java fejlesztő környezet számos csomagot tartalmaz, amelyekben hasznos, általános célú típusok (osztályok és interface-ek) találhatók. A Java nyelv hatékony alkalmazásához szükséges a kész osztályok használatának elsajátítása. A Java API-t implementáló osztályok a java csomag különböző alcsomagjaiban találhatók Bevezetés a Java programozási nyelvbe JAVABEV / 28

A java.lang csomag Automatikusan importálódik. Tartalmazza az osztályhierarchia gyökerét jelentő Object osztályt, az alaptípusokat implementáló osztályokat a futtatáshoz, kivételkezeléshez és a futás közbeni biztonsági ellenőrzésekhez szükséges magas szintű osztályokat. Bevezetés a Java programozási nyelvbe JAVABEV / 29

A java.io csomag alapvető input/output műveleteket file kezelési műveleteket végző osztályokat tartalmaz. Bevezetés a Java programozási nyelvbe JAVABEV / 30

A java.util csomag Hasznos, bár egymáshoz logikailag lazán kapcsolódó osztályok gyűjteménye. idő-dátum kezelés string kezelés megfigyelő és megfigyelt objektumok dinamikus tömb és verem véletlenszám generátor stb. Bevezetés a Java programozási nyelvbe JAVABEV / 31

A java.awt csomag Abstract Windowing Toolkit Platform független felhasználói interface komponensek megjelenítésére, kezelés új komponensek létrehozása Bevezetés a Java programozási nyelvbe JAVABEV / 32

A java.net csomag A hálózatkezelést lehetővé tevő osztályok gyűjteménye. TCP szinten URL-eken keresztül, a szokásos protokollok segítségével. Bevezetés a Java programozási nyelvbe JAVABEV / 33

A java.applet csomag A beágyazott Java programok (appletek) készítéséhez Bevezetés a Java programozási nyelvbe JAVABEV / 34

A JavaBeans A komponens alapú programozás lehetőségét teremti meg. Java-ban íródott. Alapvető cékitűzései: újrafelhasználható software komponensek, ezen belül fejlettebb GUI komponensek (Swing) Java appletek együttműködése egymással és a böngésző egyéb komponenseivel Java programok összekapcsolása más komponensalapú rendszerekkel (OLE, ActiveX, OpenDoc támogatás) elosztott alkalmazások készítése (CORBA, DCOM technológiák támogatása) Bevezetés a Java programozási nyelvbe JAVABEV / 35

Az alap fejlesztő környezet A minimális környezet, (a JDK), az alábbiakból áll: parancssoros Java fordító egy szövegszerkesztővel debugger A Java API-t implementáló alapcsomagok egy böngésző vagy segédprogram az appletek futtatásához a JVM (Java virtuális gép) implementációja a Java programok futtatásához dokumentáció (online formában és számos könyv alakjában is rendelkezésre áll) Bevezetés a Java programozási nyelvbe JAVABEV / 36

Az alap futtató környezet Java programok futtatásához szükséges a JRE (Java Runtime Environment) a virtuális gépet implementáló program az alaposztályok A Java filozófiájából adódóan a fejlesztés és a futtatás környezete különböző lehet. Ha tehát valamilyen platformra csak a JRE van implementálva, az alkalmas Java programok futtatására, legfeljebb másik platformon kell fejleszteni. Bevezetés a Java programozási nyelvbe JAVABEV / 37

Fejlesztő eszközök A fejlesztési munka megkönnyítésére számos komplett fejlesztő környezet létezik (kereskedelmi vagy szabad software). Az ismertebbek Név Gyártó Platform Visual Age IBM Win32, OS/2, különféle UNIX platformok Visual cafe Symantec Win32 Visual Studio J++ Microsoft Win32 (elavul a C# miatt) Forte for Java Sun Solaris, Linux, Win32 JBuilder Borland Win32, Solaris, Linux Bevezetés a Java programozási nyelvbe JAVABEV / 38