JAVA
A NYELV NEVE •
Kezdetben: Oak
•
James Gosling
•
Java: Sun Mycrosystems védjegye
EGY KIS FÖLDRAJZ •
Indonézia egyik szigete
•
Jakarta: az ország fővárosa
•
Föld 13. legnagyobb szigete
Mit egyszerű csinálni? –
Alkalmazásokat írni
–
Interneten más számítógépek felé továbbítani
–
Grafikákat, weboldalakat megjeleníteni
–
Minden más programozói feladat is megoldható, amire a klasszikus programozási nyelvek képesek
Objektumorientált nyelv Objektumok és ezek mintáinak tekinthető osztályok összessége Osztályok: mezőkből (változókból), metódusukból (függvényekből)
épülnek fel
Mezőkben: eltárolhatjuk az adatokat Metódusokkal: megadhatjuk az adatokon végezhető műveletek kódját
A programkészítés folyamata
Specifikáció
Tervezés
Kódolás
Tesztelés
Dokumentálás
Specifikáció A feladat pontos meghatározása Tartalmazza: – a feladat szöveges leírását matematikai – A megoldással szemben támasztott követelményeket, környezeti igényeket
Tervezés Elkészülhet a megoldás algoritmusa Az algoritmus által használt adatok leírása A jelentősebb problémákat részfeladatokra kell szétbontani Algoritmus: anyanyelvünkön megfogalmazott parancssorozat
Kódolás Programozási nyelven leírt program Forráskód: utasítások sorozata Forrásállomány: programozási nyelven leírt verzió
Számítógép
Processzor
Rendkívül szűk elemi utasításkészletet ért meg, a gépi kódot (tárgykód, natív kód), ami egyesek és nullák sorozataként ábrázolható.
Értelmező
Forráskód
Értelmező Interpreter
Gépi kód
Értelmező Értelmező típusú interpretált nyelvek (Basic) 1. A programozó megírja a forráskódot 2. A felhasználó az értelmező segítségével végrehajtja a forráskódot 3. a) Az értelmező utasításonként értelmezi és egyből végrehajtja (Basic) b) Az értelmező valamilyen egységenként értelmezi, lefordítja és futtatja
Interpretált nyelv
Hátránya: –
–
A gépi kód előállítása csak a végrehajtás alatt történik meg → lassabban futnak le az ilyen programok Forrásnyelven kerülnek terjesztésre → a program jogosulatlan felhasználására minden lehetőség adott
Előnye: –
Portábilisek: könnyen átvihetők egy számítógépről egy más típusú rendszerre
Fordító
Forráskód
Fordító Compiler
Gépi kód
Fordító Fordító típusú kompilált nyelvek (Pascal, C, C++) 1. 2.
3.
A programozó megírja a forráskódot A programozó fordító programmal lefordítja gépi kódra A felhasználó később a gépi kódot futtatja a számítógépen
JAVA
Forráskód
.java
Fordító Compiler
Bájtkód
javac
Értelmező Interpreter
Gépi kód
java
Olyan, mint egy virtuális processzor gépi kódja.
.class
Bájtkód Előnyei: Előfordított bájtkód gyorsabban értelmezhető Megvédi az algoritmusokat a lopástól Platformfüggetlen: nem számít milyen számítógépen állítjuk elő
Java értelmező
JVM: a bájtkódot utasításonként értelmezi és futtatja (virtuális gép, szoftver)
JIT:
(Just In Time) a lefordított utasítást a program futása alatt megjegyzi és csak a legközelebbi betöltéskor fordítja újra (technológia, amit a JVM tud)
Programszerkesztő program Linker A lefordított tárgykód önállóan nem képes futni, még összeszerkesztésre vár. Az összeszerkesztést a linker végzi. Csak a linker által összeállított program futtatható.
Futtatás A programot be kell tölteni a memóriába és végre kell hajtatni a processzorral A futás közben előforduló hibák legtöbbször a program leállásához vezetnek, ezek a futás alatti hibák (runtime error).
Compile time (Fordítási idő), Runtime (Futási idő)
Bizonyos hibák fordítási idejű hibák Pl.: Elírás a
forráskódban Nem megengedett függvényhívás Paraméterezés
Bizonyos hibák futási idejű hibák
Pl.:
0-val való osztás A felhasználó inputját nem sikerült értelmezni Nem létező file Csupa olyan dolog, amit nem lehet tudni fordítási időben
Java-ban Tisztázni kell ezeket a fogalmakat, mivel kétszer történik feldolgozás: először fordítunk, majd másodszor a kapott bájtkódot interpretáljuk, ezzel párhuzamos a futtatás. Mivel az interpreter inputja a bájtkód, amit a fordító állított elő, a bájtkódban mint forráskódban lévő hibák ott voltak már az eredeti forráskódban is. Mivel a fordítás nem sikerülhetett volna hibás forráskóddal, ezért a bájtkódról feltételezhetjük, hogy hibátlan Így interpretálás közben már csak futási idejű hibák fordulhatnak elő.
Integrated Development Environment Integrált Fejlesztői Környezet
IDE a neve a számítógép-programozást megkönnyítő, részben automatizáló programoknak. Alapvető szerepe van a gyors alkalmazásfejlesztésben.
Az IDE-k rendszerint tartalmaznak egy szövegszerkesztőt a program forráskódjának szerkesztésére, egy fordítóprogramot vagy értelmezőt, fordításautomatizálási eszközöket, valamint nyomkövetési, grafikusfelület-szerkesztési és változatkezelési lehetőségeket sok egyéb mellett.
A komolyabbakhoz, például az Eclipse-hez kiegészítők tömege érhető el, amelyek a rendszerfejlesztés egyéb fázisaiban, pl. dokumentálás, projektmenedzsment stb. nyújtanak nagy segítséget.
Java Development Kit Java Fejlesztők Csomagja JDK: a Sun Microsystems egyik Java fejlesztőknek szánt terméke. A Java nyelv elterjedése óta messze ez az egyik legnépszerűbb SDK (fejlesztőeszköz). 2006 november 17-én a Sun bejelentette, hogy megnyitja a JDK forráskódját, és GNU General Public License (GPL) alatt adja ki a szoftvert. Ez nagyrészt csak 2007 május 8-án történt meg az OpenJDK kiadásával.
A JDK tartalma A JDK elsősorban programozási eszközök széles skáláját tartalmazza: javac – A fordítóprogram, ami a forrásból létrehozza a bájtkódot. java – A Java programok indításához szükséges interpreter, mely képes értelmezni a javac fordító által generált class fájlokat. jar – Archiver, ami a kiválasztott class fájlokból egyetlen JAR fájlt generál. javadoc – Dokumentáció készítésére alkalmas eszköz, mely a forráskódban elhelyezett kommenteket értelmezi. jdb – Debugger. javap – Class fájl disassembler. appletviewer – Appletek böngésző nélküli megtekintésére és debuggolására használható eszköz.
javah extcheck apt jhat jstack jstat jstatd jinfo jmap idlj policytool
Java Runtime Environment Java Futtató Környezet Tartalmazza pl.: JVM (Java Virtual Machine) ( Java Virtuális Gép) az értelmezőt Java osztálykönyvtárat bájtkódra fordított formában