Gentoo Java Útmutató
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 |
# java-config --set-system-vm blackdown-jdk-1.4
Now using blackdown-jdk-1.4 as your generation-2 system JVM
# 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 |
*=sun-jdk
|
Kódlista 4.4: Példa az /etc/java-config-2/build/jdk.conf-ra |
*=sun-jdk-1.5
|
Kódlista 4.5: Példa az /etc/java-config-2/build/jdk.conf-ra |
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
Ez a dokumentum a Creative Commons -
Attribution / Share Alike licensz védelme alatt áll.
|