The final day of JavaOne 2014 opened with the traditional community keynote. First up was Michael Greene (VP Software and Service Group, Intel) who focused on an Oracle Intel partnership for big data and Hadoop. Greene spoke at length about making Intel hardware the natural home for Java programs, citing a 32x performance enhancement for Java running on Intel since 2007. He announced that Intel are joining OpenJDK as a contributing member.
Mark Reinhold (Chief Architect, Java Platform Group) and Brian Goetz (Java Language Architect) took center stage to discuss upcoming features in Java 9 and beyond. This material seemed to be a slightly reworked version of slides controversially cut from the opening keynote due to late running.
Modularity was a focus of the presentation although both Reinhold and Goetz insisted that the feature would not represent as much of a sea change for developers as the introduction of lambda expressions has been. Earlier, Head of SE Development at Oracle, Georges Saab, confirmed to InfoQ that modularity is definitely intended to ship as part of Java SE 9. With some of the engineering work already well underway, this is a welcome clarification.
Goetz focused on features that may arrive later than Java 9. He gave the opinion that up until now the Java ecosystem had provided better tools for solving more and more complex problems, but that both hardware and the nature and scale of data sets have changed, and Java has to adapt to remain relevant.
As an example, he drew the crowd's attention to the fact that 25 years ago an add and a fetch instruction were roughly the same cost. Years of adding caching and increasing processor sophistication now mean that a fetch leading to a cache miss can cost as much as 1000 processor cycles. Goetz promised reform of Java's core data model of 8 primitive types, arrays and objects. This change is intended to provide higher performance and fewer cache-unfriendly behaviors caused by techniques such as too much indirection in arrays of reference type.
Two specific examples he gave of concrete efforts were Project Valhalla and Project Panama. Valhalla is focused on JVM and Java language co-evolution, with initial areas of interest including primitive specialisation of generics, value types in Java and var handles. Panama encompasses Foreign Function Interface (FFI) support, Data Layout and native data and code access, as well as "Arrays 2.0", a reimagining of the capabilities of arrays for the modern JVM.
Goetz also speculated that some Java 8 classes (such as Optional) might be transitioned to value types in Java 9, although he admitted more work is necessary before the engineering team can be sure that this is advantageous. This possibility has previously been hinted at in the Java SE 8 platform docs.
The keynote continued with a community panel, comprising Brian Goetz, Charlie Nutter (JRuby Lead, Red Hat), Brian Oliver (Coherence Architect, Oracle), John Rose (JVM Architect, Oracle), and James Gosling (Chief Software Architect, Liquid Robotics and creator of Java), with Mark Reinhold moderating.
The question "Do you regret adding null
to Java?" drew a simple "No." from Gosling, before adding that all the alternatives he's considered are worse, and continuing with what could be a concise description of the philosophy of Java language evolution:
"If I don't know the right answer, I'd rather not do the wrong thing as a stop gap."
Gosling paid tribute to the work done by Goetz and the language team and spoke to their future plans:
"I want values worked out, they sound like the right idea, but there are a morass of details underneath."
Further questions explored lambdas and generics in some detail, with Goetz dismissing the idea that a version of lambdas that simply provided syntactic sugar over inner classes would have been sufficient. On the subject of reifiable generics, Goetz drew a clear distinction between true reification and primitive specialisation (which would allow ArrayList<int>
to be valid Java), and claimed that the effort spent on reification could be better used elsewhere.
Nutter spoke to the experience of the JRuby community in working with Microsoft's IronRuby (Ruby on the .NET virtual machine, which has reified generics), and expressed the view that the contortions Microsoft needed to make were considerable. He went on to say that reification of types from a dynamic language is a huge problem, and the use of type erasure on the Java platform avoids them.
The final section of the keynote saw technology evangelist Jim Weaver announce a new partnership between JavaOne and Parleys, with all JavaOne content being made available on Parleys. He went on to showcase a series of projects in the mobile and IoT space, including an insightful presentation from Andra Keay (Managing Director, Silicon Valley Robotics) about the changing nature of robot-human interaction. IoT projects in automotive and environment control (including a smart greenhouse) were also showcased.
An alliance of two open source companies LodgON and RoboVM announced a cross platform port of Java FX to Android and iOS. The iOS port is based on Ahead-of-Time compilation, with native access to iOS APIs. The currently shipping version supports Java 7, and the companies committed to bringing Java 8 & Java FX 8 to both mobile platforms.