Gentoo Logo

Gentoo Java Útmutató

Tartalom:

1.  Mi a Java?

Áttekintés

A Java a Sun Microsystems mérnökei által kifejlesztett, objektum-orientált programozási nyelv. Úgy tervezték, hogy többféle platformon is fusson, a kód újrafordítása nélkül. Noha a Javát natív programként is le lehet fordítani, népszerűségét mégis nagyrészt portolhatóságának köszönheti, olyan képességei mellett, mint a Garbage Collection. A platform-függetlenség érdekében a Java fordító a Java kódot egy "Java bytecode"-nak nevezett köztes megjelenítési rétegre fordítja le, amely aztán egy JRE-ben (Java Runtime Environment) fut, s nem közvetlenül az operációs rendszeren.

A Java bytecode futtatásához telepíteni kell egy JRE-t (Java Runtime Environment), ami biztosítja többek között a fő függvénykönyvtárakat, egy platformfüggetlen Java virtuális gépet (Java Virtual Machine) és bővítményeket a böngészőkhöz. A JDK (Java Development Kit) pedig programozási eszközöket biztosít, pl. bytecode fordítót és hibakeresőt.

2.  Mielőtt elkezdenéd

Létező telepítés

Ha már van egy létező bármilyen Java környezeted, akkor győződj meg róla, hogy követted a Java frissítési segítséget.

Új telepítés

Az új telepítés nem igényel további előkészítést.

3.  Egy Virtuális Gép telepítése

Lehetőségek

A Gentooban számos futtatási környezet (Java Runtime Environment) JRE és fejlesztői eszköz (Java Development Kit) JDK áll rendelkezésünkre. A jelenlegi alternatívák a következők:

Gyártó JDK JRE
Blackdown Java Kit dev-java/blackdown-jdk dev-java/blackdown-jre
Sun Java Kit dev-java/sun-jdk dev-java/sun-jre-bin
IBM Java Kit dev-java/ibm-jdk-bin dev-java/ibm-jre-bin
Compaq Java Kit Alpha/Linux/GNU-hoz dev-java/compaq-jdk dev-java/compaq-jre
BEA WebLogic J2SE Development Kit dev-java/jrockit-jdk-bin

Mind JRE, mind JDK tekintetében a Blackdown az alapértelmezés, mivel ingyen ("free as in beer"), mindenféle regisztrációs hercehurca nélkül telepíthető.

A Sun JDK/JRE, az IBM JDK/JRE és a BEA JDK/JRE általában véve gyorsabbak, de egy kicsit komplikáltabb őket beszerezni, mivel letöltés előtt el kell olvasni és elfogadni a licencüket (az IBM-nél még regisztrálni is kell)

JRE/JDK telepítése

A profilodhoz tartozó alapértelmezett JDK telepítéséhez futtasd az emerge virtual/jdk, vagy a JRE-hez a emerge virtual/jre parancsot..

Nemrégiben a Sun új licenszszerződéssel bocsájtotta ki a saját JDK/JRE verzióit - több Linux disztribúció baráti licenszt kapott. Ennek eredményeként a a Java 1.5-től kezdve szabadon letölthető, minden huzavona nélkül.

Megjegyzés: A JDK tartalmazza a JRE-t is, ezért JDK telepítésekor nem kell JRE-t is telepítened.

Előre letöltős JRE/JDK-k telepítése

Mint már említettem, néhány JDK és JRE igényli, hogy néhány apróbb lépéssel letöltsd a szükséges állományokat a telepítés előtt. Ez könnyen kiderül, ha normálisan próbálod telepíteni a csomagokat. Az ebuild rövid magyarázattal fog szolgálni, hogy mit és honnan tölts le.

A megnevezett fájlokat az /usr/portage/distfiles alá kell letölteni. Amint ez kész, ismét futtathatod az emerge parancsot, ezáltal a JRE/ JDK elkezd települni.

4.  Virtuális gép konfigurálása

Áttekintés

A Gentooban lehetőség van arra, hogy több JRE/JDK is telepítve legyen anélkül, hogy ütköznének egymással.

A java-config segítségével beállíthatod az egész rendszerre érvényes alapértelmezést, ha van root hozzáférésed. A felhasználók is használhatják a java-config-ot a személyes alapértelmezett JRE/JDK beállítására, amely különbözhet a rendszer alapértelmezettjétől..

Megjegyzés: Az eselect segítségével is beállíthatod a rendszer és a felhasználók VM-jét. Lásd eselect java-VM help.

Az alapértelmezett Virtuális gép beállítása

