java

17
jt jt Java Java A nyelv története, A nyelv története, jellemzői jellemzői A Java platform A Java platform

Upload: uriel-oneil

Post on 30-Dec-2015

18 views

Category:

Documents


0 download

DESCRIPTION

Java. A nyelv története, jellemzői A Java platform. 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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Java

jtjt

JavaJava

A nyelv története, A nyelv története, jellemzőijellemzői

A Java platformA Java platform

Page 2: Java

jtjt 2

A Java programozási nyelvet James Gosling és A Java programozási nyelvet James Gosling és más mérnökök hozták létre a Sun Microsystems más mérnökök hozták létre a Sun Microsystems berkein belül. A fejlesztés berkein belül. A fejlesztés 19911991-ben kezdődött a -ben kezdődött a Green Project részeként.Green Project részeként.

Olyan szg-es mini nyelvet terveztek, amely Olyan szg-es mini nyelvet terveztek, amely kommunikációs eszközök programozására kommunikációs eszközök programozására alkalmas.alkalmas. (Mint pl. egy kábel TV kapcsoló (Mint pl. egy kábel TV kapcsoló doboza.)doboza.)Mivel az ilyen eszközök nem túl gyorsak, Mivel az ilyen eszközök nem túl gyorsak, memóriájuk is szűkös, a nyelvnek nagyon memóriájuk is szűkös, a nyelvnek nagyon kicsinekkicsinek, a lefordított kódnak pedig roppant , a lefordított kódnak pedig roppant hatékonynakhatékonynak kellett lennie. kellett lennie.

Page 3: Java

jtjt 3

Közrejátszott még egy fontos szempont:Közrejátszott még egy fontos szempont:

Mivel valószínűsíthető volt, hogy a különböző Mivel valószínűsíthető volt, hogy a különböző gyártók majd különböző típusú processzorokat gyártók majd különböző típusú processzorokat fognak választani, ezért a nyelvet fognak választani, ezért a nyelvet általánosraáltalánosra kellett megalkotni. Nem volt szabad azt egy kellett megalkotni. Nem volt szabad azt egy megadott architektúrára szűkíteni.megadott architektúrára szűkíteni.

Page 4: Java

jtjt 4

Hivatalosan Hivatalosan 19951995. május 23-án jelentették be, az . május 23-án jelentették be, az első verziót novemberben adták ki. Eredetileg a első verziót novemberben adták ki. Eredetileg a C++ utódjának szánták. Az eredeti neve Oak C++ utódjának szánták. Az eredeti neve Oak volt volt (angolul tölgyfát jelent, állítólag a James Gosling irodája előtt álló fa (angolul tölgyfát jelent, állítólag a James Gosling irodája előtt álló fa

ihlette)ihlette), azonban ez már egy bejegyzett név. , azonban ez már egy bejegyzett név. Miközben a néven töprengtek, nagy élvezettel Miközben a néven töprengtek, nagy élvezettel kortyolgatták kávéjukat. E kávé a Java nevet kortyolgatták kávéjukat. E kávé a Java nevet viselte, utalva a származási helyére.viselte, utalva a származási helyére.Jáva Indonézia egyik szigete, Jáva Indonézia egyik szigete,

melyen az ország fővárosa, melyen az ország fővárosa, Jakarta is található. Ez Indonézia Jakarta is található. Ez Indonézia legnépesebb szigete, egyben a legnépesebb szigete, egyben a világ legsűrűbben lakott világ legsűrűbben lakott területeinek egyike. A Föld területeinek egyike. A Föld tizenharmadik legnagyobb tizenharmadik legnagyobb szigete.szigete.Hol található Java szigete?Hol található Java szigete?

Page 5: Java

jtjt 5

VerziókVerziók• JDK 1.0, 1996. január 23. JDK 1.0, 1996. január 23.

• JDK 1.1, 1997. február 19. JDK 1.1, 1997. február 19.

• JDK 1.2, kódneve JDK 1.2, kódneve PlaygroundPlayground (más néven Java 2), (más néven Java 2), 1998. december 8. 1998. december 8.

• JDK 1.3, JDK 1.3, KestrelKestrel, 2000. május 8. , 2000. május 8.

• JDK 1.4, JDK 1.4, MerlinMerlin, 2002. február 6. , 2002. február 6.

• JDK 5.0, JDK 5.0, TigerTiger (korábbi nevén 1.5),(korábbi nevén 1.5), 2004. szeptember 30. 2004. szeptember 30.

• JDK 6, JDK 6, MustangMustang, 2006. december 11. , 2006. december 11. 2009-ben az Oracle fölvásárolta!!!2009-ben az Oracle fölvásárolta!!!

• JDK 7, JDK 7, Dolphin,Dolphin,  2011. július 28.  2011. július 28. (String-ek engedélyezése switch utasításban, új IO (String-ek engedélyezése switch utasításban, új IO

könyvtár)könyvtár)

• JDK 8, 2012 vége…JDK 8, 2012 vége… Java programok készítéséhez aJava Development Kit

(JDK, Java fejlesztői készlet)

szükséges!!!

Page 6: Java

jtjt 6

A Java első kiadása a Java Developement Kit 1.0 A Java első kiadása a Java Developement Kit 1.0 (JDK 1.0, Java fejlesztői csomag)(JDK 1.0, Java fejlesztői csomag) volt. Ez tartalmazta a volt. Ez tartalmazta a futtatási környezetfuttatási környezetet et (a virtuális gépet és az osztálykönyvtárakat)(a virtuális gépet és az osztálykönyvtárakat) és a és a fejlesztői eszközökfejlesztői eszközöket et (például a javac fordítót)(például a javac fordítót). . Később a Sun kiadott egy csomagot Java Később a Sun kiadott egy csomagot Java Runtime Environment Runtime Environment (JRE, Java futtatási környezet)(JRE, Java futtatási környezet) néven, néven, ami csak a futtatási környezetet tartalmazta. Az ami csak a futtatási környezetet tartalmazta. Az emberekben azonban az első név ragadt meg, emberekben azonban az első név ragadt meg, ezért szoktak a különböző verziókra a JDK ezért szoktak a különböző verziókra a JDK verziója szerint hivatkozni.verziója szerint hivatkozni.

Page 7: Java

jtjt 7

A Java nyelv jellemzőiA Java nyelv jellemzői• Egyszerű Egyszerű (simple)(simple)

• Objektumorientált Objektumorientált (object-oriented)(object-oriented)

• Elosztott Elosztott (ditributed)(ditributed)

• Robusztus Robusztus (robust)(robust)

• Biztonságos Biztonságos (secure)(secure)

• Architektúra-semleges Architektúra-semleges (architecture neutral)(architecture neutral)

• Hordozható Hordozható (portable)(portable)

• Interpretált Interpretált (interpreted)(interpreted)

• Magas teljesítményű Magas teljesítményű (high performance)(high performance)

• Többszálú Többszálú (multithreaded)(multithreaded)

• Dinamikus Dinamikus (dynamic)(dynamic)

Page 8: Java

jtjt 8

A A Java platformJava platform egy olyan számítógépes egy olyan számítógépes környezet (platform) neve, ami képes a Java környezet (platform) neve, ami képes a Java programozási nyelven írt programok futtatására. programozási nyelven írt programok futtatására. Ebben az esetben a platform nem egy konkrét Ebben az esetben a platform nem egy konkrét hardvert vagy operáció rendszert jelöl, hanem hardvert vagy operáció rendszert jelöl, hanem egy egy virtuális gépvirtuális gépnek nevezett futtató programot nek nevezett futtató programot és és szabványosszabványos osztálykönyvtárosztálykönyvtárakak gyűjteménygyűjtemény--ét, amik egységes működést biztosítanak. ét, amik egységes működést biztosítanak.

A Java platformA Java platform

Page 9: Java

jtjt

An

dro

id: G

oogle Inc.B

lackb

erry O

S: R

IMiO

S: A

ppleS

ymb

ian O

S: S

ymbian

Alapítvány

Win

do

ws P

ho

ne: M

icrosoft

9

Ábra.java…Rajzol (zöld kör);…

Ábra.class10011101010111011101011101…

Java Virtuális GépJava Virtuális Gép

Java fordító

Java nyelvű forrásszöveg

(text állomány)

Java bájtkód(bináris állomány, de még nem futtatható!)

Ja

va

c

Áb

ra.j

