Hlavní navigace

Instalujeme programy v Javě, část 1

Lukáš Zapletal 21. 2. 2003

Programovací jazyk Java pronikl do celého světa a téměř do všech operačních systémů včetně Linuxu. Je dnes spolu s technologií .NET tématem číslo jedna. Dnes se dozvíme, jak Javu na Linuxu nainstalovat.

V následujících dvou článcích se nebudeme věnovat jazyku Java. Zaměříme se hlavně na to, jak Javu (resp. JRE) a programy v ní správně nainstalovat a spouštět. Nejednou se mi stalo, že mě kamarád oslovil: „Nevíš, neexistuje prográmek na to a na to…“. Po nadiktování URL po chvíli slyším: „Jo to je v Javě, tak nic“. S tím je teď konec! Po přečtení článku doufám odpadne ten prvotní odpor k programům v Javě. Hlavně díky novému hardwaru jsou dávno pryč ty doby, kdy byly programy v Javě pomalé a tím i nepoužitelné. Naším cílovým operačním systémem bude samosebou Linux (v mém kontrétním případě Mandrake 9.0).

Ze všeho nejdříve si musíme ujasnit dva pojmy: JREa JDK. JRE (Java Runtime Environment) je běhové prostředí umožňující spouštět programy v Javě. Protože výstupem Java kompilátoru není přirozený linuxový spustitelný soubor (ale soubor .class), musíme být schopni nějak program spustit. K tomuto slouží právě JRE, jehož instalační balík obvykle nepřesahuje 10MB. Že se jedná o spustitelný kód Javy – bytekód – se můžete přesvědčit příkazem file, pokud jej máte na svém systému nainstalován. Naproti tomu JDK (Java Development Kit) je balík, obsahující JRE, kompilátor Javy, potřebnou (značně obsáhlou – přes 100MB) dokumentaci a různé pomocné programy. Pokud tedy hodláte programy jen spouštět, budete potřebovat JRE, pokud chcete i programovat, musíte mít JDK (JDK má zhruba 30MB + dokumentace je na tom podobně).

Jak jistě tušíte, JRE i JDK jsou k dispozici zdarma. Základní implementace vycházejí většinou nejdříve od firmy Sun Microsystems (tvůrce jazyka). Samozřejmě, že máte na výběr i alternativní implementace, které přicházejí na trh obvykle s malým zpožděním, protože programátoři musejí doplnit všechny vlastnosti nové verze. Mezi nejznámější patří IBM, Blackdown a Kaffe. Často se pro Linux volila implementace IBM nebo Blackdown, a to zejména kvůli rychlosti (byly o něco rychlejší), ale dnes už Sun srovnal krok a díky technologii HotSpot jsou na tom rychlostně všechny implementace zhruba stejně.

Pokud jste začátečník, doporučuji implementaci od Sunu. U ní máte zaručeno, že vše funguje tak, jak má, a nestane se vám, že některá vlastnost bude chybět. Díky tomu, že Sun nedávno otevřel zdrojové kódy virtuálního stroje (jádro JVM), se můžete také těšit na spoustu vylepšení, zejména co se týče rychlosti. Pro fajšmejkry tu máme ještě IBM (zatím closed source) nebo Blackdown (zcela otevřená licence). Kaffe je čistá GNU implementace, která není certifikovaná Sunem. Kaffe velice zaostává za ostatními ditribucemi, nepodporuje mnoho knihoven a slouží spíše k výukovým účelům. Obvykle však bývá standardně nainstalována v mnoha linuxových ditribucích, a proto ji musíte před instalací plnokrevníka také odinstalovat.

Dost bylo teorie, vrhneme se na to. Nejprve se rozhodněte mezi JRE a JDK. Vyberte si tu svoji distribuci a stáhněte si ji. Nyní zjistíme, zda je Java nainstalována. Jelikož se programy v Javě spouští příkazem java, můžeme si ověřit verzi:

Tabulka č. 386
[lzap@localhost test]$ java -version
Kaffe Virtual Machine

Copyright (c) 1996-2002 Kaffe.org project contributors
(please see the source code for a full list of contributors).
All rights reservced.
Portions Copyright (c) 1996-2002 Transvirtual
Technologies, Inc.

The Kaffe virtual machine is free software, licensed
under the terms of the GNU General Public License.
Kaffe.org is a an independent, free software
community project, not directly affiliated with
Transvirtual Technologies, Inc.
Kaffe is a Trademark of Transvirtual Technologies, Inc.
Kaffe comes with ABSOLUTELY NO WARRANTY.

Engine: Just-in-time v3   Version: 1.0.7   Java Version: 1.1
Zjištění verze JRE (JDK)

Jak vidíme na příkladu, je zde nainstalováno JRE Kaffe (toto JRE obsahuje i kompilátor). Bude to pravděpodobně i případ vašeho desktopu. Abychom mohli spouštět okenní programy (většina z nich je pro Javu 1.2), musíme Kaffe odinstalovat. Po úspěšném (jak jinak – jsme na Linuxu) odinstalování zkusme ještě jednou volat interpret jazyka Java.