Kiadva az alábbi parancsot: java-config --list-available-vms, megkapod a rendszereden elérhető JRE-k és JDK-k listáját,az alábbi példához hasonlóan:

Kódlista 4.1: Az elérhető VM-ek listája

# java-config --list-available-vms
The following VMs are available for generation-2:
1)      Blackdown JDK 1.4.2.03 [blackdown-jdk-1.4.2]
2)      Blackdown JRE 1.4.2.03 [blackdown-jre-1.4.2]
3)      Blackdown 32bit JRE 1.4.2.03 [emul-linux-x86-java-1.4.2]
4)      Sun 32bit JRE 1.5.0.08 [emul-linux-x86-java-1.5]
5)      Kaffe 1.1.7 [kaffe]
*)      Sun JDK 1.5.0.08 [sun-jdk-1.5]

A * jelzi, hogy melyik a jelenleg aktív VM (rendszer-VM vagy felhasználói VM, amennyiben be van állítva). A szögletes zárójelekben ([]) szereplő név az adott VM azonosítója. Ezt átadva a java-config --set-system-vm parancsnak beállíthatod a VM-et, így:

Kódlista 4.2: A rendszer-VM beállítása

(Azonosító alapján (javallott))
# java-config --set-system-vm blackdown-jdk-1.4
Now using blackdown-jdk-1.4 as your generation-2 system JVM
(Szám alapján)
# java-config --set-system-vm 6

Egyszerű felhasználóként a java-config --set-user-vm parancsot használhatod.

Megjegyzés: Már nem kell source-olni ahhoz, hogy a felhasználói/rendszer-VM beállítások életbe lépjenek.

A preferált VM

Java csomagok fordításánál a szükséges VM-re lehet váltani.

Mivel igen széles az elérhető VM-változatok köre, nincs erőforrásunk minden csomagot mindegyiken tesztelni. Viszont szeretnénk biztosítani, hogy minden csomag simán leforduljon, ezért összeállítottunk egy listát az alapértelmezett/támogatott VM-ekről architektúránként, amit megtalálsz az /usr/share/java-config-2/config/jdk-defaults.conf-ban. Ha valamilyen Java-csomagot fordítasz, és az észreveszi, hogy a számára szükséges VM telepítve van, automatikusan azt fogja használni a rendszer alapértelmezettje helyett.

A fordítás idejére történő VM-váltás akkor is szükséges, ha pl. a rendszer-VM 1.4-re van beállítva, de a fordítandó csomagnak az 1.5-ös szükséges. Fordítás közben a preferált 1.5-ös VM-et fogja használni, érintetlenül hagyva a rendszered alapértelmezettjét.

Minthogy a Gentoo lényege a választás lehetősége, ezeket az alapbeállításokat természetesen felülbírálhatod az /etc/java-config-2/build/jdk.conf-ban, így teljes mértékben te döntöd el, melyik VM-et használod. Íme néhány példa:

Kódlista 4.3: Példa az /etc/java-config-2/build/jdk.conf-ra

(Mindig a sun-jdk-t akarom használni, azaz a sun-jdk-1.4-et az 
1.4-hez, sun-jdk-1.5-öt az 1.5-höz stb.)
*=sun-jdk

Kódlista 4.4: Példa az /etc/java-config-2/build/jdk.conf-ra

(Ha csak lehet, mindig a sun-jdk-1.5-öt használja, kivéve ha 
kifejezetten 1.4 vagy 1.3 kell)
*=sun-jdk-1.5

Kódlista 4.5: Példa az /etc/java-config-2/build/jdk.conf-ra

# Az 1.3-hoz a sun-jdk-1.4et akarom használni, de ha az nem elérhető, 
akkor legyen az ibm-jdk-bin, Az 1.4-hez használom a blackdown-jdk-t, 
az 1.5-höz pedig a sun-jdk-t 
1.3=sun-jdk-1.4 ibm-jdk-bin
1.4=blackdown-jdk
1.5=sun-jdk

Figyelmeztetés: Ne szerkeszd ezt a fájlt! Ha változtatsz a beállításokon, mert mondjuk egy nem támogatott VM-et akarsz használni, az súlyos hibákat okozhat. Nem támogatott VM által okozott hibák kissebb fontosságot élveznek, ha támogatott VM-eknél nem jelentkezik.

5.  Fordítóprogramok

A fordításokhoz használt standard Java fordító a javac, amelyet minden JDK tartalmaz. Nem csak a fordítás idején használt VM-et lehet beállítani, hanem a fordítóprogramot is. Lényegében egy listát határozhatsz meg a preferált Java-fordítókról az /etc/java-config-2/build/compilers.conf-ban.

