Průvodce Javy v Gentoo Joshua Nichols Karl Trygve Kalleberg Joshua Saddler Jan Oppolzer Tento průvodce vám představí Javu a vysvětlí, jak ji používat s Gentoo Linuxem. 0.9 2006-09-10 Co je Java?
Přehled

Java je programovací jazyk vyvinutý inženýry ze Sun Microsystems. Jazyk je objektově orientovaný a navržený pro běh na mnohých architekturách bez nutnosti překompilování kódu pro každou z nich. Ačkoliv může být Java zkompilována jako nativní program, velká část její popularity může být připisována její přenositelnosti spolu s dalšími vlastnosti jako garbage collection. K umožnění platformní nezávislosti Java kompiler kompiluje Java kód do přechodné reprezentace zvané "Java bajtkód", která běží na JRE (Java Runtime Environment) a ne přímo na operačním systému.

Aby fungoval Java bajtkód, je třeba mít nainstalováno JRE (Java Runtime Environment). JRE, kromě jiného, poskytuje jádro knihoven, platformě nezávislou Java Virtual Machine a zásuvné moduly pro prohlížeče. JDK (Java Development Kit) přidává programovací nástroje, jako je bajtkód kompiler a debugger.

Nový Java systém

Způsob, jakým je Java na Gentoo ovládána, nedávno doznal mnoha změn a vylepšení. To se stalo velice nedávno a jako výledek byly všechny související balíčky označeny testovacím klíčovým slovem, např. ~x86. Tento dokument předpokládá, že používáte tento nový systém.

Klíčová slova

Pokud používáte stabilní strom oproti ~arch, budete muset přidat některé záznamy do vašeho /etc/portage/package.keywords:

# Základní balíčky Gentoo/Java
dev-java/ant-core
dev-java/ant-tasks
dev-java/ant
dev-java/java-config
dev-java/java-config-wrapper
dev-java/javatoolkit
dev-java/sun-jce-bin
# JDK
=dev-java/sun-jdk-1.4*
=dev-java/sun-jdk-1.5*
=dev-java/ibm-jdk-bin-1.4*
=dev-java/ibm-jdk-bin-1.5*
=dev-java/jrockit-jdk-bin-1.4*
=dev-java/jrockit-jdk-bin-1.5*
=dev-java/blackdown-jdk-1.4*
dev-java/kaffe
# JRE
=dev-java/sun-jre-bin-1.4*
=dev-java/sun-jre-bin-1.5*
=dev-java/ibm-jre-bin-1.4*
=dev-java/blackdown-jre-1.4*
# Virtuály
virtual/jdk
virtual/jre
# Kompilery
dev-java/eclipse-ecj
dev-java/jikes
# Dokumentace
dev-java/java-sdk-docs
# Různé balíčky, které byly aktualizovány na generaci-2,
# kde generace-1 nebude sestavena a/nebo nepoběží správně
dev-java/lucene
# Tyto mají volitenou podporu Javy,
# ale potřebují ~arch pro správnou funkci s generací-2
dev-util/subversion
sys-libs/db
Je rozhodující, abyste zapsali VŠECHNY tyto balíčky do /etc/portage/package.keywords, jinak budete mít problémy v dalších krocích tohoto průvodce. Vás nový Java systém nebude fungovat správně bez tohoto seznamu.
Současné instalace

Pro existující instalace, bez ohledu na to, jestli jste instalovali nějakou Javu předtím, se ujistěte, že jste postupovali podle Průvodce aktualizací Javy.

Nové instalace

Nové instalace by neměly vyžadovat žádné další přípravy.

Instalace Virtual Machine
Volby

Gentoo poskytuje četná JRE (Java Runtime Environments) a JDK (Java Development Kit). Mimo jiné možnosti, máme:

The Blackdown Java Kitdev-java/blackdown-jdkdev-java/blackdown-jreSun's Java Kitdev-java/sun-jdkdev-java/sun-jre-binThe IBM Java Kitdev-java/ibm-jdk-bindev-java/ibm-jre-binThe Compaq Java Kit for Alpha/Linux/GNUdev-java/compaq-jdkdev-java/compaq-jreBEA WebLogic's J2SE Development Kitdev-java/jrockit-jdk-bin
Prodejce JDK JRE

Standard pro Javu 1.4 je dvojice Blackdown JRE/JDK, jelikož je volně dostupná ke stažení bez jakýchkoli registračních starostí.

JRE a JDK od Sun, IBM a BEA jsou všeobecně rychlejší, ale jejich získání dá trochu více práce, jelikož je vyžadováno přečtení a souhlas s jejich licencí před stažením (IBM dodatečně vyžaduje vaši registraci).

Instalace JRE/JDK

K instalaci vašeho profilového standardního JDK můžete spustit emerge virtual/jdk. Nebo k instalaci vašeho profilového standardního JRE můžete spustit emerge virtual/jre.

V nedávných událostech Sun změnil licenci pro své JDK a JRE na více přátelskou pro Linuxové distribuce. Jako výsledek budou vydání Javy 1.5 a dále volně ke stažení bez jakýchkoli dalších potíží.

