{autotoc}

A Java objektumorientált programozási technológia.

A Java program objektumok és ezek mintáinak tekinthető osztályok összessége.

Osztály:

  • mezők vagy változók,
  • metódusok (függvény másutt).

A Java programozási nyelv általános jellemzői

  • Egyszerű (Simple)
    A C++ -hoz képest egyszerű. Hasonlít hozzá. Elhagytak belőle ritkán használt nehezen kezelhető, zavaros elemeket, amelyek több hátránnyal jártak, mint előnnyel. Egy sor nehezen megoldható részfeladatot könyvtárakban tesznek hozzáférhetővé a gyártók. űrlap tervezést integrált, vizuális fejlesztő eszközök segítik, amely nélkül igen nehézkes lenne.
    A kifejlesztett program kis, stand-alone gépen is fut.
  • Objektumorientált (Object-Oriented)
    A C++-ból fejlődött ki. Hasonlít a C++ objektumorientált megoldására. A többszörös öröklést a Jáva nem támogatja, erre más megoldást kínál.
    A Reflection mechanizmus és az objektum szerializáció mechanizmus képessége könnyebbé teszi perzisztens (a programtól függetlenül is létező) objektumok és grafikus (vizuális) fejlesztő eszközök készítését.
  • Hordozható (Portable)
    A Jáva specifikáció nem tartalmaz implementációfüggő részleteket, mint pl. a C++.
    A primitív adattípusok mérete és a rajtuk végzett aritmetikai műveletek ponosan specifikálva vannak. (Pl. az int mindig 32 bit).
    A karakterek, sztringek Unicode formában vannak tárolva.
    A könyvtárak "hordozható" interfészeket tartalmaznak. Pl. van egy abstract Window class és ennek implementációi UNIX-ra, Windows-ra és Macinosch-ra.
  • Architektúra semleges (Architecture-Neutral)
    A Jáva compiler architektúra semleges object file formátumot készít. Bármilyen processzoron futhat, amely a futtató szoftverrel rendelkezik (JVM = Java Virtual Machine).
    A Jáva fordító ún. byte kódot generál, amely független a gép architektúrájától. Bármely gépen könnyen interpretálható és futás közben gépi kódra futtatható (JIT compiler).
  • Többszálú (Multithreaded)
    A program egyidejűleg végrehajtható részei párhuzamosíthatók. Jobb válaszidőt kapunk.
    A Jáva kihasználja a több processzoros gépet, ha ezt az operációs rendszer is támogatja. Egy processzor esetén is javulhat a teljesítmény. Ha egy programszál valamilyen erőforrásra vár, a többi szál kihasználja a processzort.
    Példa szerver alkalmazás.
  • Biztonságos (Secure)
    A Jávát elsősorban  hálózati/elosztott alkalmazásokra szánták. Egyre több hangsúlyt helyeznek a fejlesztők a biztonságra. A Jáva lehetővé teszi vírusmentes, és a jogosulatlan hozzáférést megakadályozó alkalmazások készítését.
    A fejlesztők azonnal közzéteszik és kijavítják a biztonsági hibákat.
    Lehetőség van digitális aláírással ellátott osztályok készítésére, így biztosak lehetünk az osztály készítőjének kilétében. Az ilyen osztályoknak több jogot lehet adni a futtató gép erőforrásaihoz való hozzáférésben.
  • Elérhető, ingyenes fejlesztőeszközök
  • Szabványos komponensek

A Java programozási nyelv lehetőségei

  • Normál alkalmazás
  • Kisalkalmazás (applet)

Java egyszerű típusok:

  • Boolean, 
  • Char, 
  • Byte,
  • Short, 
  • Int, 
  • Long, 
  • Float, 
  • Double.

Java vezérlési szerkezetek:

  • Feltételes elágazások: if; switch
  • Ciklusok: for; while; do while

A Java programok osztályokból épülnek fel. Ide tartoznak az ún. alapcsomagok, amelyek a Java alap-osztályait tartalmazzák, és a Java fejlesztői környezet részét alkotják. Ezek az osztályok nagyban megkönnyítik a programozási munkát, hiszen rengeteg időt és energiát lehet megspórolni azzal, hogy előre megírt és tesztelt részekből állítjuk elő programunkat. A szoftver-újrafelhasználás egyben az objektum-orientált programozás egyik alapelve. Háromfajta osztályt lehet felhasználni a programozás során, ezek az alapcsomagokat tartalmazó osztálykönyvtár osztályai, a programozó által írt saját osztályok, és a mások által írt osztályok.

Osztály nem más, mint objektumséma. Kulcsszava: class. A program futtatásakor ebből a sémából „példányosodik” az objektum. Az osztálynak lehetnek adatmezői és metódusai. Mind a metódusok, mind az osztály lehet absztrakt. Az osztályok közt lehet örökösi viszony.

Konstruktor

Az osztály nevével megegyező metódus, amely példányosításkor meghívódik. Nincs visszatérési típusa. A névtúlterhelés miatt lehet belőle több is egy osztályban.

Öröklődés

A szülő és a gyerek objektum közt programkód megosztás jön létre. A gyerekobjektum a privat tagok kivételével minden tagot örököl a szülőtől. Az ősbeli metódusokat a gyerek kiegészítheti, illetve felüldefiniálhatja.

Polimorfizmus

Egy osztályban több azonos nevű metódus különböző paraméterekkel és különböző definíciókkal. A fordító dönti el, hogy híváskor melyik metódust hajtja végre.

Kivételkezelés a JAVA-ban

Kivételt sok esemény válthat ki, pl.: 0-val osztás, I/O hiba, adattípus eltérés, többszálú program esetén az egyik szál belefeződése.

  • Szándékosan a throw kulcsszóval lehet kiváltani.
  • Saját kivételkezelő kód a try – catch – finally utasításokkal hozható létre.
  • Metódusoknál a throws kulcsszóval és a kivétel osztályának megadásával a lekezelést a hívóra bízzuk.

Hiba esetén létrejön egy kivételobjektum. A kivétel kezelője először a kiváltás programblokkjában keresi a kivétel lekezelésére alkalmas programrészt. Ha nincs lekezelő, akkor külső blokkokban keresi. Egészen a virtuális gépig fölmegy, és ha nincs lekezelő, akkor a kivétel típusának megfelelően akár az adott program futása meg is szakadhat.

Ha a kivétel lekezelésre került, akkor a program futása a kivételt kezelő kód után folytatódik. Tiszta a kivételkezelés, csak mivel a lekezelő kód után folytatódik a végrehajtás, egy kicsit nehézkes folytatni. Nehéz mindenhova a megfelelő lekezelést megírni.

Interfész

Egy új referenciatípus, ami mindenhol használható ahol az osztály; absztrakt metódusok definíciójának és konstans értékek összessége.

Deklaráció

interface név {konstansdefiniciók, absztrakt metódus deklarációk}

Implementáció

implements kulcsszó; eredmény egy osztály; a deklarált interface tartalommal való feltöltése; egy osztályba tetszőleges számú interfész implementálható, de az összes absztrakt metódust implementálni kell.

Öröklődés

extends kulcsszó; lehetséges többszörös öröklődés (több ős), önmagát közvetett módon nem terjesztheti ki egyik interfész sem (körkörösség); implementáláskor az implementált interfész őseit is implementálni kell.