Tabulka č. 387
[lzap@localhost test]$ java -version
java version "1.2"
gij (GNU libgcj) version 3.2 (Mandrake Linux 9.0 3.2-1mdk)

Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
here is NO warranty; not even for MERCHANTABILITY orFITNESS
FOR A PARTICULAR PURPOSE.
GCJ 3.2

Vidíme, že po odinstalování nám v systému zbyla ještě jiná Java. Jedná se o implementaci, o které jsem se záměrně nezmínil: projekt libgcj (nebo také jen GCJ), který je vyvíjen pod licencí GNU jako součást kompilátoru GCC (balíček gcc-java). Není to však intepret Javy, jak ho známe. Dalo by se to nazvat spíše kompilátor, který díky architektuře GCC umí kompilovat přímo do nativního kódu cílové platformy. Umožňuje také kompilovat do bytekódu (tzn. do souborů .class) a balík obsahuje také interpret ( gij). Díky tomu, že jsou v distribuci i shellovské skripty java a javac, které pouze volají gcj a gij s těmi správnými parametry tak, aby gcj vytvářel bytecode a gij jej iterpretoval, může se zdát, že máme na systému nainstalovánu plnohodnotnou Javu. Není tomu ale tak. GCJ totiž zatím (bohužel) neimplementuje Swing knihovny pro tvorbu GUI. Můžeme však zkusit, na co se můžeme v budoucnu těšit:

Tabulka č. 388
[lzap@localhost test]$ javac HelloWorld.java
[lzap@localhost test]$ gcj --main=HelloWorld HelloWorld.java
[lzap@localhost test]$ time java Test
Hello world!
0.15user 0.04system 0:00.22elapsed 82%CPU
[lzap@localhost test]$ time ./a.out
Hello world!
0.09user 0.00system 0:00.09elapsed 98%CPU
Výkon GCJ při spouštění aplikace

Jak vidno na příkladu HelloWorld, rychlost spuštění nativní verze je o něco lepší. To ale může mást. Provedl jsem jednoduchý test s bublinkovým tříděním a zjistil, že nativní GCJ verze je asi třikrát pomalejěší než JRE Sunu, což naznačuje, že optimalizace zkrátka GCJ teprve čekají (máte-li chuť, zkuste tento test zkompilovat podobně jako výše uvedený příklad, porovnat jej s JRE a podělit se o výsledek v diskusním fóru). Po rychlém startu se tedy GCJ bude v pelotonu postupně propadat k posledním místům. Nebudeme ale zabředávat do rychlostních problémů JVM. Tématem článku je naučit se instalovat a spouštět plnohodnotné aplikace (zejména okenní) v Javě. Odinstalujme tedy gcc-java, pokud to náš systém bude pro novou instalaci JRE vyžadovat, a nainstalujme JRE (resp. JDK), které jsme si vybrali a stáhli.

JRE (JDK) bývá zpravidla distribuováno jako RPM, DEB nebo TAR.GZ. Pokud hodláte instalovat balíček pro svůj systém, mějte na paměti, že se to systému nemusí líbít a může vyžadovat odinstalování balíku gcc-java. Já osobně preferuji formu TAR.GZ s následnou ruční instalací. Popíšeme si základní kroky pro ruční instalaci. Pokud jste instalovali z balíčku, alespoň ověřte správnost instalace.

Javu musíme nejdříve rozbalit. Nejvhodnějším místem bude zřejmě /usr/local, ale někdo preferuje i jiné adresáře typu /opt/java1.4.1 a podobně. V zásadě platí, že pokud hodláte experimentovat s různými implementacemi, je vhodnější instalovat do /opt, abyste měli všechno pěkně pohromadě a mohli pohodlně přepínat.

V dalším kroku musíme vytvořit proměnnou JAVA_HOME a nasměřovat ji do adresáře, kde jsme rozbalili. Samozřejmě, že také musíme doplnit cestu PATH o proměnnou $JAVA_HOME/bin, abychom vůbec mohli javu spouštět. V posledním kroku také musíme nastavit proměnnou CLASSPATH. Tato akce je podle mě důležitá, a proto jí věnujeme náležitou pozornost v druhé polovině tohoto článku. Dozvíte se také, jak programy v Javě instalovat.

Linky:
java.sun.com

Našli jste v článku chybu?

8. 10. 2003 10:58

Piškot (neregistrovaný)

Není pravda!
Technologie HotSpot je tak vyspělá, že tohle už není pravda.
viz
http://abclinuxu.cz/clanky/ViewRelation?relationId=43730




25. 2. 2003 10:37

zoul (neregistrovaný)

Podivejte se, odkud neustale vykukuje to kaffe, treba pomoci "which java". Pak si zjistete, jaky balicek obsahuje ten osklivy soubor a s balickem pryc. Ten prikaz na zobrazeni promennych se jmenuje set. A prirozene muzete promenne prostredi nastavovat i za behu <g/>, "export foo=bar".

T.



Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Lupa.cz: Slevové šílenství je tu. Kde nakoupit na Black Friday?

Slevové šílenství je tu. Kde nakoupit na Black Friday?

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Lupa.cz: Babiš: E-shopů se EET možná nebude týkat

Babiš: E-shopů se EET možná nebude týkat

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

Lupa.cz: Není sleva jako sleva. Jak obchodům nenaletět?

Není sleva jako sleva. Jak obchodům nenaletět?

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte