Java 8 grasps parallelism (more tightly) with Lambda Expressions

Oracle’s Java coding cognoscenti gathered in the Czech capital of Prague this week to analyse, present and postulate over the arrival of the Java 8 language.

Now some 20-years after Sun Microsystems first envisioned and built the Java language and platform under the eye of James “father of Java” Gosling, we now find ourselves in a postmodern Oracle world of Java development.


Java 8 has been reengineered and the most significant enhancement in this release is Project Lambda Expressions for the Java Programming Language.

To be more complete, the standout features of JDK 8 are Project Lambda the Nashorn JavaScript Engine and a new Date and Time API.

Top of the pile is Lambda, which is a Java function that adds ‘closures and related features’ dedicated to supporting multicore programming.

Image credit note: this image comes from the very excellent TAKIPI BLOG.

What are Lambda expressions?

A Lambda expression is described as a block of software code that a developer can “pass around” in order for it to be executed later, executed just the once or indeed executed multiple times — hence, more control exists for parallelism over multicore.

While some commentators have said that Oracle’s take on Lambda for Java is not as polished as it might be (and that standard Java imperative style performs much better), Java 8 should not be denigrated or disparaged just for being new.

Java SE vice president Georges Saab told reporters in Prague that yes, there will be refinements over time and that performance will improve.

Java 8 with Lambda has been widely heralded as the most significant update to the language since the introduction of Generics in Java SE 5.0 way back in 2004.

NOTE: Java Generics are meant to add stability to code by making bugs detectable at compile time. Oracle points out that runtime bugs can be much more problematic; they don’t always surface immediately, and when they do, it may be at a point in the program that is far removed from the actual cause of the problem.

The Java 8 release is substantial and spans outward to incorporate the Java Platform Standard Edition 8 (Java SE 8), Java Platform Micro Edition 8 (Java ME 8) and connected releases of Java Embedded products.

So more specifically then, Oracle is also announcing Oracle Java SE Embedded 8, which uses the new Java SE 8 features and is optimised for mid- to high-end embedded systems.

With this release Oracle is aiming to converge Java ME and Java SE to engender a more consistent developer experience and more code re-use across the platforms.

“Java is the global standard for developing and delivering applications everywhere – from small devices to the cloud. The convergence of Java SE 8 and Java ME 8 is intended to provide a consistent development environment that improves developer productivity and application performance, along with the ability to ‘right-size’ the platform for deployment across an even wider range of use cases,” said Nandini Ramani, vice president of development, Java Platform, Oracle.

Ramani spoke to journalists in Prague to explain that as Java now converges, we get to a new and more positive point in terms of being able to program based on device constraints (with mobile and Internet of Things devices in mind) rather than based upon particular functions in the language.

How will developers learn Java 8?

Oracle is also conducting a worldwide tour of Java User Groups (JUGs) and plans to deliver educational events for nearly sixty JUGs in over twenty countries on six continents.

An updated Java SE 8 training curriculum will be available soon from Oracle to help developers transition to Java SE 8 and implement the latest platform enhancements.

Why did we title this piece Java 8 grasps parallelism (more tightly) with Lambda? You may ask…

… this is because Java already has a history steeped in parallelism but that’s another story.

a eudgiwuegfd.jpg