Oracle Java SE (JRE)
Nedávno boli z testovacej verzie Debianu (wheeze) odstránené balíky Java od Sun. Po predaji firmy Sun vo vývoji pokračuje firma Oracle, ale nové verzie Java SE v úložisku nie sú a, kvôli licencii, ani nebudú..
Neviem ako vám, ale mne sa zdá slobodná náhrada (OpenJDK) akási pomalšia, tak som sa pustil do pátrania ako dostať RE Javy späť. V článku popíšem postup, ako si urobíte základnú inštaláciu, vrátane zásuvného modulu do prehliadačov a náhradného balíka na odinštalovanie OpenJDK.
Získanie Java RE
Súbor s RE Javy možno stiahnuť zo stránok www.oracle.com, pričom momentálne sú k dispozícii dve verzie Java SE 6 a Java SE 7 – pričom každá obsahuje jednu verziu pre 32b systémy a jednu pre 64b systémy (balíky RPM do úvahy neberiem). Vyberte si teda vhodnú architektúru (prípadne obe), nezabudnite odsúhlasiť licenciu a stiahnite príslušný súbor, ja si ich ukladám do /usr/src/jre:
ls -l /usr/src/jre celkom 105M -rw-r--r-- 1 slavko slavko 21M dec 4 20:38 jre-6u29-linux-i586.bin -rw-r--r-- 1 slavko slavko 21M okt 6 17:02 jre-6u29-linux-x64.bin -rw-r--r-- 1 slavko slavko 33M okt 6 18:04 jre-7u1-linux-i586.tar.gz -rw-r--r-- 1 slavko slavko 31M okt 6 18:03 jre-7u1-linux-x64.tar.gz
Ako môžete sami vidieť, 64b verzia má označenie „linux-x64” a 32b verzia zase „linux-i586”. V zvyšku článku budem popisovať postup pre 64b verziu, ale inštalácia 32b by mala byť rovnaká.
Inštalácia Java RE
Najprv sa musíte rozhodnúť, kam budete JRE inštalovať. Vo viacerých návodoch je zmienený adresár /opt, ktorý je určený na inštaláciu programov, ktoré nie sú súčasťou distribúcie, ja však dávam prednosť adresáru /usr/local. Ak sa rozhodnete pre /opt, zmeňte si cesty v nasledujúcich príkazoch. Samotný postup inštalácie sa líši podľa verzie, takže najprv verziu 1.6, potom 1.7.
Spoločným krokom však je pripravenie adresára, kde JRE nainštalujete (ako root):
mkdir -p /usr/local/lib/jvm
JRE 1.6
Java RE tejto verzie je distribuované ako samo-rozbaľujúci sa archív, čo znamená, že jeho spustením sa archív rozbalí a po rozbalení ho treba presunúť na zvolené miesto (ako root):
sh jre-6u29-linux-x64.bin mv jre1.6.0_29 /usr/local/lib/jvm/
Výsledkom je adresár jre1.6.0_29, kde 1.6.0_29 udáva verziu JRE, vrátane čísla revízie (29). Po nainštalovaní možno nainštalovať alternatívy:
update-alternatives \
--install /usr/bin/java java /usr/local/lib/jvm/jre1.6.0_29/bin/java 6 \
--slave /usr/share/man/man1/java.1.gz java.1.gz \
/usr/local/lib/jvm/jre1.6.0_29/man/man1/java.1
update-alternatives \
--install /usr/bin/javaws javaws /usr/local/lib/jvm/jre1.6.0_29/bin/javaws 6
A nakoniec nastaviť alternatívy tak, aby používali zvolenú verziu:
update-alternatives --set java /usr/local/lib/jvm/jre1.6.0_29/bin/java update-alternatives --set javaws /usr/local/lib/jvm/jre1.6.0_29/bin/javaws
JRE 1.7
V prípade tejto verzie JRE ste stiahli archív tar.gz, ktorý zase treba rozbaliť a presunúť na zvolené miesto (opäť ako root):
tar xavf jre-7u1-linux-x64.tar.gz mv jre1.7.0_01 /usr/local/lib/jvm/
V tomto prípade je výsledkom adresár jre1.7.0_01, kde 1.7.0_01 udáva verziu JRE, vrátane revízie (01). I v prípade tejto verzie je potrebné nainštalovať alternatívy:
update-alternatives \
--install /usr/bin/java java /usr/local/lib/jvm/jre1.7.0_01/bin/java 7 \
--slave /usr/share/man/man1/java.1.gz java.1.gz \
/usr/local/lib/jvm/jre1.7.0_01/man/man1/java.1
update-alternatives \
--install /usr/bin/javaws javaws /usr/local/lib/jvm/jre1.7.0_01/bin/javaws 7 \
--slave /usr/share/man/man1/javaws.1.gz javaws.1.gz \
/usr/local/lib/jvm/jre1.7.0_01/man/man1/javaws.1
A nakoniec nastaviť alternatívy tak, aby používali zvolenú verziu:
update-alternatives --set java /usr/local/lib/jvm/jre1.7.0_01/bin/java update-alternatives --set javaws /usr/local/lib/jvm/jre1.7.0_01/bin/javaws
Kontrola nastavenia
Najjednoduchšou kontrolou nastavenia je vypísanie si verzie, ktoré napríklad pre verziu 1.7 vypíše niečo podobné:
java -version java version "1.7.0_01" Java(TM) SE Runtime Environment (build 1.7.0_01-b08) Java HotSpot(TM) 64-Bit Server VM (build 21.1-b02, mixed mode)
Inštalácia zásuvného modulu
Ak chcete aby boli vaše prehliadače schopné spúšťať javové aplety, je im potrebné poskytnúť zásuvný modul, ktorý sa o to postará. V oboch verziách je zásuvný modul reprezentovaný súborom libnpjp2.so, takže stačí nainštalovať a nastaviť správnu alternatívu (upozorňujem, že cesta obsahuje architektúru – amd64).
Pre JRE 1.6:
update-alternatives \
--install /usr/lib/mozilla/plugins/libjavaplugin.so mozilla-javaplugin.so \
/usr/local/lib/jvm/jre1.6.0_29/lib/amd64/libnpjp2.so 6
Pre JRE 1.7:
update-alternatives \
--install /usr/lib/mozilla/plugins/libjavaplugin.so mozilla-javaplugin.so \
/usr/local/lib/jvm/jre1.7.0_01/lib/amd64/libnpjp2.so 7
Po nainštalovaní už stačí zvoliť príslušné verziu, napríklad pre JRE 1.7:
update-alternatives \
--set mozilla-javaplugin.so /usr/local/lib/jvm/jre1.7.0_01/lib/amd64/libnpjp2.so
Po reštartované webového prehliadača už musí používať nastavenú verziu zásuvného modulu:

