I have participated in this thread about LINQ for Java. There are some very good comments. I don't think that LINQ is perfect, but it is better than most alternatives. It is better than my proposal, Safe Query Objects [PDF] (aka Native Queries supported by Db40), although the constraints were different. I was trying to see how to do a type-safe query language without any changes to Java. I think its a reasonable design. But if you allow yourself to change the language significantly, as Microsoft did, then you have to explore other possibilities.