I have been programming in C# and .NET for a decade now. I loved the concept of LINQ and Lambda Expression which brings a layer of separation between the user request to process a task and the real execution of the task which can be made to execute differently in different systems. This is specially beneficial in todays world with multi-core machines. This gives the power in hands of the execution engine to parallelize the queries as per availability of system cores.
The JAVA community has realized these benefits and so there is already a plan to include ‘Closure’, ‘Default Methods’ in JAVA SE 8. In the JAVA world the ‘Lambda Expression’ concept is referred as ‘Closure’ and ‘Extension Methods’ are referred as ‘Default Methods’ or ‘Virtual Extension Methods’ or ‘Defender Methods’. Similar concepts but might differ at granular level. Please check the below links for more details:
http://openjdk.java.net/projects/lambda/
http://cr.openjdk.java.net/~briangoetz/lambda/sotc3.html