LINQ dla Javy byłby piękny, ale problemem jest integracja językowa.
Java nie ma niczego tak zwięzłego jak wyrażenia lambda i są jednym z fundamentów LINQ. Przypuszczam, że mogą nałóż obsługę wyrażeń zapytania na normalną Javę bez wyrażeń lambda, powodując, że rozwinięcie tworzy anonimowe klasy wewnętrzne - ale byłoby to dość ohydne. Potrzebujesz również drzew wyrażeń, jeśli chcesz zrobić coś takiego jak LINQ to SQL.
Sprawdzone wyjątki mogą wchodzić w drogę, ale musielibyśmy zobaczyć. Odpowiednik IQueryable musiałby mieć jakiś ogólny sprawdzony wyjątek - lub być może mógłby być ogólny zarówno w typie elementu, jak i typie wyjątku...
W każdym razie, to wszystko jest pie-in-the-sky – biorąc pod uwagę problemy, jakie społeczność Java ma z zamknięciami, myślę, że byłoby szaleństwem oczekiwać czegoś takiego jak LINQ w samej Javie wcześniej niż około 2012 roku. Oczywiście to nie znaczy nie byłoby to możliwe w języku podobnym do Javy. Groovy ma już pewne przydatne aspekty, na przykład.
Po stronie biblioteki Hibernate zapewnia już „niezintegrowaną” wersję wielu funkcji LINQ to SQL. W przypadku LINQ to Objects zapoznaj się z interfejsem API Google Java Collections - to wiele podobnych rzeczy (filtrowanie, projekcja itp.). Bez lambd jest to oczywiście dużo bardziej skomplikowane w użyciu - ale nadal jest bardzo, bardzo przydatne. (Używam kodu Google Collections przez cały czas w pracy i nie chciałbym wracać do „waniliowych” kolekcji Java).