První novinkou u Sunu je dramatické zrychlení VM (virtuální mašiny). Toho bylo dosaženo revizí kódu a hlavně tzv. Java HotSpot VM. Zrychlilo se také nahrávání virtuálního stroje a správa paměti. Technologie HotSpot spočívá v tom, že virtuální stroj zjistí, které části kódu jsou kritické a ty si optimalizuje, k čemuž Sun přidává některé nové vlastnosti jako je např. inline provádění funkcí. Tomu všemu se říká Adaptive Compiler. SDK od Sunu jsem samozřejmě nemohl posoudit, protože verze pro Linux ještě není k dispozici (beta je na spadnutí), ale nová IBM verze se mi nezdála rychlejší – ba naopak, zdála se mi pomalejší, ovšem testy na rychlost jsem neprováděl a zdání někdy klame.
Nyní se podíváme na novinky ve vlastním jazyku, nebudu se však zabývat jednotlivými vylepšeními tříd, kterých je skutečně mnoho (RMI, DnD, Java2D, AWT…), ale spíše věcmi, které jsou nové či nějak zajímavé.
Hned jak jsem prohlížel novou dokumentaci mě zaujaly zbrusu nové balíky javax.sound. Nová Java umí přehrát AIFF, AU a WAV, dále jsou to MIDI (typ 1 i 2) a RMF. Mixer Javy má 64 kanálů, které sdílí jak AUDIO tak MIDI. Nejzajímavější vlastností je ovšem přístup na MIDI hardware. Můžete si napsat 100% přenositelný MIDI sekvencer. Pomocí MIDI se ovládají i světla na diskotékách a podobně – všude najde nová třída své uplatnění.
V nové verzi jsem se poprvé setkal s JNDI (Java Naming and Directory Interface). Jedná se zpřístupnění adresářových služeb Javě. Je to jakýsi mezičlánek mezi Javou a LDAP service providerem. Do SDK také přibyl vylepšený JPDA (Java Platform Debugger Architecture), pomocí kterého můžete pokládat podmíněné breakpointy nebo využít breakpointů na hodnoty proměnných. V bezpečnosti nám nová Java nabízí nové RSA šifrování, X.509 certifikáty nebo třeba verifikace souborů podepsaných prohlížečem Netscape.
Pokud programátor v Javě chtěl vytvořit distribuovanou aplikaci, musel buď použít RMI (Remote Method Invocation) nebo JavaIDL (která zprostředkovává CORBU (Common Object Request Broker Architecture)). V prvním případě ovšem by musely být obě strany napsané v Javě, protože RMI je pouze „Javovská“ záležitost, avšak pomocí JavaIDL může přistoupit na jakoukoliv CORBA kompatibilní aplikaci. Rozdíl byl v tom, že programování v JavaIDL bylo o mnoho složitější než v RMI. Proto je nyní k dispozici RMI-IIOP který kombinuje oba přístupy.
Mnoho nového je toho také ve swingu. Vylepšení se nevyhnuly třídy JTree, JTable, JFileChooser (líbí se mi možnost náhledu na otevíraný dokument) nebo třeba JButton. Zaujala mě také třída Robot (java.awt), pomocí které může programátor automatizovat pohyby myši a stisky klávesnice a tím vytvářet různá dema apod.
Nová Java s sebou také přináší několik nekompatibilit, na které bych rád upozornil:
javax.swing.Timer je nyní v konfliktu s novou třídou java.util.Timer, musíte si dávat pozor při importu balíků v java.sql.SQLPermission a javax.media.sound.sampled.AudioPermission přibylo několik bezpečnostních pravidel, pokud je používáte, raději si zkontrolujte dokumentaci objekt JInternalFrame je nyní po vytvoření standardně neviditelný, musíte volat metodu show()Myslím si, že se jedná o povedený krůček kupředu a pevně věřím, že se Java nestane mrtvým jazykem, jak někteří prognostikové tvrdí. V příštích článcích bych rád popsal nástroje, pomocí kterých můžeme pod Linuxem vytvářet programy v Javě.