Obsah
![]() | Poznámka |
---|---|
Psáno se svolením autora podle článku P. Adámka "Co se děje v Javě" (publikováno ve sborníku SLT2004) |
Mezi pravidelné změny v každé nové verzi jazyka Java patří zvýšení rychlosti; v tomto směru Java 1.5 nikterak nevybočuje. Kromě několika změn v garbage collectoru a virtuálním stroji je asi nejvýznamnějším prvkem vlastnost nazvaná class data sharing. Tento mechanismus urychluje start virtuálního stroje a šetří paměť v případě několika souběžně spuštěných virtuálních strojů. Princip spočívá v tom, že se při instalaci JRE (nebo Java SDK) spustí virtuální stroj a pak je paměťová oblast vyhrazená pro read-only data uložena do souboru na disk. Při každém dalším spuštění JVM se tato oblast namapuje do paměti, což start výrazně urychlí. Pokud běží více virtuálních strojů naráz, tato oblast je sdílená.
Mechanismus funguje pouze pro klientskou verzi JVM; serverová verze podporována není, což je ale pochopitelné. Serverové aplikace jsou většinou vytvářeny jako vícevláknové v rámci jednoho virtuálního stroje a běží nepřetržitě.
Další věc, která doposud v Javě chybí, je typ {\em enum}. To se doposud řešilo několika způsoby, od definování konstant typu int (což postrádá jakoukoliv typovou kontrolu) až po užívání typově bezpečného řešení založeného na definici třídy pro každý výčtový typ, navrženého v \cite{Bloch:2002}. Toto řešení ve své nejjednodušší variantě vypadá takto:
public class Color {
private Color() {};
public static final Color red = new Color();
public static final Color green = new Color();
public static final Color blue = new Color();
public static final Color yellow = new Color();
}
Právě na tomto principu je založená implementace výčtového typu, která je od verze 1.5 přímou součástí jazyka Java. Výčtový typ se zde ale definuje mnohem snadněji:
public enum Color { red, green, blue, yellow };
Pro úplnost je nutné poznamenat, že takto definovaný výčtový typ disponuje mnohem širšími možnostmi než předchozí varianta. Dále viz dokumentace API k Java 5.
Tento nový prvek Jazyka Java umožňuje zdrojový kód rozšířit o doplňkové informace deklarativního charakteru; uplatnění nalezne zejména v J2EE, kde eliminuje nutnost vytváření spousty zbytečného kódu a psaní deployment deskriptorů.
</listitem> </varlistnentry><varlistnentry> <term>Formátování vstupu a výstupu</term> <listitem>Nyní bude v Javě konečně možné používat mocné formátování výstupu funkcí fprint, známou z jazyků C/C++. Kromě toho jsou rozšířeny možnosti zpracování vstupu.
</listitem> </varlistnentry><varlistnentry> <term>Proměnný počet parametrů</term> <listitem>Toto je další prvek známý z jazyků C/C++; osobně jej považuji za nepříliš důležitý a někteří lidé tvrdí, že byl zaveden jenom kvůli metodě printf (viz předchozí bod).
</listitem> </varlistnentry><varlistnentry> <term>Nový Look and Feel</term> <listitem>Ve Windows přibyl nový vzhled pro knihovnu Swing, který vypadá jako Windows XP, v Linuxu pak vzhled, který vypadá jako GTK.
</listitem> </varlistnentry><varlistnentry> <term>Rozšířená podpora pro XML</term> <listitem>Za tímto téměř marketingovým pojmem se skrývá mnoho drobných ale velice užitečných vylepšení. Patří mezi ně plná podpora XML 1.1 a jmenných prostorů, XML Schémat, SAX 2.0.1, XSLT a XSLTC, DOM level 3, XPath, a další.
</listitem> </varlistnentry><varlistnentry> <term>Monitorování a správa</term> <listitem>Umožní monitorovat a ovládat virtuální stroj pomocí rozhraní JMX.
</listitem> </varlistnentry><varlistnentry> <term>Podpora pro 32-bitové znaky a Unicode 4.0.</term> <listitem></listitem> </varlistnentry>