Tak a teď budu Sun jen chválit a nic než chválit. Dopoledne jsem byl na keynote o novinkách v Javě 7. Nejvíc mě potěšila informace o tom, že Java 7 bude modulární. Tzn. JDK a JRE nebudou jen veliký navzájem propojený monolit, ale bude rozděleno na víc modulů. O tom už se mluvilo dlouho, dneska jsem se dozvěděl jak to (pravděpodobně) bude realizováno. Dobrá zpráva je, že nebude použit kontroverzní JSR 277. Horší zpráva je, že nebude použito ani OSGi. Bude použito něco, čemu říkají projekt Jigsaw. Nicméně slibují, že budou úzce spolupracovat s OSGi týmem, tak aby byly oba projekty spolu schopny spolupracovat. Nevím jestli to znamená, že budu moci použít OSGi bundly jako „Java moduly“, ale vypadá to nadějně. Rozhodně tvrdili, že se budou snažit to udělat tak, aby OSGi byl s novým systémem kompatibilní alespoň v příštích verzích OSGi. Rozhodně je to veliký pokrok od situace, kdy to vypadalo, že u Sunů netuší, že něco jako OSGi vůbec existuje.
Zajímavě vypadá i nový G1 garbage collector. Obsahuje pár zajímavých myšlenek. Další zpráva je, že (zatím) do Javy jako jazyka nezařadí kontroverzní věci jako Closures, bean binding a podobně. Chystají se jazyk rozšířit o pár drobnůstek, které nám ušetří trochu práce a na kterých ani škarohlíd jako já neshledává nic závadného.
No a poslední dobrou zprávou je, že se chystají do vývoje zapojit i komunitu. Ne tak, jak to udělali hned po open-sourcování javy, tentokrát to vypadá, že to myslí doopravdy a nechají komunitu i trochu zasahovat do toho, jak se Java bude vyvíjet. No není to skvělé? Tak a teď po mě pěkně zopakujte: „Děkujeme Sune“. Už se těším na rok 2010.
Jen aby…
Jestli už i ty chválíš Sun, tak to tě nadchnout 🙂
Mohl bych se ještě zeptat, co je na closures kontroverzního?
nevies ako to bude s podporou pre property…. ?… alebo gettre settre forever ?
To v6ak: O closures jsem psal pred rokem a pul tady. Od te doby se muj nazor trochu posunul. Chapu jak jsou uzitecne v “dynamickych” jazycich. Porad ale trvam na tom, ze do Javy nepatri. Navic bylo nekolik navrhu, od zjednoduseneho zapisu anonymnich trid implementujicich rozhrani s jednou metodou az po neco co umoznovalo zavolat v closure return a tim ukoncit metodu, ktera closure pouzila. Kontraverzni znamena, ze okolo toho byla spousta sporu. Nekdo closures proste miluje a chce je mit vsude a nekdo ma rad Javu a boji se, ze by ji closures rozbily. To se projevilo i tady na konferenci Brian Goetz prezentoval paralelni pole v Jave (dalsi novinka v Jave 7). Ukazal priklad jak hezky by to vypadalo s closures. Na konci se ozval Joshua Bloch s tim, ze by na to stacilo prave to zjednodusene vytvareni jednoduchych anonymnich metod a ne “plne” closures. Kontraverzni neznamena, ze je neco spatne, ale ze je kolem toho hodne sporu.
To jaro: Podpora pro property pravdepodobne nebude. A jakozto konzervativni clovek jsem tomu rad. Viz muj dva roky stary zapisek. Po prednasce o Scale chapu proc by to mohlo byt pekne, ale zase se musim opakovat. Do Javy jako jazyka to nepatri. Dovedu si predstavit zajimave problemy pri michani stareho set/get kodu a noveho property kodu.
ad closures, properties:
Java je krasny a cisty jazyk. Srovnejte to s C++ (schopnosti dnesniho Visual studia prekonaly prvni IDE pro Javu pred mnoha lety — je to prostre STRASNE slozity). Na druhou stranu tady jsou skriptovaci jazyky, ktere jsou sice desne moderni, ale taky rychle (a pravem) umiraji. Jsou bezva na tu vec, pro kterou vznikly (Perl, PHP), ale uz na nic jineho. Ac bezverec, modlim se, abychom se nenechali strhnout modni vlnou a nezabili Javu kvuli moderni vlne.
BTW: treba Python je peknej hnus. Properties v Borlandim C++ taky; C# je prevzal. Zlaty get/set.
no nevim, proc jasat nad tim, ze java vymysli vlastni modularni system, kdyz sama spolupracuje na OSGi. co je na tom tak tezkeho to zavest do jako Java standard 🙁
Myslím ze Joshua Bloch ma pravdu. Terajsi navrh closures je otrasny. Staci si to zrovnat s ActionScript3 (Adobe Flex) – tam sa jednoducho spravaju k funkcii ako k property (resp. objektu). Znacne by sa sprehladnil kod – hlavne tam kde je nutne teraz robit anonymne classy len kvoli jednej metode.
Co sa tyka modularneho systemu tak som dost skepticky.
Tak už jsem si přečetl ten článek o closures (dřív nejel link) a zjistil jsem: closure si tu všichni spojují s funkcí. Proč? Není snad možné mít closures pro třídu?
Jinak Java IMHO closures již obsahuje, ale v ne zrovna nejlepší podobě: každá anonymní třída vidí na instanci ‘rodiče’. Nebo tomu se neříká closures?
Jelikož nejsem odborník na closures odkážu tě na experty. Toto je asi nejlepší srovnání všemožných návrhů jak udělat closures v Javě. A teď se můžeme začít hádat, který je nejlepší. Osobně nic nemám proti zjednodušenému zápisu jednoduchých anonymních tříd. Ale to by spoustě lidí nestačilo, nejsou to opravdické closures. Nemohli by například vytrhnout metodu z instance a použít ji jako funkci a podobně. Já jsem tomu rád na druhou stranu si dovedu představit lidi, kterým by to chybělo. Ono to vypadá jednoduše takovou změnu udělat, ale když se nad tím člověk zamyslí tak to může mít zajímavé následky pro stávající kód, kompatibilitu mezi verzemi, možnosti typové kontroly a podobně.