A Java története, előnyei. Az objektumorientált programozás

Download Report

Transcript A Java története, előnyei. Az objektumorientált programozás

Java
A nyelv története, jellemzői
A Java platform
jt
A Java programozási nyelvet James Gosling és
más mérnökök hozták létre a Sun Microsystems
berkein belül. A fejlesztés 1991-ben kezdődött a
Green Project részeként.
Olyan szg-es mini nyelvet terveztek, amely
kommunikációs eszközök programozására
alkalmas. (Mint pl. egy kábel TV kapcsoló
doboza.)
Mivel az ilyen eszközök nem túl gyorsak,
memóriájuk is szűkös, a nyelvnek nagyon
kicsinek, a lefordított kódnak pedig roppant
hatékonynak kellett lennie.
jt
2
Közrejátszott még egy fontos szempont:
Mivel valószínűsíthető volt, hogy a különböző
gyártók majd különböző típusú processzorokat
fognak választani, ezért a nyelvet általánosra
kellett megalkotni. Nem volt szabad azt egy
megadott architektúrára szűkíteni.
jt
3
Hivatalosan 1995. május 23-án jelentették be, az
első verziót novemberben adták ki. Eredetileg a
C++ utódjának szánták. Az eredeti neve Oak volt
(angolul tölgyfát jelent, állítólag a James Gosling irodája előtt álló fa ihlette),
azonban ez már egy bejegyzett név. Miközben a
néven töprengtek, nagy élvezettel kortyolgatták
kávéjukat. E kávé a Java nevet viselte, utalva a
származási helyére.
Jáva Indonézia egyik szigete,
melyen az ország fővárosa,
Jakarta is található. Ez Indonézia
legnépesebb szigete, egyben a
világ
legsűrűbben
lakott
területeinek egyike. A Föld
tizenharmadik
legnagyobb
szigete.
Hol található Java szigete?
jt
4
Verziók
• JDK 1.0, 1996. január 23.
• JDK 1.1, 1997. február 19.
• JDK 1.2, kódneve Playground (más néven Java 2), 1998. december 8.
• JDK 1.3, Kestrel, 2000. május 8.
• JDK 1.4, Merlin, 2002. február 6.
• JDK 5.0, Tiger (korábbi nevén 1.5), 2004. szeptember 30.
• JDK 6, Mustang, 2006. december 11.
2009-ben az Oracle fölvásárolta!!!
• JDK 7, Dolphin, 2011. július 28. (String-ek engedélyezése switch utasításban, új IO
könyvtár)
• JDK 8, 2012 vége…
Java programok készítéséhez a
Java Development Kit
(JDK, Java fejlesztői készlet)
szükséges!!!
jt
5
A Java első kiadása a Java Developement Kit 1.0
(JDK 1.0, Java fejlesztői csomag) volt. Ez tartalmazta a
futtatási környezetet (a virtuális gépet és az osztálykönyvtárakat)
és a fejlesztői eszközöket (például a javac fordítót).
Később a Sun kiadott egy csomagot Java
Runtime Environment (JRE, Java futtatási környezet) néven,
ami csak a futtatási környezetet tartalmazta. Az
emberekben azonban az első név ragadt meg,
ezért szoktak a különböző verziókra a JDK
verziója szerint hivatkozni.
jt
6
A Java nyelv jellemzői
•
•
•
•
•
•
•
•
•
•
•
Egyszerű (simple)
Objektumorientált (object-oriented)
Elosztott (ditributed)
Robusztus (robust)
Biztonságos (secure)
Architektúra-semleges (architecture neutral)
Hordozható (portable)
Interpretált (interpreted)
Magas teljesítményű (high performance)
Többszálú (multithreaded)
Dinamikus (dynamic)
jt
7
A Java platform
A Java platform egy olyan számítógépes
környezet (platform) neve, ami képes a Java
programozási nyelven írt programok futtatására.
Ebben az esetben a platform nem egy konkrét
hardvert vagy operáció rendszert jelöl, hanem
egy virtuális gépnek nevezett futtató programot
és szabványos osztálykönyvtárak gyűjteményét, amik egységes működést biztosítanak.
jt
8
(text állomány)
Ábra.class
(bináris állomány, de
még nem futtatható!)
Java Ábra
100111010101110
11101011101…
Java bájtkód
Siemens
Java fordító
Java nyelvű
forrásszöveg
Javac Ábra.java
…
Rajzol (zöld kör);
…
Android: Google Inc.
Blackberry OS: RIM
iOS: Apple
Symbian OS: Symbian Alapítvány
Windows Phone: Microsoft
Ábra.java
Java Virtuális Gép
Java osztálykönyvtár gyűjtemény
jt
9
A programozó egy nyelvet megtanulva, egy
nyelvet használva tudja a legkülönfélébb
programozható eszközöket, (pl. mobilokat, személyi
számítógépeket,
szervereket)
kezelni, anélkül, hogy
magukkal ezekkel a különböző hardver
eszközökkel, vagy az eszközökön található
szoftveres erőforrásokkal, (pl. a futó operációs rendszerekkel:
Linux-szal, Windows-zal vagy Solarisszal) foglalkoznia kellene.
jt
10
A Java Runtime Environment
Ahhoz, hogy egy Java platformra készült
programot futtatni tudjunk, szükségünk van egy
Java virtuális gépre, és osztálykönyvtárak
gyűjteményére, amiket a program felhasznál. A
Sun virtuális gépét, és az ő osztálykönyvtár
megvalósításukat a Java Runtime Environment
(JRE) tartalmazza.
jt
11
A Java Virtuális Gép
A Java platform lelke egy olyan virtuális
processzor, ami Java bájtkódú programokat
képes futtatni. Ez a bájtkód ugyanaz marad,
függetlenül attól, hogy milyen hardveren vagy
operációs rendszeren fut. A Java platform ehhez
egy értelmezőt használ, a Java virtuális gépet
(Java Virtual Machine, JVM), ami futási időben
lefordítja a Java bájtkódú utasításokat a helyi gép
natív kódú utasításaira. Így ugyanazt a
programot bármilyen platformon lehet futtatni,
amihez van virtuális gép.
jt
12
Az 1.2-es verzió óta a Sun JVM megvalósítása
just-in-time (JIT) fordítót is tartalmaz. Ebben
ahelyett, hogy egyenként értelmeznénk a
bájtkódú utasításokat, egyszerre lefordítjuk a
bájtkódban lévő programot a megfelelő natív
kódú programmá akkor, amikor azt a virtuális
gép betölti. Ezzel sokkal gyorsabb lesz a futtatás,
csak a betöltés fog egy kicsit tovább tartani. Így
a JIT fordító optimalizálhatja is a kódot a
program aktuális viselkedésének megfelelően
(ami például nem tehető meg egy előre
lefordított programmal).
jt
13
Ez azonban nem jelenti azt, hogy ténylegesen le
lehet fordítani egy Java kódot natív kódra (hogy
kihasználjuk a sebességét). Léteznek olyan
fordítók, amik megpróbálkoznak ezzel, de nem
minden Java osztálykönyvtárnak létezik gépi
kódú megfelelője.
(Vegyük például a reflexiót, amivel kikereshetjük az éppen betöltött osztályok
utasításait. Ezt nem lehet tökéletesen megoldani gépi kóddal.)
jt
14
Az osztálykönyvtárak
A
legtöbb
operációs
rendszerben
sok
újrafelhasználható kód áll rendelkezésre a
programozók munkájának megkönnyítésére. Ezek
általában dinamikusan betölthető könyvtárak,
amiket az alkalmazások futási időben tudnak
meghívni. Mivel a Java platform független
minden operációs rendszertől, ezért nem
támaszkodhat egyik létező könyvtárgyűjteményre
sem. Ehelyett a Java platform olyan széleskörű
osztálykönyvtár gyűjteményt biztosít, ami
tartalmazza a legtöbb, a modern operációs
rendszerekben megtalálható funkciót.
jt
15
A Java osztálykönyvtárak három fő célt szolgálnak
a Java platformon belül.
• Egyrészt, mint más szabványos kódgyűjtemények,
biztosítanak olyan jól ismert szolgáltatásokat, mint
objektumok
listájának
kezelése,
összetett
karakterlánc műveletek, stb.
• Másrészt, absztrakt felületeket biztosít olyan
műveletekhez, amelyek egyébként erősen függenek
a konkrét hardvertől és az operációs rendszertől. Ide
tartozik többek között a hálózatkezelés és a fájlkezelés,
amik általában függenek a natív platform képességeitől. A
java.net és a java.io könyvtárak megvalósítják a natív
hívásokat, és egy egységes felületet biztosítanak a Java
alkalmazásoknak ezek elérésére.
jt
16
• Harmadrészt előfordulhat, hogy egy platform
nem támogatja az összes olyan tulajdonságot,
amire egy Java alkalmazás számítana. Ekkor az
osztálykönyvtár vagy emulálja az adott szolgáltatást,
felhasználva az elérhető eszközöket, vagy megad egy
szabványos módot a szolgáltatás elérhetőségének
lekérdezésére.
jt
17