I am a senior developer at Sabre Holdings. My area of work is in low-latency, low response time, highly concurrent systems written in Java. My main expertise is in parallel programming, JVM and GC tuning. Outside of my work I am passionate about modern software development processes and keep eye on latest developments in Java space, especially Java enhancements coming in JDK 8 and beyond.
Closures were made famous by Java not having them. Every language with self respect (even C++) has some form of closures and Java will join them with release 8.
Work to add closures to java has been underway for over two years and resulted in an open source prototype that modifies java compiler with support for syntax for writing closures and closure conversion.
Main reason to add closures to java is to make parallel programming easier and more elegant by eliminating a lot of boilerplate code required by high level abstractions over concepts such as parallel arrays, filters and fork-join frameworks.
In this session we will see how closures may change our daily programming. I will explain what Java closures are and how to start working with the prototype implementation. We will take a closer look at such features as closure conversion, functional interfaces, extension methods, constructor and method references. We will also look under the hood of the implementation and find out how is the closure conversion performed and how closures are compiled into bytecode. We will explore different implementation strategies for closures and their performance implications.
Finally, we will check out on experimental work being done to adjust existing APIs (especially collections) to more functional style where closures play important roles.