JDK také obsahuje JRE, takže pokud nainstalujete JDK, neměli byste muset také instalovat JRE.
Instalace Virtual Machine s omezeným stažením

Jak již bylo zmíněno, nekteré JDK a JRE vyžadují několik kroků navíc před instalací. Jednoduše instalujte balíčky jako normálně. Ebuildy vás budou instruovat, kam jít a co stáhnout.

Měli byste stáhnout indikované soubory do /usr/portage/distfiles. Jakmile tam budou, můžete spustit příkaz emerge znovu a tehdy se začne JRE/JDK instalovat.

Konfigurace vaší Virtual Machine
Přehled

Gentoo má možnost mít nainstalováno více JDK a JRE bez konfliktů.

Použitím nástroje java-config můžete nastavit systémový standard (pod podmínkou, že máte rootovská práva). Uživatelé mouhou java-config použít také k nastavení jejich vlastního standardu.

Můžete také použít eselect ke změně systémové a uživatelské VM. Viz eselect java-vm help.
Nastavení standardní Virtual Machine

Spuštění příkazu java-config --list-available-vms vám dá seznam všech nainstalovaných JRE a JDK na vašem systému. Zde je příklad výstupu:

# java-config --list-available-vms
1) Blackdown JDK 1.3.1 [blackdown-jdk-1.3] (/etc/env.d/java/20blackdown-jdk-1.3)
2) Blackdown JDK 1.4.2.02 [blackdown-jdk-1.4] (/etc/env.d/java/20blackdown-jdk-1.4)
3) Blackdown JRE 1.4.2.02 [blackdown-jre-1.4] (/etc/env.d/java/20blackdown-jre-1.4)
4) IBM JDK 1.4.2 [ibm-jdk-bin-1.4] (/etc/env.d/java/20ibm-jdk-bin-1.4)
5) IBM JRE 1.4.2 [ibm-jre-bin-1.4] (/etc/env.d/java/20ibm-jre-bin-1.4)
6) WebLogic JRockit 1.4.2.05 [jrockit-jdk-bin-1.4] (/etc/env.d/java/20jrockit-jdk-bin-1.4)
7) WebLogic JRockit 1.5.0.03 [jrockit-jdk-bin-1.5] (/etc/env.d/java/20jrockit-jdk-bin-1.5)
8) Sun JDK 1.3.1.13 [sun-jdk-1.3] (/etc/env.d/java/20sun-jdk-1.3)
9) Sun JDK 1.4.2.09 [sun-jdk-1.4] (/etc/env.d/java/20sun-jdk-1.4)
*) Sun JDK 1.5.0.04 [sun-jdk-1.5] (/etc/env.d/java/20sun-jdk-1.5)
11) Sun JRE 1.4.2.09 [sun-jre-bin-1.4] (/etc/env.d/java/20sun-jre-bin-1.4)
12) Sun JRE 1.5.0.04 [sun-jre-bin-1.5] (/etc/env.d/java/20sun-jre-bin-1.5)

* signalizuje současnou aktivní VM (systémovou nebo uživatelskou, pokud byla nastavena). Jméno v hranatých závorkách ([]) je označení nebo ID pro jednotlivé VM. V java-config --set-system-vm můžete použít označení nebo číslo. Zde je příklad, jak nastavit systémovou VM.

(Podle označení (preferováno))
# java-config --set-system-vm blackdown-jdk-1.4
(Podle čísla)
# java-config --set-system-vm 2

Jako běžný uživatel můžete použít java-config --set-user-vm.

Již nemusíte používat příkaz source ke znovunačtení profilu pro aktualizaci uživatelské/systémové VM.
Preferované VM

Přes slučování Java balíčků, VM může být změněna podle potřeby.

Vzhledem k&nbps;velké rozmanitosti dostupných VM nemáme zdroje na testování a ověření, že každý balíček funguje na všech z nich. Pro ujištění, že každý balíček se nainstaluje hladce, jsme definovali seznam standardních/podporovaných VM pro každou architekturu. Můžete ho najít v /usr/share/java-config/config/jdk-defaults.conf. Když budete instalovat Java balíček, který zjistí, že nějaká VM z tohoto seznamu je nainstalovaná, automaticky použije tuto VM namísto systémové.

Změna VM po dobu instalace je také nutná, když např. vaše systémova VM je nastavena na 1.4 a balíček, který instalujete vyžaduje VM 1.5. Během instalace se použije preferovaná VM 1.5 a vaše systémová volba zůstane nedotčena.

Samozřejmě, že Gentoo je o volbě, a proto můžete přepsat tyto standardy v /etc/java-config-2/build/jdk.conf, čímž získáte kompletní kontrolu nad tím, která VM se použije. Nějaké příklady:

(Vždy chci použít sun-jdk, např. sun-jdk-1.4 pro 1.4, sun-jdk-1.5 pro 1.5, atd.)
*=sun-jdk
(Kde je možné, vždy použij sun-jdk-1.5, kromě případu, když 1.4 nebo 1.3 VM je výslovně vyžadována)
*=sun-jdk-1.5
# Pro 1.3 preferuji sun-jdk-1.4, ale když není dostupný, použij ibm-jdk-bin,
# Pro 1.4 použij blackdown-jdk a pro 1.5 použij sun-jdk
1.3=sun-jdk-1.4 ibm-jdk-bin
1.4=blackdown-jdk
1.5=sun-jdk
Neměli byste upravovat tento soubor. Pokud změníte tato nastavení na použití nepodporované VM, Java by mohla přestat fungovat. Chybová oznámení s nepodporovanou VM nebudou mít tak vysokou prioritu jako chybová oznámení s podporovanou VM.
Kompilery

Standardní Java kompiler použitý pro sestavování je javac, který je v každé JDK. Kromě konfigurace VM použité během sestavování je také možné nastavit, který kompiler bude použit. V podstatě v /etc/java-config-2/build/compilers.conf definujete seznam vašich priorit, podle kterých se použije kompiler.

# Pokud to ebuild podporuje,
# zkontroluje proměnnou COMPILERS od začátku do konce
# a použije první kompiler, který je nainstalovaný
COMPILERS="ecj-3.1 jikes javac"

Některé kompilery nepodporují všechny možné -target a -source argumenty. Proto každý kompiler v seznamu je zkontrolován, jestli podporuje zvolený -source/-target. javac bude fungovat ve všech případech, takže pokud není nalezen žádný jiný vhodný kompiler, bude použit javac.

Více detailů o každém kompileru je poskytnuto dále:

javacjavacN/A Toto je standardní kompiler, který bude použit a je obsažen v každém JDK. jikesjikesdev-java/jikes Jikes byl původne vyvinut v IBM. Neoficiálne je všeobecně rychlejší než javac. Ačkoli poznamenejme, že je více formální a bude chybovat za několika málo okolností, kdy javac by fungoval bez problémů. Také stále nepodporuje syntaxi Java 1.5. Eclipse Compiler for Javaecj-3.1=dev-java/eclipse-ecj-3.1* ECJ je kompiler použit v Eclipse software development kit. Má velice hodně vlastností a je pěkně rychlý. Podporuje syntaxi Java 1.5.
Jméno Označení Balíček Popis
Nastavení standardní CLASSPATH
Nastavení vysvětlená v této sekci by měla být považována za nepřípustná a budou v budoucnosti nejspíše odstraněna. Důrazně nedoporučujeme jejich použití, protože vaše Java projekty nebo aplikace by měly ideálně zvládat jejich vlastní CLASSPATH. Pokud se rozhodnete upřesnit standardní CLASSPATH, některé aplikace by se mohly chovat neočekávaně, protože třídy, které neočekávaly by mohly být v CLASSPATH.

java-config může být také použit k nastavení systémové standardní CLASSPATH, stejně tak jako k nastavení té uživatelské.

Nejdříve budete chtít vypsat seznam dostupných Java knihoven nainstalovaných na vašem systému, které byste mohly dát do vaší CLASSPATH. Zde je příklad výstupu:

# 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)
...

Jména v hranatých závorkách ([]) jsou opět ID, která můžete předat do java-config --set-system-classpath. Zde je příklad:

# java-config --set-system-classpath log4j,xerces-2
Současný adresář (.) nebude součástí systémové CLASSPATH, protože ten by měl být přidán do vašeho systémového přihlašovacícho profilu.

Budete muset aktualizovat vaše prostředí pomocí odhlášení a přihlášení nebo pomocí znovunačtení (source) /etc/profile.

Pro uživatele java-config --set-user-classpath vytvoří soubor ~/.gentoo/java-env-classpath, který poté můžete načíst ze svého shellového profilu.

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

Pokud skutečně chcete vlastní systémovou nebo uživatelskou CLASSPATH, můžete přidat něco podobného jako následující do svého shellového profilu. Ale nedoporučujeme to.

# export CLASSPATH="${CLASSPATH}:$(java-config --classpath log4j,xerces-2)" 
USE proměnné pro použití s Javou
Nastavení USE proměnných

Pro více informací týkajících se USE proměnných se zaměřte na kapitolu USE proměnné z Gentoo Handbooku.

Proměnné
  • java proměnná přidá podporu Javy do různých programů
  • nsplugin proměnná přidá podporu Javy do prohlížečů založených na Mozille (včetně Firefoxu). Tuto proměnnou budete potřebovat pro zobrazování Java appletů ve vašem prohlížeči založeném na Mozille.
  • source proměnná nainstaluje zip archivy zdrojových kódů balíčku. To je tradičně použito v IDE pro 'přidání' zdrojového kódu do knihoven, které používáte.
  • Pro Java balíčky doc proměnná sestaví API dokumentaci použitím javadoc.
Další zdroje
Off-line zdroje
  • manuálová stránka java-config
  • java-config --help
Online zdroje
  • Stránka Java projektu
  • Archiv mailových konferencí gentoo-java, gentoo-user, a gentoo-dev
  • #gentoo a #gentoo-java na irc.freenode.net
  • Záznam Java na Wikipedii