2 days ago, Oracle pushed a first version of the closures implementation. We can see the evolving syntax in the test cases they made for the Java compiler. You can see these test cases here. This revision supports the following features (copied from revision) : The function types aren't enabled by default, so you have to use -XDallowFunctionTypes to enable it. Here are some examples of lambda expression of type 1 taken from the test cases : ```java int i1 = #()(3).(); //i1 = 3 Integer i2 = #()(3).(); //i2 = 3 int i3 = #(int x)( x + 1 ).(3); //i3 = 4 int i4 = #(Number x)(x.intValue()).(new Float(3.0f)); //i4 = 3 ``` And with type 2 : ```java int i1 = #(){ return 3; }.(); //i1 = 3 Integer i2 = #(){ return 3; }.(); //i2 = 3 int i3 = #(int x){ return x + 1; }.(3); //i3 = 4 int i4 = #(Number x){ return x.intValue(); }.(new Float(3.0f)); //i4 = 3 ``` For those who didn't understand the syntax, #(int x)( x + 1 ) declares a lambda expression that takes a int and return this int plus 1. And the . (dot) is used to invoke the lambda expression. So #(int x)( x + 1 ).(3) declares the lambda expression and invoke it with 3 as parameter. This syntax is a little bit shocking, but I think we'll get used.