Overview
Dive deep into the implementation of lambda expressions in Java SE 8 with this 53-minute conference talk from GOTO Aarhus 2013. Explore how lambdas and default methods are implemented using the invokedynamic feature introduced in Java SE 7. Learn about functional interfaces, bytecode tools like Method Handle and invokedynamic, and various translation strategies. Examine performance considerations, including linkage and capture costs, and discuss potential future VM support and serialization issues. Gain insights into the intersection of language design and JVM architecture, and understand how these new features enhance Java's expressive capabilities.
Syllabus
Introduction
Lambda expressions for Java
Why lambdas for Java?
Big question #1: typing
Functional interfaces
Big question #2: representation
New bytecode tool: Method Handle
Stepping back...
Bytecode invocation modes
New bytecode tool:invokedynamic
Translation strategies
Indy: the ultimate procrastination aid
Indy: the ultimate lazy initialization
Indy: the ultimate indirection aid
Performance costs
Performance example - linkage cost
Performance example - capture cost
Future VM support ?
Serialization
Summary
Taught by
GOTO Conferences