Java programozás/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 gyujteményét, amik egységes muködést biztosítanak.
A platform pontos neve Java 2 Platform, azonban a 2-es számot mostanában elhagyják. A következo kiadásokat tartalmazza: Standard Edition (Java SE), Enterprise Edition (Java EE) és Micro Edition (Java ME).
A Java Runtime Environment
szerkesztésAhhoz, 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 gyujteményére, amiket a program felhasznál. A Sun virtuális gépét, és az o osztálykönyvtár megvalósításukat a Java Runtime Environment (JRE) tartalmazza.
A Java Virtuális Gép
szerkesztésA 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 értelmezot használ, a Java virtuális gépet (Java Virtual Machine, JVM), ami futási idoben 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.
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évo programot a megfelelo 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 megfeleloen (ami például nem teheto meg egy elore lefordított programmal).
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ú megfeleloje. 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.
Az osztálykönyvtárak
szerkesztésA 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öltheto könyvtárak, amiket az alkalmazások futási idoben tudnak meghívni. Mivel a Java platform független minden operációs rendszertol, ezért nem támaszkodhat egyik létezo könyvtárgyujteményre sem. Ehelyett a Java platform olyan szélesköru osztálykönyvtár gyujteményt biztosít, ami tartalmazza a legtöbb, a modern operációs rendszerekben megtalálható funkciót.
A Java osztálykönyvtárak három fo célt szolgálnak a Java platformon belül. Egyrészt, mint más szabványos kódgyujtemények, biztosítanak olyan jól ismert szolgáltatásokat, mint objektumok listájának kezelése, összetett karakterlánc muveletek, stb. Másrészt, absztrakt felületeket biztosít olyan muveletekhez, amelyek egyébként erosen függenek a konkrét hardvertol és az operációs rendszertol. 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égeitol. 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. Harmadrészt elofordulhat, 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érheto eszközöket, vagy megad egy szabványos módot a szolgáltatás elérhetoségének lekérdezésére.
Nyelvek
szerkesztésA Java kifejezés általában a Java programozási nyelvre vonatkozik, amit a Java platformban való használatra fejlesztetek ki. A programozási nyelvek általában a "platform" hatókörén kívül vannak. A Sun azonban nem támogatja más nyelvek használatát a platformmal, és a Java nyelvet a Java platform szerves részének, magjának tekinti. Ezért a nyelvet és a futtató környezetet általában egy egységnek tekintjük.
Mindazonáltal számos, harmadik fél által készített fordító létezik a Java virtuális géphez. Néhány ezek közül már létezo nyelvekhez készült, míg mások magát a Java nyelvet egészítik ki. Például:
- Groovy
- Pizza
- GJ (Generic Java): ez késobb a hivatalos Java része lett az 1.5 verziótól kezdve
- NetREXX
Hasonló platformok
szerkesztésA Java és az "írd meg egyszer, futtasd bárhol" koncepció sikere más hasonló törekvésekhez vezetett. Ezek közül a legfigyelemreméltóbb a Microsoft .NET platform, ami a Java jó néhány ötletét és újítását kölcsönvette. Egy Java-szeru nyelvet is kifejlesztettek Visual J# (korábban J++) néven. Késobb egy teljesen új, C# nevű nyelvet alkottak meg. Ez nagyon hasonlít a J# és a Java nyelvekhez, de nem kompatibilis velük.