Java v novém

Po mnoha měsících testování betaverzí společnost Sun konečně oficiálně představila novou Javu, a to s pořadovým ...


Po mnoha měsících testování betaverzí společnost Sun konečně oficiálně
představila novou Javu, a to s pořadovým číslem 1.4. Tato verze přináší
podstatná vylepšení jak virtuálního stroje, tak i jazyka samotného. A co víc
Sun se zaměřil i na podstatné zvýšení výkonnosti!
Java je moderní, plně objektově orientovaný programovací jazyk, který je
platformově nezávislý. To znamená, že pokud napíšete program v Javě pod
Windows, můžete jej okamžitě používat i pod Linuxem či Mac OS. Jazyk byl
představen v roce 1995 na konferenci SunWorld a setkal se s velkou pozorností
vývojářské komunity. Sun sice marketingově směřoval Javu do oblasti dynamických
webových stránek (applety), softwarové firmy si však pro ni našly mnohem širší
uplatnění. Sun toto přání respektoval a přidával nové vlastnosti do jazyka.
Téměř každý rok se objeví nová verze se spoustou novinek. Tento článek se
zaměřuje na nejčerstvější verzi 1.4.

Desktop
Se vzrůstajícím výpočetním výkonem a velikostí osazené paměti typického
počítače se Java prosazuje i na poli desktopu. Kancelářské aplikace typu
Anywhere Office sice patří mezi kuriozity, ale vývojová prostředí jako NetBeans
či IntelliJ Idea se řadí mezi úspěšné projekty. Proto mnoho uživatelů potěší
rozšíření a zrychlení knihoven pro grafické operace. K tomu má napomoci nová
pipeline architektura, která má za úkol redukovat frekvenci volání základních
grafických operací. Další novinkou je třída VolatileImage, která umožní
využívat hardwarové akcelerace grafických čipů. Skvělým nápadem se jeví
Pluggable Image I/O Framework. Jedná se o kolekci univerzálních rozhraní, která
umožní vytvářet plug-iny pro libovolné grafické a přenosové formáty. Díky tomu
dnešní aplikace budou schopny pracovat s ještě neexistujícími formáty! Díky
Java Print Service si můžete prohlížet a vybírat tiskárny dostupné na vaší síti
a zjišťovat jejich vlastnosti. Hodně vylepšení je i u zobrazování fontů,
obzvláště těch TrueType. Třešničkou na dortu je přímá podpora rolovacího
tlačítka u myší. Pokud spouštíte grafické aplikace z unixových serverů, můžete
čekat zrychlení grafických operací až o 1 200 %. Jak je to možné? Původní
implementace nebrala ohled na ideu za X-Window protokolem a neefektivně
přesouvala velké obrázky po síti. Aktuální implementace používá kreslicí
příkazy X-Window tak, jak byly navrženy.
Sun se snaží prosadit Javu do oblasti uživatelských aplikací, a proto vyvinul
Java Web Start. Jedná se o technologii pro snadnou a bezpečnou instalaci
aplikací prostřednictvím jediného kliknutí. Jak to má fungovat? Na internetové
stránce kliknete na odkaz. Pokud tato aplikace ještě není nainstalována, Web
Start ji stáhne a uloží na váš disk. Aplikace pak bude kdykoliv přístupná i
přes ikonu na ploše, a to vždy v aktuální verzi. Neoddělitelnou součástí jazyka
je internacionalizace. Java nyní přešla na verzi 3.0 standardu Unicode. Nově
podporovanými Locales jsou thajština a hindština. Pro snadnější práci s
místními měnami Sun zavedl novou třídu java.util.Currency. Pro uložení
uživatelských nastavení se dosud používala třída Properties. Alternativou je
nový balík java.util.prefs. Preferences poskytují možnost, jak jednoduše
ukládat uživatelská či systémová nastavení do externího uložiště. Uložištěm
může být nejen soubor na disku, ale třeba i LDAP adresář. U Preferences se
navíc nemusíte obávat problémů se synchronizací mezi vlákny či procesy.