Kódlista 5.1: /etc/java-config-2/build/compilers.conf

# If the ebuild supports it
# it will check the COMPILERS var front to back and
# use the first compiler that is installed

COMPILERS="ecj-3.1 jikes javac"

Néhány fordítóprogram nem támogatja az összes lehetséges -target és -source argumentumot, ezért mindegyik listában szereplő fordítót ellenőrzi, hogy képes-e támogatni a kívánt -target/-source argumentumot. A javac mindig működik, tehát ha nem talál más megfelelő fordítót, akkor azt használja a rendszer.

Az alábbi táblázatban találsz részleteket az egyes fordítókról:

Név Azonosító Csomag Leírás
javac javac N/A Ez az alapértelmezett fordító, ezt minden JDK tartalmazza.
jikes jikes dev-java/jikes A Jikes-t eredetileg az IBM fejlesztette ki. Az anekdoták szerint általában gyorsabb, mint a javac, ugyanakkor pedánsabb is, azaz bizonyos körülmények között elhasal, amikor a javac gond nélkül teszi a dolgát. A Java 1.5-ös szintakszist sem támogatja még.
Eclipse Compiler for Java ecj-3.1 =dev-java/eclipse-ecj-3.1* Az ECJ fordítót szokták használni az Eclipse szoftverfejlesztő készlettel együtt. Nagyon sokat tud, és igen gyors. Támogatja a Java 1.5-ös szintakszist.

6.  Az alapértelmezett CLASSPATH beállítása

Figyelmeztetés: Az alább leírt opciókat tekintsd érvénytelennek, valószínűleg törölni is fogjuk a közeljövőben. Nem tanácsoljuk ezek használatát, mert a Java projektjeid vagy alkalmazásaid ideálisan tudják kezelni a saját classpath- jaikat. Ha saját alapértelmezett CLASSPATH-ot definiálsz, néhány alkalmazás váratlan viselkedést fog produkálni, ugyanis olyan osztályokat találhatnak a classpath-ban, amelyekre nem számítottak.

A java-config segítségével a rendszer alapértelmezett CLASSPATH változója is beállítható, és persze a felhasználók saját specifikus alapértelmezett CLASSPATH változói is.

Először is fel kell soroltatni azokat a könyvtárakat, amelyeket érdemes lehet bevenni a CLASSPATH-ba, imígyen:

Kódlista 6.1: Osztályok listázása

# java-config --list-available-packages
[xerces-2] The next generation of high performance, fully compliant XML parsers in the Apache Xerces family (/usr/share/xerces-2/package.env)
[junit] Simple framework to write repeatable tests (/usr/share/junit/package.env)
[bsh] BeanShell: A small embeddable Java source interpreter (/usr/share/bsh/package.env)
[bcel] The Byte Code Engineering Library: analyze, create, manipulate Java class files (/usr/share/bcel/package.env)
[log4j] A low-overhead robust logging package for Java (/usr/share/log4j/package.env)
...

Mint már említettük, a szögletes zárójelek ([]) közötti nevek azok az azonosítók, amelyeket a java-config --set-system-classpath parancsnak kell átadni, eképpen:

Kódlista 6.2: Classpath beállítása

# java-config --set-system-classpath log4j,xerces-2

Megjegyzés: Az aktuális könyvtár (.) nem lesz benne a rendszer-classpathban, mivel azt a bejelentkezési profile-ban kell megadni.

Ezután frissíteni kell a környezetet, vagy ki- és bejelentkezéssel, vagy az /etc/profile source-olásával.

Felhasználók esetében a java-config --set-user-classpath létrehozza a $HOME/.gentoo/java-env-classpath-ot, amelyet utána source-olni kell a shelled profile-jából.

Kódlista 6.3: Felhasználó-specifikus classpath source-olása

if [[ -f "${HOME}/.gentoo/java-env-classpath" ]]; then
       source ${HOME}/.gentoo/java-env-classpath
fi

Ha valóban rendszerszintű vagy felhasználói alapértelmezett classpath-ot akarsz, az alábbihoz hasonló sort adhatsz hozzá a shelled profile-jához - de ezt nem mi nem tanácsolnánk.

Kódlista 6.4: A classpath beállítása

# export CLASSPATH="${CLASSPATH}:$(java-config --classpath log4j,xerces-2)" 

7.  Java böngésző pluginek

Plugin telepítése

Ha telepíteni szeretnéd a Java plugint a webböngésződbe, akkor a Java VM-et az nsplugin USE zászlóval kell emergelned.

Megjegyzés: Az nsplugin nem minden architektúrán érhető el. Légyszi nézd meg a telepítés előtt az elérhetőségét az emerge -pv <java-vm> kimenetében.

