Java 6.0

Nakonec jsme se po patnácti měsících dočkali nové “velké” verze Javy. Po velké změně v jazyce přišlo zvolnění a nové vlastnosti se omezily “jen” na API. Přibylo mnoho nových vlastností, ty subjektivně nejzajímavější bych tu rád zmínil:

  • Podpora pro skriptovací jazyky. Zatím nic moc, ty pravé orgie přijdou až v sedmičce spolu se změnami ve virtual machine. Spolu s Javou SE je teď dodávána i ukázková implementace Javascriptu odvozená od Rhina. O dynamických jazycích na JVM kdysi blogoval Stone. JSR 223
  • Další “vykradačkou” je Apache Derby alias JavaDB. IBM darovalo kód Apache foundation a nejspíš při tom ani nečekalo, kde skončí.
  • Na seznamu velkých změn nesmí chybět JSR 199. Java Compiler API umožní dodavatelům toolů ve svých programech volat kompilátor a snadno zpracovávat jeho výsledky.
  • Potenciál k velkým věcem slibuje JSR 269 (Pluggable Annotation-Processing API). Škoda, že už nebylo v 5.0.
  • Většina vývojářů nejspíš nezaregistruje JSR 202 (Java Class-File Specification Update). Verifikace nyní může být rozdělena do více kroků. Enterprisoví programátoři nejspíše zajásají nad několika drobnějšími změnami – některá omezení na velikosti a počty částí třídy byla zrušena, generátory kódu, třebas při kompilaci jsp, budou mít o starost méně.
  • Pěkné je interface Deque a jeho blokující varianta pro fronty se dvěma konci. Implementace je možné použít třebas pro LIFO. Rozhraní implementují dvě nové standardní třídy, ArrayDeque, LinkedBlockingDeque. LinkedList čerstvě implementuje i toto rozhraní. Z podobného soudku jsou i další změny ve standardních kolekcích, třebas NavigableSet{.jref} a NavigableMap{.jref}.
  • Blbost, která potěší je, že Console umí číst hesla, aniž by je zobrazovala.
  • Spousty změn se dočkal Swing a návaznost na používané desktopové prostředí. Několikrát o tom psal Stone: Mustang a Desktop API, Mustang a System Tray a Mustang a Splash Screen. Jen přehled změn ve Swingu by vydal na samostatný článek, snad jej napíše někdo povolanější.
  • JSR 250. Další JSR, které by se hodilo mít již v pětce. Několik běžně použitelných anotací, třebas @Resource nebo @Generated. Většinu z anotací tvoří podpora pro dependency injection a inicializace objektů.
  • Popravdě řečeno mne moc nechytly změny v JDBC 4.0. JSR 221 určitě vývojářům používajícím JDBC prospěje, ale já sám nemám moc velkou potřebu používat SQL přímo. Mimo jiné jsme se dočkali pohodlnější práce s ovladači databáze, podpory SQL a nových anotací. Mrkněte třebas na článek na Arimě.
  • Jaké změny postihly monitoring and management tools jsem nestačil nastudovat, ale jistě to budou změny k lepšímu 😉
  • Jednoduché natahování implementací služeb je ServiceLoader. Netroufnu si zatím posoudit, jestli je to dobrej nápad nebo blbej nápad nebo jakej je to vlastně nápad.
  • Úzce spolu souvisí JSR 181 (Web-Services Metadata), JSR 222 (Java Architecture for XML Binding 2.0) a JSR 224 (Java API for XML-Based Web Services 2.0). JSR 222 umožňuje napojit XML dokumenty na Java Beans. Verze 2.0 podporuje nové standardy (W3C XML Schema) a umožňuje navázat na XML již existující třídy za pomoci anotací. Vysloveně magicky na mne působí mix JSR 181 a 224. Ke třídě a vybraným metodám stačí přidat správné anotace a webservice je na světě. To vše ve standardní edici, nejde o žádnou vymoženost JEE. Podobně snadné by mělo být i vázání klientů na existující webservices. Doufám, že nás nečeká žádné nepříjemné překvapení a vše bude fungovat, jak má včetně interoperability s webovými službami na dalších platformách.
  • Jinou možností, jak pracovat s XML je JSR 173 (Streaming API for XML – StAX)
  • JSR 105 (XML Digital-Signature APIs)
  • Vypršel patent omezující používání gifů a proto je možné je nyní i zapisovat. Skvělé, ta možnost mi nedávno citelně chyběla.
  • Mnoho dalších změn v API, jeho implementaci i runtime. Java by měla být tak rychlá a stabilní jako nikdy předtím. Verze 6 snad díky zlepšenému výkonu JVM a Swingu a změnám ve WebStartu podstatněji zasáhne i desktopový trh.

Několik nových vlastností, o kterých jsme čekali, že se v JSE 6 objeví nakonec nebylo zaintegrováno. Nejvíce lituji toho, že nebylo dokončeno JSR 260, zlepšení JavaDocu. Některé z plánovaných dokumentačních anotací, například kategorie metod, očividně chybí.

V Javě 6 si přijde na své téměř každý. Žádný revoluční skok vpřed, ale mnoho novinek, z nichž si mohou vývojáři vybrat vylepšení svého srdce. Díky tomu, že nejsou žádné změny v jazyce, nemělo by nastat mnoho problémů při použití nových vlastností spolu se staršími vývojářskými nástroji. Velký vliv na vnímání platformy zřejmě bude mít podpora dalších jazyků a důraz kladený na webservices. Pokud se povede interoperabilita s webservicech v dalších prostředích, konečně se snad dobelháme tam, kam nás webové služby měly zavést již dávno.

Jsem hodně zvědavý na to, jak si povede Java na desktopu. Díky nové licenci by se mohla s odvahou pustit tam, kde odsud panovalo Mono a prosadit se jako managované prostředí číslo jedna pro (nejen) Linuxový desktop. Velkou podporou pro tento úspěch může být dobře vyřešený deployment pomocí WebStartu nebo aplikační rámce jako je NetBeans Platform.

Serverová Java se spíše řídí novinkami v JEE, ale je očividné, že změny v JSE se promítnou i sem. Zlepšená práce s XML, WebServices, nové anotace i nástroje pro management udělají své i na serveru.

Zdroje: stránky Java SE 6, zastřešující JSR 270.