Session Report: JSR 341: Expression Language 3.0
By Janice J. Heiss on Sep 24, 2013
Ed Burns, Consulting Member of Technical Staff, and Kinman Chung,
Principle Member of Technical Staff, both at Oracle, presented a session
on Monday in which they described new features in JSR 341, Expression
Language (EL) 3.0. They discussed the APIs for the use of EL in
standalone environments and EL syntax for new operators, plus lambda
expressions, and support for collection objects, all the while offering
copious code illustrations.
Burns remarked that he was pleased
that Java Champion and JavaOne Rock Star Adam Bien had referred to EL
3.0 as “the hidden gem of Java EE”. “I don’t know how hidden it is,”
said Burns, “but I think it’s a gem.”
He discussed the origins
of EL, which has a long and active history in the Java platform. EL
began in 2004 as part of the Java Standard Tag Library (JSTL 1.0), moved
to JSP 2.0 in 2006, and became an independent specification with JSR
341 in 2011. It is used in JSF, CDI, and Avatar. Now, 9 years after its
inception, it is an independent specification that is heavily used in
JSF.
Burns observed that the presence of EL is the key
differentiator between Java server and non-java server stacks. “Java
server-based web frameworks are likely to use EL,” said Burns. “When you
show someone who is not familiar with EL how easy it is to move things
together from disparate parts of your application, it’s very
compelling.”
The most important feature that EL 3 brings is
lambda expressions – developers do not have to wait until Java SE 8 is
released. It all runs on Java EE 7, which requires Java SE 7 -- which
means that it is currently available. Burns gave a brief discussion of
lambda expressions, which basically behave like an anonymous function --
lambdas in EL are EL expressions. They offer full access to the EL
environment within the body of the EL lambda expression, something not
available from Java SE lambdas. “You won’t be able to refer to other EL
things from a plain old SE lambda expression,” said Burns.
The
goal of EL 3 is to provide greater expressive power for applications and
to use it outside of Java EE. Burns and Chung provided an overview of
collection operations and explained EL’s support for stand-alone
environments. EL 3 is easy to use outside of Java EE and provides
standard data structures: ELContext; ELResolvers; and local variable and
function repositories.
They explained that it enables direct EL
operations and has: EL expression evaluation; Bean definition; and
Function definition. They emphasized that other key parts of Java EE can
also be used standalone, such as: Bean Validation; Persistence (JPA);
and Contexts and Dependency Injection (CDI). They encouraged developers
to consider the possibilities for cloud deployment in: Defining
functions and variables and defining beans.
They spent the rest of the session illustrating their key points with a healthy dose of code.
Links and Downloads:
* JSR 341: http://www.jcp.org/en/jsr/detail?id=341
Download spec and API javadocs
* Project home: https://java.net/projects/el-spec/
Report spec bugs or RFE for el.next
* RI: https://java.net/projects/uel/
Maven artifacts available from Maven Central
Download source and report RI bugs
* Integrated in Glassfish 4.0: https://glassfish.java.net/
You can listen to this session in early October on Parleys.com.
