Hlavní navigace

Java na Linuxu, úvod

binary runner

Stále více aplikací se píše v Javě. Důvodů je více než jen nezávislost na operačním systému. Z těch hlavních jmenujme alespoň velký výběr aplikačních rozhraní a čistě objektový přístup podporující tvorbu aplikací z komponent (beans a enterprise beans). Pro zájemce o vývoj javových aplikací na Linuxu jsou určeny následující kapitoly popisující základních vývojové nástroje a jejich zprovoznění na Linuxu.

Java Development Kits (JDKs)

Java není konkrétní softwarový balík, jde o tři základní specifikace – Java Language Specification definuje jazyk, Java 2 Platform API Specification základní třídy a Java Virtual Machine Specification prostředí pro běh aplikací. Jejich kombinací dostáváme vývojové prostředí pro Java aplikace, tzv. Java Development Kit (JDK), obsahující zejména kompilátor, JVM a základní třídy. Pro Linux jsou dostupná JDK Sun Java 2 SDK, Kaffe a IBM Java 2 SDK. Co najdete v každém JDK:

  • knihovnu základních tříd, tzv. core classes
  • kompilátor javac a JVM java
  • debugger jdb
  • generátor dokumentace javadoc
  • manager Java archivů (JAR) jar a jarsigner na jejich podpisování

Technologie Javy

Vývojový cyklus javové aplikace je typicky následující:

  1. Vznikne zdrojový kód v jazyce Java. V každém souboru <class_name>.java je uložena definice třídy <class_name>.
  2. Kompilátor převede zdrojový kód na platformně nezávislý bytecod, který ukládá do souborů (*.class). Co soubor, to třída.
  3. Spustí se Java Virtual Machine (JVM), jako argument je mu předán název hlavní třídy. JVM natáhne třídy z patřičných adresářů (viz dále), pak podle jména třídy <class_name> otevře soubor <class_name>.class a hledá v něm metodu main. Pokud uspěje, začne interpretovat bytecod třídy.

Kompilátor i JVM hledá a načítá třídy v pořadí:

  1. boostrap/core classes – Třídy java.* a další tvořící oficiální jádro Javy. Archivy, které je obsahují, typicky rt.jar, jsou umístěny v adresáři JDK jre/lib.
  2. extension classes – Třídy javax.* a další rozšiřující jádro Javy přes Java Extension Framework. Jsou obvykle umístěny v adresáři JDK jre/lib/ext. Ve standardní distribuci to může být třeba Java Cryptography Extension (JCE)(do jádra zřejmě nezařazená, aby toho nezneužívali ti zlobiví teroristi) nebo Java Servlet API (pro „javová CGI“).
  3. user classes – Další třídy nevyužívající mechanismus Java extensions, jejich umístění určuje obsah proměnné CLASSPATH.

Interpretovaný kód je pochopitelně pomalejší než kód kompilovaný. Důvodem je režie interpretu a někdy i nedostatky v optimalizaci. To se vývojáři JVM snaží řešit pomocí techniky tzv. Just-In-Time kompilace, kdy se na požádání bytecod kompiluje do nativního kódu. Zrychlení je údajně deseti- až stonásobné, ovšem vzhledem k době překladu to není právě optimální pro krátce běžící aplikace. Zřejmě jakýmsi kompromisem je HotSpot od Sun Microsystems, kdy JVM monitoruje prováděný kód a optimalizuje často prováděné části, a to i v průběhu debugování.

Java Archive (JAR)

JAR (Java Archive) je platformně nezávislý formát pro archivaci souborů. Všechny Java extensions jsou distribuovány v JARech. Používá ZLIB kompresi ZIPu, a aby se to nepletlo, syntax utility jar se dost podobá taru. Od verze JDK 1.3 může JAR pro rychlejší přístup ke svému obsahu mít i JarIndex, informace o obsahu adresářů je pak uložena v jednoduchém textovém souboru INDEX.LIST v adresáři META-INF nalézajícím se v kořeni JARu. Index v JARu vytvoříte příkazem  jar -i <file>.jar.

Příště si povíme něco o jednotlivých JDK.

Našli jste v článku chybu?

19. 3. 2007 9:03

miro (neregistrovaný)
vies, musis pouzit Integer, Double

17. 6. 2006 20:17

Harvie (neregistrovaný)
Nevíte někdo prosím, jak v javě zjišťovat a nastavovat stav Caps locku, numlocku a scrollllllocku? googloval sem ostošest a našel jsem jen nějaký výstřižek z knihy od Ourejliho, který moje angličtina nepřežvejkala moc dokonale... díky za radu.
DigiZone.cz: V Plzni odstartovalo Radio 1

V Plzni odstartovalo Radio 1

120na80.cz: Rovnátka, která nejsou vidět

Rovnátka, která nejsou vidět

DigiZone.cz: R2B2 a Hybrid uzavřely partnerství

R2B2 a Hybrid uzavřely partnerství

120na80.cz: Boreliózu nelze žádným testem prokázat

Boreliózu nelze žádným testem prokázat

Lupa.cz: Levný tarif pro Brno nebude, je to kartel

Levný tarif pro Brno nebude, je to kartel

DigiZone.cz: Ohrozí Freedom TV přechodové sítě?

Ohrozí Freedom TV přechodové sítě?

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

DigiZone.cz: Sat novinky: slovenská TV8 HD i ruský NTV Mir

Sat novinky: slovenská TV8 HD i ruský NTV Mir

120na80.cz: 5 nejčastějších mýtů o kondomech

5 nejčastějších mýtů o kondomech

Vitalia.cz: Test na HIV je zdarma i za pět set

Test na HIV je zdarma i za pět set

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

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

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

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

Lupa.cz: Obchod budoucnosti je bez front, košíků i pokladen

Obchod budoucnosti je bez front, košíků i pokladen

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Vitalia.cz: Jak vybrat ořechy do cukroví a kde mají levné

Jak vybrat ořechy do cukroví a kde mají levné