This page was useful during Java 8 development when information on the new features was relatively difficult to find. Now, however, a cursory search returns hundreds of tutorials, articles and presentations on lambdas and streams. Rather than picking a few of these, I’ve restricted this page to listing major references—currently, official documents and books focussed on lambdas and streams.
Official Documentation
The central official reference for the Java 8 lambda development is the OpenJDK page. Its primary links are to:
- The JDK 8 release notes
- The updated Java Tutorials
- State of the Lambda. This is an informal and readable introduction to the language features of Project Lambda, written by the project lead. The material in it is covered in this FAQ;
- State of the Lambda: Libraries Edition;
- A full and informative description of the design of default methods(PDF) and its rationale. This was written in June 2011, so some details have changed. There is also a formal model for default method linkage(PDF);
- The strategy for translating lambda expressions.
The full specification of the language changes required for lambdas and default methods is in JSR 335.
Books
Mastering Lambdas: Java Programming in a Multicore World, by Maurice Naftalin (recently published, no reader reviews yet)
Java 8 in Action, by Raoul-Gabriel Urma, Mario Fusco, and Alan Mycroft (amazon.com reviews)
Java 8 Lambdas, by Richard Warburton (amazon.com reviews)
Mailing lists
These are now mainly of historical interest to anyone wanting to understand the discussions that led to particular features of the final design.
For a long time, the principal open mailing list for discussing the Java 8 lambda-associated features was lambda-dev. The expert group lists were closed. In September 2012 a long-desired goal was achieved with the introduction of new open lists for the expert group discussions. The function of the new and changed mailing lists was explained in this post. In brief, they are these:
The list lambda-dev is for discussion of implementation issues, including bug reports, code review comments, test cases, build or porting problems, migration experiences, and so on. It should no longer be used for language or feature design discussions, though the archives are a useful source for past discussions of this kind. Comments and discussion about the specs now belong on the new lists, described next. (It should be said, though, that in fact language and feature discussion on lambda-dev was continuing at least up until early Nov 2012.)
The expert group list for language feature discussion is not open for subscription or posting, but the archives are publicly readable and its traffic is copied to the public list lambda-spec-observers. This list is for discussion about the spec, but there is no guarantee of participation by the expert group. The public list that is read by the expert group is lambda-spec-comments, which is intended as a “suggestions box” to the expert group rather than a place for engaging in debate with them. Accordingly, you can post and you can read the archives, but it’s not publicly open for subscription.
A similar structure has been introduced for library discussions. There are publicly readable expert group list archives, a public libraries spec observer list, and a libraries spec comments list, all with the same purpose and restrictions as the corresponding language mailing lists.
“The group of Experts who develop or make significant
revisions to a Specification.” (JCP Process Document)