LINQ pro Javu by bylo krásné, ale problém je v jazykové integraci.
Java nemá nic tak výstižného jako lambda výrazy a jsou jedním ze základních kamenů LINQ. Předpokládám, že mohli navrstvěte podporu dotazovacích výrazů na normální Java bez výrazů lambda tím, že rozšíření vytvoří anonymní vnitřní třídy – ale bylo by to dost ošklivé. Také byste potřebovali výrazové stromy, pokud byste chtěli dělat něco jako LINQ to SQL.
Zaškrtnuté výjimky mohou překážet, ale museli bychom to vidět. Ekvivalent IQueryable by musel mít nějakou obecnou kontrolovanou výjimku - nebo by možná mohla být obecná jak v typu prvku, tak v typu výjimky...
V každém případě je to všechno jako pecka – vzhledem k problémům, které má Java komunita s uzavíráním, myslím, že by bylo hloupé očekávat něco jako LINQ v samotné Javě dříve než kolem roku 2012. To samozřejmě neznamená v „jazykovém“ jazyce by to nebylo možné. Groovy už má například určité užitečné aspekty.
Pokud jde o knihovnu, Hibernate již poskytuje „neintegrovanou“ verzi mnoha funkcí LINQ to SQL. Pro LINQ to Objects byste se měli podívat na Google Java Collections API - je to hodně stejný druh věcí (filtrování, promítání atd.). Bez lambda je to samozřejmě mnohem šikovnější - ale stále je to opravdu, opravdu praktické. (V práci neustále používám kód Google Collections a nerad bych se vracel ke „vanilla“ Java sbírkám.)