Java programozás/A Java programozási környezete
A Java programok fordításához le kell tölteni, és telepíteni kell a Java Development Kitet (JDK). Ez elérhető a Sun weboldaláról. Azonban más gyártók is kínálnak Java fejlesztői csomagokat, de ezek neve más is lehet. A Sun Windows, Linux és Solaris operációs rendszerekhez kínál JDK-kat.
A program fejlesztéséhez számos eszköz használható. Megírhatod a programodat egy egyszerű szövegszerkesztőbe és lefordíthatod parancssorból, vagy használhatsz integrált fejlesztői környezeteket (Integrated Development Environment, IDE). Ezek közül a legelterjedtebb a NetBeans és az Eclipse. Ezeknek rengeteg hasznos funkciója van, mint a szintaxisellenőrzés, kódkiegészítés, automatikus fordítás, debug környezet.
A Java fordító
[szerkesztés]A JDK jó néhány eszközt bocsát rendelkezésünkre Java programok készítéséhez. Ezek közül a legfontosabb a Java fordító, melynek neve javac.
Ennek az a feladata, hogy a Java forrás fájlokat futtatható class (osztály) fájlokká alakítsa. A forrás fájlok egyszerű szöveges állományok .java kiterjesztéssel. Ilyen fájlokat készíthetsz akár olyan szövegszerkesztőkkel is, mint például a Jegyzettömb. A javac ezeket betölthető és futtatható fájlokká fordítja, melyek kiterjesztése .class lesz. Például ha elkészíted a következő org/wikibooks/util/PrintDate.java fájlt
package org.wikibooks.util; import java.util.Date; public class PrintDate { public void main(String[] args) { System.out.println(new Date()); } }
akkor ezt úgy lehet lefordítani, ha a parancssorba a következőt írod:
javac org/wikibooks/util/PrintDate.java
Ekkor a javac egy PrintDate.class fájlt fog készíteni abba a könyvtárba, ahol az eredeti forrás fájl is volt. Ha szintaxis (azaz nyelvtani) hibák vannak a forráskódban, akkor a javac ki fogja írni a hibaüzeneteket a parancssorba. A PrintDate.class fájl a bájtkódot tartalmazza, ami minden olyan platformon működni fog, ahol Java futtatási környezet telepítve van. Ha például a PrintDate.class fájl Windows operációs rendszer alatt készült, átmásolhatod akár egy Linux rendszerbe is, ott is ugyanolyan jól fog futni.
Egy programhoz általában egynél több class fájl készül ezeket .jar kiterjesztésű fájlokba szokták csomagolni, és így szokták kiadni.
A bájtkód
[szerkesztés]Az előző részben láttuk, hogy a Java fordító a .java kiterjesztésű forrás fájlokat .class kiterjesztésű, futtatható kódot tartalmazó fájlokká fordítja. Ez a kód a bájtkód.
A Java előtti legtöbb nyelv esetén a forráskódot általában annak a gépnek a natív kódjára fordították, amin a fordítás készült. Így ha egy programot például egy x86 architektúrájú gépen fordítottak, akkor csak egy x86 architektúrájú gépen lehetett futtatni. A Java azonban bájtkódot készít, ami egy köztes bináris kód, ami egy Java osztály hordozható leírása. Bármelyik Java virtuális gép bármilyen hardverrel és operációs rendszerrel rendelkező platformon képes futtatni ugyanazt a bájtkódot. Azonban a hordozhatóságnak vannak bizonyos korlátai. Például egy Java ME (Micro Edition) rendszer nem képes minden Java SE (Standard Edition) környezetben fordított programot futtatni, mert a Java ME kis eszközökhöz (pl. mobiltelefonokhoz) készült. De általánosságban elmondhatjuk, hogy minden Java SE program módosítás nélkül futtatható minden Java SE virtuális gépen.
A Java futtatási környezet
[szerkesztés]A Java futtatási környezet (Java Runtime Environment, JRE) felelős a Java programok futtatásért. A Sun JDK tartalmazza a JRE-t is. A JRE azonban telepíthető és használható a JDK telepítése nélkül is, ami akkor hasznos, ha csak használni akarod a Java programokat, de nem akarsz ilyeneket fejleszteni. A JRE segít a Java programok memóriába való betöltésében és futtatásában
A fő belépési pont
[szerkesztés]A Java nyelvben osztályokat használunk objektumok definiálására. Egy Java program futtatásához egy speciális osztályra van szükség, ami segíti a program betöltését a számítógép memóriájába. Egy ilyen osztálynak tartalmaznia kell egy metódust, ami a következőképpen néz ki:
public static void main(String[] args) {...}
Ezért mondják az ilyen osztályokra, hogy van egy fő belépési pontjuk. A fent leírt metódust main (fő) függvénynek vagy metódusnak nevezik. Az olyan osztályok, amiknek nincs main függvénye, egyszerűen csak osztályok, nem Java programok, habár egy Java program részei lehetnek.
Egy parancssoros Java program futtatása
[szerkesztés]Ha egy lefordított osztálynak van fő belépési pontja, akkor azt úgy lehet elindítani, hogy a java program első argumentumaként megadjuk az osztály nevét.
java org.wikibooks.util.PrintDate
Ez a parancs az org.wikibooks.util csomag PrintDate osztályának main metódusát fogja elindítani. (A csomagok a névterek és a Java osztályok szervezésének egy kényelmes módja. Mi az org.wikibooks.util csomagot fogjuk használni ebben a könyvben. Erről részletesen a csomagok fejezetben fogunk beszélni.)
Más JDK eszközök
[szerkesztés]A JDK az eddig említetteken kívül számos más hasznos eszközt tartalmaz. Ebben a részben fontos és hasznos programról lesz szó.
Az appletviewer
[szerkesztés]A Java appletek olyan programok, amik általában böngészőkben futnak, a programot pedig egy távoli webszerverről töltik le. Azonban fejlesztéskor és teszteléskor kényelmesebb lehet, ha nem kell ezeket használnunk. Ekkor vehetjük hasznát az appletviewer programnak, amivel parancssorból tudunk appleteket indítani.
Jar fájlok készítése
[szerkesztés]A jar a Java archive kifejezés rövidítése. A jar fájlok lefordított Java osztályok és az ezek által igényelt erőforrások (pl. szövegfájlok, konfigurációs állományok, képek) gyűjteményét tartalmazzák. (Egy jar fájl valójában egy speciális zip fájl.) Az ilyen csomagok készítéséhez a jar nevű programot használhatjuk.
jar cf classes.jar Class1.class Class2.class
A fenti paranccsal egy új, classes.jar nevű fájlt hozunk létre, ami a Class1.class és a Class2.class osztályokat tartalmazza.
A jdb
[szerkesztés]A jdb a Java debugger kifejezés rövidítése. Ez egy parancssori eszköz a hibakeresés megkönnyítésére.
A javadoc eszköz
[szerkesztés]Ahogy egy program egyre nagyobb és bonyolultabb lesz, egyre nehezebb lesz azt átlátni, és megérteni, hogy az egyes részek mit is csinálnak. A programozók már jó ideje használják a forráskódokban a megjegyzéseket (comment) a probléma megoldására. Ezek a megjegyzések azonban általában rendezetlenek, nehézkes az olvasásuk, főleg egy több száz soros programban.
A Java nyelvben viszont egyszerűen készíthetünk dokumentációt a forráskódunkhoz egy speciális kommentár rendszerrel és a javadoc programmal. Ez az eszköz felismeri a forrás fájlokban a szabványos jelöléseket, és HTML formátumú dokumentációt készít belőlük, így anélkül érthetjük meg az egyes programrészek működését, hogy rá kellene néznünk a kódra.