Project Lambda: To Multicore and Beyond
NB: This is a single 50 minute session.
This session covers the primary new language features for Java SE 8 - lambda expressions, method references, and extension methods - and explores how existing as well as future libraries will be able to take advantage of them to make client code simultaneously more performant and less error-prone.
We'll start by motivating the need for better support for programming in a multicore environment by adding closures and related features to the Java SE platform through JSR 335 and OpenJDK Project Lambda. To show what can be done with Java SE today, we'll contrast code using serial idioms with code using anonymous inner classes, and compare the complexity of that approach with code using lambdas, before we dive into a discussion of lambda expressions, their typing, and method references with examples of their usage.
As the language evolves, the libraries evolve with it. So we'll take a look at extensions methods, and how they are used to provide for bulk data operations on collection classes without breaking binary compatibility with existing code, while enabling Java developers to take advantage of concurrency with minimal changes to their applications.
As we touch on different areas of lambda support in Java SE 8, we'll sporadically look under the hood to see how the feature is implemented in the Project Lambda prototype using new VM and class library features from JSR 292 and JSR 166y.