Komunikace
Sun začlenil do Javy tři knihovny týkající se bezpečnosti, které dosud dodával
odděleně od vlastního jazyka. Jedná se o Java Cryptography Extension (JCE),
Java Secure Socket Extension (JSSE) a Java Authentication and Authorization
Service (JAAS). Novinkou je přidání podpory pro Kerberos skrze populární
GSS-API. Díky integraci JAAS nyní můžete řídit přístup nejen podle toho, jaký
kód se spouští, ale i podle toho, kdo jej spouští. Security Policy je nově plně
dynamická a platná jen po dobu své existence. Kvůli bezpečnostní politice USA
JCE nepodporuje bezpečnou délku šifrovacího klíče. Neomezenou verzi je nutné
stáhnout samostatně. Java měla dosud problémy ve škálovatelnosti vstupně-
výstupních operací. Dosud totiž pro každý otevřený stream vytvářela nové vlákno
na jeho řízení, což rozhodně není efektivní. Dále citelně chyběla podpora pro
neblokované IO operace. Programátoři tyto vady řešili vytvářením vlastních
nativních knihoven, což ale vedlo ke zhoršení přenositelnosti výsledného
produktu na jiné platformy. Sun vyhověl požadavkům programátorů a zavedl celý
nový balík java.nio (New IO), který tuto problematiku řeší. Součástí NIO jsou
paměťové buffery, konverzní rutiny mezi znakovými sadami, kanály pro IO
abstrakci, podpora zamykání souborů a jejich mapování do paměti skrze buffer a
také neblokované IO operace. Sun slibuje až dvojnásobné zrychlení IO operací.
Také v síťovém API se objevilo několik zajímavých novinek. Mezi nimi najdete
podporu pro IPv6 (Internet Protocol version 6) a DNS. Pomocí třídy
NetworkInterface můžete získat všechna síťová rozhraní počítače. K internetu se
lze připojit i přes proxy SOCKS verze 5. V ovladači FTP protokolu bylo
odstraněno mnoho chyb a ten nyní splňuje standardy RFC 2396 a RFC 2732. Nová
třída URI je oproti původnímu URL mnohem flexibilnější a nevyžaduje přítomnost
ovladače zvoleného protokolu.