av

aJ

av

a Á

bra

Linu

x

Win

do

ws

So

lari

s

Sam

sung

Sie

me

ns

No

kia

Java osztálykönyvtár gyűjteményJava osztálykönyvtár gyűjtemény

Page 10: Java

jtjt 10

A programozó egy nyelvet megtanulva, egy A programozó egy nyelvet megtanulva, egy nyelvet használva tudja a legkülönfélébb nyelvet használva tudja a legkülönfélébb programozható eszközöket, programozható eszközöket, (pl. mobilokat, személyi (pl. mobilokat, személyi

számítógépeket, szervereket)számítógépeket, szervereket) kezelni, anélkül, hogy kezelni, anélkül, hogy magukkal ezekkel a különböző hardver magukkal ezekkel a különböző hardver eszközökkel, vagy az eszközökön található eszközökkel, vagy az eszközökön található szoftveres erőforrásokkal, szoftveres erőforrásokkal, (pl. a futó operációs rendszerekkel: (pl. a futó operációs rendszerekkel:

Linux-szal, Windows-zal vagy Solarisszal)Linux-szal, Windows-zal vagy Solarisszal) foglalkoznia kellene. foglalkoznia kellene.

Page 11: Java

jtjt 11

A Java Runtime A Java Runtime Environment Environment

Ahhoz, hogy egy Java platformra készült Ahhoz, hogy egy Java platformra készült programot futtatni tudjunk, szükségünk van egy programot futtatni tudjunk, szükségünk van egy Java virtuális gépre, és osztálykönyvtárak Java virtuális gépre, és osztálykönyvtárak gyűjteményére, amiket a program felhasznál. A gyűjteményére, amiket a program felhasznál. A Sun virtuális gépét, és az ő osztálykönyvtár Sun virtuális gépét, és az ő osztálykönyvtár megvalósításukat a Java Runtime Environment megvalósításukat a Java Runtime Environment (JRE) tartalmazza. (JRE) tartalmazza.

Page 12: Java

jtjt 12

A Java Virtuális GépA Java Virtuális Gép

A Java platform lelke egy olyan virtuális A Java platform lelke egy olyan virtuális processzor, ami Java bájtkódú programokat processzor, ami Java bájtkódú programokat képes futtatni. Ez a bájtkód ugyanaz marad, képes futtatni. Ez a bájtkód ugyanaz marad, függetlenül attól, hogy milyen hardveren vagy függetlenül attól, hogy milyen hardveren vagy operációs rendszeren fut. A Java platform ehhez operációs rendszeren fut. A Java platform ehhez egy értelmezőt használ, a Java virtuális gépet egy értelmezőt használ, a Java virtuális gépet (Java Virtual Machine, JVM), ami futási időben (Java Virtual Machine, JVM), ami futási időben lefordítja a Java bájtkódú utasításokat a helyi lefordítja a Java bájtkódú utasításokat a helyi gép natív kódú utasításaira. Így ugyanazt a gép natív kódú utasításaira. Így ugyanazt a programot bármilyen platformon lehet futtatni, programot bármilyen platformon lehet futtatni, amihez van virtuális gép.amihez van virtuális gép.

Page 13: Java

jtjt 13

Az 1.2-es verzió óta a Sun JVM megvalósítása Az 1.2-es verzió óta a Sun JVM megvalósítása just-in-time (JIT) fordítót is tartalmaz. Ebben just-in-time (JIT) fordítót is tartalmaz. Ebben ahelyett, hogy egyenként értelmeznénk a ahelyett, hogy egyenként értelmeznénk a bájtkódú utasításokat, egyszerre lefordítjuk a bájtkódú utasításokat, egyszerre lefordítjuk a bájtkódban lévő programot a megfelelő natív bájtkódban lévő programot a megfelelő natív kódú programmá akkor, amikor azt a virtuális kódú programmá akkor, amikor azt a virtuális gép betölti. Ezzel sokkal gyorsabb lesz a futtatás, gép betölti. Ezzel sokkal gyorsabb lesz a futtatás, csak a betöltés fog egy kicsit tovább tartani. Így csak a betöltés fog egy kicsit tovább tartani. Így a JIT fordító optimalizálhatja is a kódot a a JIT fordító optimalizálhatja is a kódot a program aktuális viselkedésének megfelelően program aktuális viselkedésének megfelelően (ami például nem tehető meg egy előre (ami például nem tehető meg egy előre lefordított programmal). lefordított programmal).

Page 14: Java

jtjt 14

Ez azonban nem jelenti azt, hogy ténylegesen le Ez azonban nem jelenti azt, hogy ténylegesen le lehet fordítani egy Java kódot natív kódra (hogy lehet fordítani egy Java kódot natív kódra (hogy kihasználjuk a sebességét). Léteznek olyan kihasználjuk a sebességét). Léteznek olyan fordítók, amik megpróbálkoznak ezzel, de nem fordítók, amik megpróbálkoznak ezzel, de nem minden Java osztálykönyvtárnak létezik gépi minden Java osztálykönyvtárnak létezik gépi kódú megfelelője. kódú megfelelője. (Vegyük például a reflexiót, amivel kikereshetjük az éppen betöltött osztályok (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.)utasításait. Ezt nem lehet tökéletesen megoldani gépi kóddal.)

Page 15: Java

jtjt 15

Az osztálykönyvtárakAz osztálykönyvtárakA legtöbb operációs rendszerben sok A legtöbb operációs rendszerben sok újrafelhasználható kód áll rendelkezésre a újrafelhasználható kód áll rendelkezésre a programozók munkájának megkönnyítésére. Ezek programozók munkájának megkönnyítésére. Ezek általában dinamikusan betölthető könyvtárak, általában dinamikusan betölthető könyvtárak, amiket az alkalmazások futási időben tudnak amiket az alkalmazások futási időben tudnak meghívni. Mivel a Java platform független meghívni. Mivel a Java platform független minden operációs rendszertől, ezért nem minden operációs rendszertől, ezért nem támaszkodhat egyik létező könyvtárgyűjteményre támaszkodhat egyik létező könyvtárgyűjteményre sem. Ehelyett a Java platform olyan széleskörű sem. Ehelyett a Java platform olyan széleskörű osztálykönyvtár gyűjteményt biztosít, ami osztálykönyvtár gyűjteményt biztosít, ami tartalmazza a legtöbb, a modern operációs tartalmazza a legtöbb, a modern operációs rendszerekben megtalálható funkciót.rendszerekben megtalálható funkciót.

Page 16: Java

jtjt 16

A Java osztálykönyvtárak három fő célt szolgálnak A Java osztálykönyvtárak három fő célt szolgálnak a Java platformon belül.a Java platformon belül.• Egyrészt, mint más szabványos kódgyűjtemények, Egyrészt, mint más szabványos kódgyűjtemények, biztosítanak olyan jól ismert szolgáltatásokat, mint biztosítanak olyan jól ismert szolgáltatásokat, mint objektumok listájának kezelése, összetett objektumok listájának kezelése, összetett karakterlánc műveletek, stb.karakterlánc műveletek, stb.• Másrészt, absztrakt felületeket biztosít olyan Másrészt, absztrakt felületeket biztosít olyan műveletekhez, amelyek egyébként erősen függenek műveletekhez, amelyek egyébként erősen függenek a konkrét hardvertől és az operációs rendszertől. a konkrét hardvertől és az operációs rendszertől. Ide Ide tartozik többek között a hálózatkezelés és a fájlkezelés, 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 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 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 hívásokat, és egy egységes felületet biztosítanak a Java alkalmazásoknak ezek elérésére.alkalmazásoknak ezek elérésére.

Page 17: Java

jtjt 17

• Harmadrészt előfordulhat, hogy egy platform Harmadrészt előfordulhat, hogy egy platform nem támogatja az összes olyan tulajdonságot, nem támogatja az összes olyan tulajdonságot, amire egy Java alkalmazás számítana. amire egy Java alkalmazás számítana. Ekkor az Ekkor az osztálykönyvtár vagy emulálja az adott szolgáltatást, osztálykönyvtár vagy emulálja az adott szolgáltatást, felhasználva az elérhető eszközöket, vagy megad egy felhasználva az elérhető eszközöket, vagy megad egy szabványos módot a szolgáltatás elérhetőségének szabványos módot a szolgáltatás elérhetőségének lekérdezésére.lekérdezésére.