Last time I wrote about my thoughts on Java FX at Devoxx after watching a variety of talks, you can read about them here. This time I give you my takeaways from the Java Keynotes. Wednesday marked the start of the Devoxx 2013 Conference. So what better way to kick of a conference revolving around Java then to have Mark Reinhold host a keynote speech on Java 8 and what lies beyond. The keynote was absolutely packed and overflowed into the adjacent room, but I was lucky enough to snag a seat in the main conference!

Here are my takeaways from the Java 8 and Beyond keynote.
Lambdas Are Here And They Are Awesome
Lambdas, Java’s implementation of closures, have really impressed me. At face value lambdas seem to just be syntactic sugar for anonymous inner-classes, but they are much more than that. I won’t delve too far into the details, but there are significant differences in the way that bytecode handles lambdas as opposed to how it handles inner classes, which make lambdas much more efficient at run time. Which everyone likes.
The Streams API
java.util.stream offers two major features; First of all, like lambdas, it seeks to remove verbosity of performing operations on collections of data. Also like lambdas, this may be a jarring change from the code structure you’re used to. For example, say we have a list of Person objects and we want to print out the names of people who are over 65. In previous versions of Java we would write something like:
for(Person p : people){ if(p.getAge() > 65){ System.out.println(p.getName); } } |
Using Java 8 we can write it like this:
people.stream() .filter(p -> p.getAge() > 65) .forEach(p -> System.out.println(p.getName())); |
While this example is rather small, it demonstrates the clarity of streams. Each method has a distinct and obvious function, as opposed to the comparatively more obscure, nested nature of loops. The second feature is that it allows for easy parallelism with .parrallelStream(), with the caveat that the cost to set up parallel streams may not be as efficient as just sequentially processing the data.
The Internet of Things, is a Thing
Embedded devices are everywhere these days, many of which running Java in one form or another. Oracle have been working on bringing Java SE to embedded devices, believing that the “internet of things will take off in a huge way” and lowering the barrier to entry for java developers, as well as allowing for portable code will allow for the Internet of Things to evolve even faster. The device at the forefront of the Internet of Things is most definitely the Raspberry Pi. So far at Devoxx I’ve seen it used to monitor a car data in realtime, transformed into a tablet device, a breathalyser and powering a chess playing robot, amongst other things.
Java is Not Dead
At the start of the keynote, Mark Reinhold declared that “No technology can survive by standing still” and he is absolutely correct. With the new features introduced into Java 8 and what’s in store for Java 9 and beyond, I think it’s safe to say that Java is certainly taking a step in to the future.
Do you need to solve any of these problems in Java?
Convert PDF to HTML5 | Convert PDF to SVG | View Forms in the browser |
View PDF Documents | Convert PDF to image | Extract Text from PDF |
Read/Write images | Replace ImageIO | Convert Image to PDF |