It's too early to start talking about Java 9, you say? The sentiment is understandable, after all, the developer's preview of Java 8 still has a long way to go before it's certified for production. But having said that, the Java 8 feature list isn't changing, so if you want to start the debate about which completely new features should be added to the Java platform, what you're really talking about is Java 9. And is there a better venue for looking towards the future of the Java ecosystem than the Sunday afternoon keynote at JavaOne? As he brought the opening keynote to a close, Mark Reinhold, the chief architect of the Java Platform Group at Oracle, couldn't keep himself from prognosticating about where the JDK will be going once Lambda is a done deal. Here is his Java 9 tease:
Java on the GPU (Project Sumatra)
Somewhere in the South Pacific, just to the west of the island of Java is Sumatra, and apparently, the graphics processing unit is somewhere west of the central processing unit, and this just might be the next point of conquest for Java. Project Sumatra is an attempt to put Java on the GPU. "Wouldn't it be neat if we could make Java work directly on the GPU, rather than you having to call out some primitive interface?" is the question Reinhold rhetorically asked of the audience, indicating that this project, which is currently part of the OpenJDK, just might get full billing in the Java 9 specification.
"As we all know, Java's generics feature, that was introduced way back in 2004, was based on the notion of erasure," said Reinhold, causing everyone in the audience to turn to the person sitting next to them and mouth the words 'what the heck is erasure?' Regardless, everyone understands that no new classes can be created for parameterized generic types, which can cause some programming difficulties from time to time. "Introducing some level of reification, where you can talk about the type of the thing you've got, at runtime, could be very useful. And along the way, perhaps we could eliminate that annoying dichotomy between primitive and reference types," said Reinhold.
When Reinhold said "it just shouldn't be that hard to integrate Java with native code", the audience gave Reinhold a round of a applause. It looks like everyone is in agreement that an update to the Java Native Interface is long overdue.
The compact profiles in Java 8 are a start, but they're just a down payment
Mark Reinhold, Java Platform Group
Memory efficient data structures
Working with big collections and big data in Java has always been a bit of a challenge. It's one of the reasons that your Java programs just won't scale. Is there some way to make data structures more efficient in Java so that organizations that are managing big collections of information don't have to resort to Scala and Groovy? "It's becoming more and more clear that all of this boxing and pointer chasing makes it hard to do big data really well. If we had less boxing and less pointer chasing, we could load a lot more data into memory."
Unification of Java SE and Java ME
There will be plenty of talk about Java 8's compact profiles which target micro and embedded devices, but that's a far cry from having a single, unified Java platform. Chasing the unified theory of Java might be a bit of a Quixotic quest, but it's certainly a nice goal to which we might aspire. "The compact profiles in Java 8 are a start, but they're just a down payment." Reinhold suggests that perhaps the Java 9 platform will move towards a greater level of unification between Java SE and Java ME.
Speculation is simply just an opinion based on incomplete evidence, but it's also a good starting point when thinking about the future. Adjusting to Java 8 and the introduction of Project Lambda should be more than enough to keep the enterprise Java community busy for a while, but there's nothing wrong with dreaming about Java on the GPU, or looking up the definition of reification as we look towards the future of enterprise Java computing.
What features do you want to see in Java 9? Let us know.