A Portage rendszere lehetővé teszi több Java plugin verzió telepítését egyazon gépre, viszont a webböngésző csak egyet tud egyszerre használni. Nézd meg, hogy nálad hány elérhető plugin van telepítve:

Kódlista 7.1: Az elérhető pluginok listázása

# eselect java-nsplugin list
   [1]   sun-jre-bin-1.5
   [2]   blackdown-jre-1.4.2

A példánkban a sun-jre-bin-t fogjuk kiválasztani a webböngésző pluginjának.

Kódlista 7.2: Egy plugin kiválasztása

# eselect java-nsplugin set sun-jre-bin-1.5

A kiválasztás helyességének leellenőrzése:

Kódlista 7.3: Helyes plugint választottunk?

# eselect java-nsplugin list
   [1]   sun-jre-bin-1.5  current
   [2]   blackdown-jre-1.4.2

A Java.com-on található egy weblap, amivel leellenőrizhető, hogy a telepített plugin megfelelő-e. Ha Mozilla alapú webböngésződ van, akkor másképpen is leellenőrizheted a jelenleg érvényben lévő Java plugint. Írd be a link sorába: about:plugins.

Pluginok a multilib rendszereken

Ha kevert (32 és 64 bites) multilib rendszert (például AMD64) használsz, akkor csak a 32 bites verziót fel kell telepítened.

Ha 32 bites plugint használsz, akkor emergelned kell a emul-linux-x86-java csomagot az nsplugin USE flaggel.

Kódlista 7.4: Egy 32 bites plugin telepítése

# echo "app-emulation/emul-linux-x86-java nsplugin" >> /etc/portage/package.use
# emerge emul-linux-x86-java

Utánna nézd meg, hogy mely pluginok elérhetőek:

Kódlista 7.5: Az elérhető pluginok listázása

# eselect java-nsplugin list
Available 32-bit Java browser plugins
  [1]   emul-linux-x86-java-1.4.2
  [2]   emul-linux-x86-java-1.5

Miután kiválasztottál egy 32 bites plugint a 32 bites böngészőhöz (például: firefox-bin), a 64 bites böngésződ (például: konqueror) a Java VM-et szintén tudja már használni. Ha lehetséges, akkor a 64 bites blackdown verziót; azaz nem szükséges külön konfigurálni.

Most válassz ki egy jó plugint a 32 bites böngésződnek:

Kódlista 7.6: Pluginok kiválasztása

# eselect java-nsplugin set 32bit emul-linux-x86-java-1.5

A kiválasztás helyességének leellenőrzése:

Kódlista 7.7: Helyes plugint választottunk?

# eselect java-nsplugin list
Available 32-bit Java browser plugins
  [1]   emul-linux-x86-java-1.4.2
  [2]   emul-linux-x86-java-1.5  current

8.  USE flagek használata Javával

A USE flagek beállítása

A USE flagek használatáról a Gentoo Kézikönyv USE flagek fejezetében olvashatsz bővebben.

A flagek

  • A java flag sokféle program Java-támogatását biztosítja
  • Az nsplugin flag támogatást nyújt a Mozilla-típusú böngészőkhöz (beleértve a Firefoxot). Erre szükséged lesz, ha Mozilla-alapú böngészőben Java-kisalkalmazásokat akarsz megtekinteni.
  • A source flag a csomagok forráskódját zippelt formában telepíti. Ezt jellemzően olyankor használják, ha az IDE (integrált fejlesztőkörnyezet) számára szükséges a csomag forráskódja.
  • A doc flag jellemzően telepíti az API dokumentációt, ahogyan a javadoc generálja.

9.  További anyagok

Offline anyagok

  • a java-config kézikönyv-oldala (man)
  • java-config --help

Online anyagok



Nyomtatás

Frissítve 2007. április 28.

Ezen dokumentum eredeti változatának utolsó frissítési dátuma 2009. október 7.

Összefoglaló: Ez az útmutató bevezet a Java programnyelvbe, és elmagyarázza, hogyan használd Gentoo Linuxon.

Joshua Nichols
Szerző

Karl Trygve Kalleberg
Szerző

Joshua Saddler
Szerkesztő

Konkoly Katalin
Fordító

Lónyai Gergely
Lektor

Donate to support our development efforts.

Support OSL
Gentoo Centric Hosting: vr.org
Tek Alchemy
SevenL.net
Global Netoptex Inc.
Bytemark
Online Kredit Index
Copyright 2001-2009 Gentoo Foundation, Inc. Questions, Comments? Contact us.