JSR166 je podle mne také jeden z důvodů, proč se aplikace distribuovaně nepíší. Použil někdy někdo z Vás balík java.util.concurrent? A pokud ano, používáte to běžně? ConcurrentHashMap je dobrá a často ji používám, uznávám, ale jinak? Proč je vytvořen opravdu silný a IMHO složitý a těžko čitelný mechanismus pro paralelizaci a konkurentní přístup místo jednoduché konstrukce zavedené přímo do syntaxe jazyka? Proč se nikdo neinspiroval třeba takovými jazyky, jako jsou Oz, Alice či E?
Jak by se krásně programovalo a paralelizovalo pri konstrukci jako int result1,result2,result3; concurrent { thread 1: result1 = method1(); thread 2: result2 = method2(); thread 3: result3 = method1()*method2(); } if (result1==result2) { ... } , proč k tomu používat šílené Future? Nebo by to šlo krásně vyřešit pomocí anotace - jak by bylo jednoduché a elegantní přidat anotaci @Future k metodě? A nebo zavést Ečkové eventuální volání metody myObject<-futureMethod() a nebo rovnou Ečkový slib int futureResult <- myObject.futureMethod() when (futureResult) { if (futureResult == 4) { ... } } Věřím tomu, že většina programátorů by tyto jednoduché konstrukce velice ráda a často využívala. A paralelizovaný kód by byl daleko čitelnější. Jednu dobu jsem uvažoval, že bych si zkusil napsat něco, co by to nějak inteligentně schovalo. Ale nakonec jsem to zavrhl... Třeba to v Javě 1.10 bude... PS: Od dob foreach používám reverzní procházení pole jenom v J2ME a všichni, kteří kdy takovýto kód četli, velice rychle zjistili, že je to moje úchylka :-P -- Oto 'tapik' Buchta, ta...@buchtovi.cz, http://tapikuv.blogspot.com