Vrátil jsem se po měsíci z Číny a tak o tom tady chci dát vědět. Nezbývá mi tedy než se trochu zamyslet na Javou 7, ne kterou čekáme už skoro pět let.
Poslední informace o aktuálním vývoji vypustil minulý týden ve svém blogu Mark Reinhold. Kupodivu stále mají problém s closures (projekt Lambda) a s modularitou (projekt Jigsaw). Kdo by to byl čekal. Jestli to nebude tím, že jsou to oboje dost zásadní změny. Přitom třeba slavný Jigsaw mi ještě letos na jaře připadal stále dost nedomyšlený. V zásadě se zamýšlejí na dvěma variantami.
Plán A: Vydat Javu 7 tak jak ji známe v polovině roku 2012.
Plán B: Vydat Javu 7 bez problematických částí příští rok. Zbytek pod jménem Java 8 v roce 2012
V diskuzi pod blogem se většina lidí přiklání k variantě B. Chtějí alespoň něco hned. Nechtějí čekat dalších pár let na něco, co často ani nepotřebují.
Podle tohoto blogu by plán B znamenal, že za rok bychom dostali:
- Performance enhancements and bug fixes
- Automatic resource management
- NIO.2 (the new new I/O)
- The fork/join framework
- Diamond operator
- Annotations in more places
- invokedynamic and an API for method handles.
- AWT/Swing tweaks: JLayer, translucent and shaped windows, and an “improved” security dialog
- Minor language tweaks: strings in switch, underscores in literals, binary literals
- Nimbus
Až v Javě 8, pokud někdy spatří světlo světa, by přišlo
- Closures
- The parts of the fork/join framework that depend on closures to be user-friendly
- [] notation for lists and maps
- Modularity (AKA “Project Jigsaw”)
- Everything that already got dropped along the way for “lack of time”, such as the Swing Application Framework, bringing SwingX controls to the core API, date/time API
(vysvětlení jednotivých položek například zde)
Musím se přiznat, že pro mě je plán B velmi lákavý. Z Jigsawu mi vstávají vlasy hrůzou na hlavě. Closures by se mi sice hodily, ale obejdu se bez nich. On třeba i ten automatic resource management by byl elegantnější s closures. Trochu je mi líto toho date/time API, nechápu co může být na zkopírování knihovny Joda náročného.
Trochu mi ta situace připomíná Windows Vista aka Longhorn. O tom se taky hrozně dlouho mluvilo, měl mít spoustu krásných funkcí, několikrát se to odkládalo a všichni víme jak to dopadlo. Doufejme, že to se v Javě nestane. V programovacím jazyku je mnohem těžší říci „na tuto verzi zapomeňte, přejděte na vyšší“.
No nanejhůř se na Oracle vykašleme úplně, využijeme plánovanou funkci invokedynamic a přejdeme k nějakému novějšímu jazyku. Ale to bych opravdu nerad.