Jeho funkčnosť si môžete overiť napríklad navštívením stránky http://java.com/en/download/installed.jsp alebo http://javatester.org/version.html. Ak ste používali slobodnú implementáciu zásuvného modulu, môžete ho odinštalovať. V mojom prípade sa jednalo o balíky:
aptitude purge icedtea-netx icedtea-netx-common icedtea-plugin
Odstránenie OpenJDK
Ak máte nainštalovanú niektorú z verzií OpenJDK, môžete ju ponechať alebo odstrániť. Či máte OpenJDK nainštalované si môžete overiť spustením:
aptitude search ~iopenjdk i openjdk-6-jre - OpenJDK Java runtime, using Hotspot JIT i A openjdk-6-jre-headless - OpenJDK Java runtime, using Hotspot JIT (headl i A openjdk-6-jre-lib - OpenJDK Java runtime (architecture independent
V tomto prípade vidíte, že mám nainštalované OpenJDK verziu 1.6. Ich odinštalovanie nemusí byť vždy dobrý nápad, pretože na nich môže závisieť veľa ďalších balíkov (samozrejme balíkov s programami napísanými v Jave). Ak to nie je váš problém, jednoducho spusťte:
aptitude purge openjdk-6-jre openjdk-6-jre-headless openjdk-6-jre-lib \
default-jre, default-jre-headless
Ak sa rozhodnete ponechať si OpenJDK, ani to by nemal byť žiadny problém, vďaka systému alternatív v Debiane.
Vytvorenie zástupného balíka
V prípade, že chcete odinštalovať OpenJDK, bude potrebné vytvoriť niečo, čo tieto balíky (je ich viac) nahradí, pretože inak by ste museli odinštalovať všetky javovské programy (kvôli nesplneným závislostiam). Samozrejme, najjednoduchším riešením je ponechať si OpenJDK nainštalované, čím vôbec nič nepokazíte. Ak však z nejakého dôvodu trváte na jeho odinštalovaní, prevediem vás vytvorením náhradného balíka, k čomu budete potrebovať balík equivs. Náhradný balík pomenujem oracle-jre.
Začnite vytvorením riadiaceho súboru:
equivs-control oracle-jre
Tento príkaz vytvorí v aktuálnom adresári súbor oracle-jre, ktorého obsah treba upraviť takto:
Section: misc Priority: optional Standards-Version: 3.9.2 Package: oracle-jre Version: 1.0 Maintainer: Slavko <emailová_adresa> Depends: ca-certificates-java, java-common, tzdata-java Provides: default-jre, default-jre-headless, java-runtime, java6-runtime, java7-runtime, sun-java6-jre, sun-java6-bin, java-runtime-headless, java6-runtime-headless, java7-runtime-headless, icedtea-plugin, icedtea6-plugin, icedtea7-plugin Architecture: all Description: Oracle Java(TM) Runtime Environment The Oracle Java Platform Standard Edition Runtime Environment (JRE) contains the Java virtual machine, runtime class libraries, and Java application launcher that are necessary to run programs written in the Java progamming language. It is not a development environment and doesn't contain development tools such as compilers or debuggers. . You can download Java SE RE from http://www.oracle.com/technetwork/java/javase/downloads/ . This package is dummy package for satisfy dependecies only.
Po upravení súboru oracle-jre možno vygenerovať balík a následne (ako root) nainštalovať balík:
equivs-build oracle-jre dpkg -i oracle-jre_1.0_all.deb
Teraz by ste mali byť schopní bezpečne odinštalovať všetky balíky OpneJDK, v mojom prípade to boli balíky:
aptitude purge default-jre default-jre-headless openjdk-6-jre openjdk-6-jre-headless \
openjdk-6-jre-lib
Aktualizácia
Skôr alebo neskôr, určite budú vydané nové verzie JRE a budete si ich chcieť pridať. V takom prípade jednoducho zopakujte vyššie popísaný postup, avšak pred odstránením starej verzie (jednoducho zmazať adresár v /usr/local/lib/jvm/) nezabudnite na odstránenie alternatív, ako príklad uvediem odstránenie alternatív JRE 6:
update-alternatives \
--remove java /usr/local/lib/jvm/jre1.6.0_29/bin/java
update-alternatives \
--remove javaws /usr/local/lib/jvm/jre1.6.0_29/bin/javaws
update-alternatives \
--remove mozilla-javaplugin.so /usr/local/lib/jvm/jre1.6.0_29/lib/amd64/libnpjp2.so
Tento postup možno jednoducho aplikovať na akúkoľvek verziu, len stačí nastaviť správne cesty...
Inštalácia Java DK
Na bežné spúšťanie programov napísaných v Jave (súbory jar) plne stačí JRE.
V prípade potreby JDK (Java Development Kit) je postup rovnaký, len je treba zmeniť cesty v alternatívach a pridať niekoľko ďalších:
update-alternatives \
--install /usr/bin/javac javac /usr/local/lib/jdk/jdk1.7.0_02/bin/javac 10
update-alternatives \
--install /usr/bin/jar jar /usr/local/lib/jdk/jdk1.7.0_02/bin/jar 10
Je pravdepodobné, že budete chcieť/potrebovať aj ďalšie alternatívy, ale ja som zatiaľ potreboval len tieto dva spustiteľné súbory. Samozrejme, JDK poskytuje aj súbory java, javaws i zásuvný modul pre prehliadače.
Pozornejší si iste všimli, že popisujem novšiu verziu JDK, pretože medzičasom bola vydaná aktualizácia...
Záver
Po dokončení tohoto postupu môžete mať, bez akýchkoľvek problémov, spolu tri rôzne verzie JRE alebo si môžete ponechať len jednu, je to len a len na vašom výbere. Ostáva mi upozorniť, že v tomto návode neriešim kompletné nastavenie alternatív, ktoré inštaluje OpnenJDK, ale len ich základné nastavenie.


