LINQ for Java sarebbe bello, ma il problema è l'integrazione del linguaggio.
Java non ha nulla di conciso come le espressioni lambda e sono uno dei fondamenti di LINQ. Suppongo che potrebbero sovrapporre il supporto delle espressioni di query al normale Java senza espressioni lambda, facendo in modo che l'espansione crei classi interne anonime, ma sarebbe piuttosto orribile. Avresti anche bisogno di alberi delle espressioni se volessi fare qualcosa come LINQ to SQL.
Eccezioni selezionate potrebbero mettiti in mezzo, ma dovremmo vedere. L'equivalente di IQueryable dovrebbe avere una sorta di eccezione verificata generale, o forse potrebbe essere generica sia nel tipo di elemento che nel tipo di eccezione...
Ad ogni modo, questo è tutto un gioco da ragazzi - dati i problemi che la comunità Java sta avendo con le chiusure, penso che sarebbe una follia aspettarsi qualcosa di simile a LINQ nello stesso Java prima del 2012 circa. Ovviamente, questo non vuol dire non sarebbe possibile in un linguaggio "simile a Java". Groovy ha già alcuni aspetti utili, per esempio.
Per il lato libreria, Hibernate fornisce già una versione "non integrata" di molte delle funzionalità di LINQ to SQL. Per LINQ to Objects, dovresti esaminare l'API Google Java Collections - è molto dello stesso tipo di cose (filtraggio, proiezione, ecc.). Senza lambda è molto più complicato da usare, ovviamente, ma è comunque davvero molto utile. (Utilizzo sempre il codice di Google Collections al lavoro e mi dispiacerebbe tornare alle raccolte Java "vanilla".)