Last week I was in Atlanta for the Devnexus conference. This is a well-regarded conference that has been running since 2009, but it was the first time I’d had an opportunity to attend. I delivered two presentations, both of which were new material: “It’s Java Jim, But Not As We Know It” and “55 New Features in JDK 9”.
The first of these was devoted entirely to Lambdas in JDK 8. Although I’ve presented many times on new features in JDK 8 and especially on Lambdas and the streams API, this was my first Lambda only session.
The idea of this was to look beyond the basics of the syntax and explore some of the issues around how Lambdas are implemented (using the invokedynamic bytecode rather than treating them as syntactic sugar for the equivalent anonymous inner classes), and how this can improve performance. Interestingly, one of the things I learned in preparing for this was that using a method reference rather than an explicit lambda expression will be [ever so] slightly more efficient. This is because it is not necessary for the compiler to generate a separate static method in the class where the lambda is being used.
The second half of the session I describe as the “interesting but not very useful” half (unlike the first half, which is both interesting and useful). Here, I take inspiration from a presentation I saw by Jarek Ratajski at Voxxed Zurich last year. This is a look at how Lambda expressions relate to Lambda Calculus, created by Alonso Church in the 1930s.
Lambda calculus is the basis for functional programming and, according to the Church-Turing thesis, Lambda Calculus and Turing machines are equivalent. In essence, this means anything that can be solved using a Turing-complete language like Java can be solved using just Lambda expressions. I take the audience through the basics of identity, Boolean values, Church numerals, basic addition and subtraction before showing that we can calculate 2 +2 using only lambdas (did I say this wasn’t any practical use?)
The second session I delivered was “55 New Features In JDK 9”. Rather than write about that here, I’ll be doing a weekly blog on new features running up to the launch of JDK 9 in July.
Over 2,000 developers attended DevNexus, and I have to say I had a thoroughly enjoyable time, both at the conference and in Atlanta, a city I’ve not been to before. I’m certainly hoping to go back again next year!