JSR-335 Early Draft Review specification available
BRIAN.GOETZ at ORACLE.COM
Wed Nov 16 05:05:14 PST 2011
I am pleased to announce that there is an EDR (Early Draft Review) available of the specification for JSR-335.
It is not complete and not going to be the last EDR, but is a good snapshot of where the EG is on the basic language features (lambda expressions, functional interfaces, and method references.) It currently contains the first five sections:
* Part A: Functional Interfaces: Provides a definition of functional interfaces, which lambda expressions and method references can be used to instantiate.
* Part B: Lambda Expressions: Defines the syntax of lambda expressions, including rules for the new kinds of parameter lists and statement lists.
* Part C: Method and Constructor References: Defines the syntax of method and constructor references.
* Part D: Conversions and Contexts: Revises the "Conversions and Promotions" chapter to present conversion contexts as useful for both implicit conversions and poly expression typing.
* Part E: Poly Expressions: Revises the "Expressions" chapter to integrate the new kinds of expressions into the grammar and describe typing of poly expressions.
The prototype RI implementation in hg://<openjdk>/lambda/lambda tracks this spec fairly closely, though there are a few gaps and a few places where it is ahead of the spec.
Looking ahead, we're working on the next three sections of the spec now, which includes:
* Part F: Lambda and Method Reference Evaluation: Describes the evaluation semantics of lambda expressions, method references, and constructor references.
* Part G: Type Inference: Redefines type inference to support lambda expressions, method references, and constructor references, and to allow context to be pushed down to nested poly expressions. Addresses existing problems in the current inference specification.
* Part H: Extension Methods: Describes the syntax and inheritance behavior of extension methods, which are members of interfaces.
You can download it from jcp.org:
More information about the lambda-dev