Ladění kódu
Každý programátor tráví spoustu času hledáním chyb. V minulé verzi se
debuggovaný kód spouštěl v interpreteru bez využití HotSpot technologie.
Aplikace proto běžela znatelně pomaleji. V JDK 1.4 toto omezení padlo. Pokud
jste dříve během ladění kódu opravili chybu, museli jste celý proces v
debuggeru restartovat. Jistě si dovedete představit, kolik času vám ušetří nová
vlastnost HotSwap, která dokáže v debuggeru vyměnit třídu za novejší verzi i za
běhu procesu. Java konečně podporuje i zřetězené výjimky. Do třídy Throwable
byla přidáno několik konstruktorů a metod pro zadání původní výjimky, která
zapřičinila vznik aktuální výjimky. Metoda printStackTrace() dokáže vypsat celý
řetězec vyjímek, takže neztratíte žádnou informaci a snáze naleznete chybu.
V podobném duchu se nese i drobné vylepšení RMI: Pokud dojde při vykonávání
metody na serveru k výjimce, bude přenesena na klienta a zahrnuta do výjimky na
klientovi. Konečně jsme se dočkali i metody assert. Jedná o funkci, která
testuje, zda určitá podmínka (obvykle invariant) je skutečně platná. Pokud
není, program je ukončen chybou. Příkladem budiž situace, kdy programátor smaže
obsah kolekce a použije assert na ověření si, že kolekce je skutečně prázdná.
Přestože se jedná o krok správným směrem, open source knihovna JUnit je mnohem
flexibilnější. Sun vytvořil i standardizované rozhraní pro loggování událostí a
chyb. De facto standardem byla dosud knihovna Log4J z projektu Jakarta.
Vývojáři si tak nyní mohou vybrat, které řešení jim lépe vyhovuje. Třešničky na
dortu
V nové verzi se objevilo také několik vylepšení samotného virtuálního stroje.
Garbage Collector obsahuje novou heuristickou metodu pro výběr
nejefektivnějšího nastavení. Sun se také zaměřil na zlepšení škálovatelnosti
vláken pod Solarisem. Pod tímto operačním systémem navíc dokáže virtuální stroj
běžet v 64bitovém módu. HotSpot kompilátor obsahuje nové optimalizace v oblasti
cyklů a zároveň eliminuje kontrolu rozsahu platnosti polí. Zajímavostí je, že
JDK již neobsahuje klasický interpreter, ale jen JIT kompilátor HotSpot. XML
hýbe světem. Již řadu let existuje spousta knihoven v Javě pro snadnou práci s
tímto formátem. Namátkou jmenujme Xerces, Crimson, Xalan nebo DOM4J. Sun si
uvědomoval důležitost standardizace těchto knihoven a vytvořil balíček JAXP
Java API for XML. Tento balíček obsahuje jak interface pro DOM Level 2, SAX 2.0
a XSLT 1.0, tak i obecné rozhraní pro výběr parseru při startu aplikace na
principu plug-inu. Tento balíček, dodávaný dosud separátně, se stal standardní
součástí JDK verze 1.4. Zajímavou novinkou je dlouhodobá perzistence komponent
JavaBeans skrze XML. V oblasti enterprise aplikací je časté zasílání argumentů
v podobě serializovaných objektů. Proto J2EE programátory potěší zrychlení
serializace. Další klíčovou vlastností jazyka je Reflection možnost dynamicky
zkoumat vlastnosti a spouštět metody neznámých objektů. Sun tuto část přepsal,
a výsledkem je významné zrychlení. U opakovaného spouštění krátkých metod se
jedná až o dvacetinásobný nárůst rychlosti! Těžit z něj mohou například
Velocity (View z MVC modelu) či technologie JMX (management). V této verzi
došlo i ke sloučení dosud separátního optional balíku JDBC se standardním. Java
tedy obsahuje kompletní JDBC ve verzi 3.0. Programátor tak může přistupovat
přes jednotné rozhraní téměř k jakémukoliv zdroji dat, od relačních databází až
po tabulkové procesory či strukturované soubory.

Závěr
Java ve verzi 1.4 obsahuje spoustu užitečných novinek a vylepšení. Když k tomu
přičteme i různé optimalizace, získáme pádný důvod k přechodu ze starších
verzí. A pokud Javu dosud nepoužíváte, možná vás tato verze přiměje k hlubšímu
zamyšlení, zda se vám přechod vyplatí, či nikoliv.

Termíny ze světa Javy
Java je plná zkratek typu JDK, JRE, J2SE, J2EE či JIT. K jejich rozluštění
nepotřebujete slovník, stačí, když si přečtete následující text. Sun šíří
několik verzí Javy podle segmentu trhu. Běžná verze je označována jako
standardní edice, zkráceně J2SE (Java 2 Standard Edition). Do mobilních
telefonů a PDA směřuje verze mikro J2ME. A konečně pro vývoj podnikových řešení
či serverových aplikací je určena J2EE (Java 2 Enterprise Edition). Když se
rozhodnete stáhnout si Javu, máte na výběr mezi dvěma možnostmi JDK a JRE. JRE
(Java Runtime Environment) obsahuje vše potřebné ke spouštění aplikací. JDK
(Java Development Kit) obsahuje navíc nástroje pro programátory, například
překladač zdrojových textů do binární podoby. V tomto balíku najdete i zdrojové
texty knihoven Javy. A konečně JIT (Just In Time) označuje překladač, jehož
výstupem je nativní kód procesoru. Výsledkem je značný nárůst výkonu aplikace.
Pro zajímavost, JIT kompilery začala dodávat v roce 1996 firma Symantec a
posléze se připojil Microsoft. Jeho implementace však byla nekompatibilní, což
v roce 1997 vyústilo v soudní při se Sunem. Přestože se Sun stal vítězem a
Microsoft na Javu zanevřel, Sun nyní opět tento spor vytáhl na světlo a
tentokrát žádá miliardu dolarů odškodného.









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.