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.
Automatic Resource Management lze využít s http://projectlombok.org/ v trošku jiné podobě již dnes.
Mám z toho taky trošku pocit konzervativity: http://filipfracz.net/post/Diamond-Java-7-new-feature.aspx
Po poslední možnosti se nějakou dobu dívám. Často je problém v podpoře IDE. Dívám se po Mirah, trošku i po Scale a JavaFX Scriptu.
Trošku se divím, co je tak složitého třeba na Closures.
My $0.02:
– closures jsou jenom na strane kompilatoru (podobne jako generics), tedy fuj, runtime nedostupne a prelozene do single-method-interface instanci, proste dobre, ale nic moc
– problem Jigsaw je ze nikdo poradne nevi jak, a nejsou lidi, nebo spis chybi kompetentni lidi, kteri by to dokazali rozseknout (toto je jenom muj dojem z kuloarovych diskusi)
– s updaty swingu to bude tezke, krome bugfixu bych v nic zasadniho nedoufal
– podle toho co sem slysel je ten tvuj seznam pro RR2012 hoooodne optimisticky, problem s releasem pristi rok, je ze nikdo moc nevim co tam vlastne bude (krome +1 verze)
Z Jigsaw mám zlý pocit aj ja – jednak z podivnej špecifikácie podpory akéhokoľvek verzionovania, ale aj z viacerých ClassLoaders, čo často prináša nepríjemné chyby. Viac sa nám osvedčil Maven a ručné resolvovanie version konfliktov. Invokedynamic sa hlavne používa pri dynamicky typových jazykoch (Ruby etc), ktoré mi veľmi nevoňajú – radšej Scala, ktorá invokedynamic nepotrebuje a teda je použiteľná aj na Java5. Prejsť na Scalu v typickej Java firme je však skoro nemožné.
No, SAM mi přijdou asi jako lepší, čistější a zpětně kompatibilní řešení.
Uz byli diskuze o tom, ze za ty dva roky by mohlo byt napriklad misto hloupuckeho jigsaw osgi na urovni kompilatoru.
Spis bych se dival na zmeny blize k jvm jako na syntakticke cukratka.
Ted budou mit dost prace s mergeovanim dvou prvotridnich jvm, ktere ted maji
http://www.networkworld.com/news/2010/021810-oracle-set-to-merge-java.htm
Ja bych tipoval na pristi dva roky v oraclu velke upratovani javy a jvm a hledani nove strategie. A pak zacatek prace v spolupraci s komunitou na prvni zpetne nekompatibilni ale filozoficky co neblizsi verzi Javy, v podstate novem jazyku, s uklizenim zastaralych a pitomych veci, ktere se za leta nasbirali a moznosti lepsi komercionalizace pro oracle
Tady http://openjdk.java.net/projects/jdk7/features/ se objevily nejnovější informace. Vypadá, že zdravý rozum zatím vede.
no ja si myslim ze javicka je pomaly na ustupe. Pozri te sa na .NET. Jave proste usiel vlak.
Nevravim ze upada ale stagnuje. A stagnacia je predzvest upadku