The JavaOne keynotes are always a time for cheerleading and a little self-indulgent praise. And why shouldn’t they be? After all, that’s one of the reasons why people attend the conference, not only to look towards the future, but to celebrate the platform that for the most part, is a great facilitator of application development.
Just like last year, Oracle’s Vice President of Development, Georges Saab, kicked things off with the opening address. The big news? I’d have to say his discussion about how with Java 9, the Oracle JDK will be distributed as a Docker contained image for those who aren’t interested in downloading the binaries. “We want Java to be a first class citizen for Docker,” Saab said, much to the delight of all the container architecture fans in the audience.
Java: The egalitarian choice
Guests Mashario Yoshioka from Mazda, along with Clement Pang of WaveFront also participated in the cheerleading. As Staff Manager of the IT Solution Division at Mazda, Yoshioka discussed how well Java meshes with the company’s commitment to both aggressive progress through innovation, and defensive positioning that focuses on system development and support for business continuity. Pang pointed to the ability to build on top of a well-established system with mature, documented libraries as a strong benefit for his SaaS startup. With the addition of Lambdas, which Mashario also praised, Pang spoke to how his team can write code that is even more elegant and easy to read than ever.
Looking ahead to Java 9
Chief Architect of Java Platform Group at Oracle, Mark Reinhold, spoke briefly about what’s coming up in 9. “You might think 9 is all about Jigsaw and modularization, but there are 85 new features, some big and some small.” After overcoming some technical difficulties onstage, he gave a quick walk through of JShell, the redevelop print loop that developers are likely to adore in Java9. With this interactive tool, exploratory programing is put front and center. “Developers can type snippets of code directly into JShell and it will evaluate and print the results and tell you what’s what.”
As an example, this tool might be useful for exploring an API and finding out which methods can be invoked. It’s not a revolutionary concept for languages like Groovy or PERL, but it’s fairly drastic for Java developers who are used to having to declare a class and write a main method if they want to do something as simple as printing out the words “Hello World.” And thinking forward as guys like Reinhold always do, JShell is designed to work with existing systems that developers use on a daily basis. “It’s a good compliment for an IDE like NetBeans.”
“We want Java to be a first class citizen for Docker”
As for modularity, Reinhold’s comments mirrored his speech last year regarding the key values for the Jigsaw project. Namely, the modularization process must include reliable configuration and strong encapsulation. This means all modules will name the other modules on which they depend and they will be clear about what packages they do and do not include. Ideally, this newer way of doing things will be highly backward compatible so that “what works today should work tomorrow.”
Valhalla and Panama still the stuff of legend
Like Mark, Java Language Architect Brian Goetz recapped his keynote from last year by touching on projects Valhalla and Panama. The first project covers value types and specialized generics. With Valhalla value types, developers get programmable primitives with all the expressive and safety benefits of a class and the performance of a primitive. The upgraded approach to generics is also expected to provide benefits without the penalty of boxing.
With Panama, polyglot programming may get easier since the interaction between Java and native coded data will get a makeover. Java developers will now be able to call C functions without complicated handwritten, and error prone JNI processes. The new tooling will work like an API to help make interaction safe and fast.
Many improvements proposed for enterprise edition
Anil Gaur, Group Vice President of Cloud Application Foundation at Oracle, rounded out the keynote address with a look at Java EE. As he noted, enterprise Java has transitioned quite well to the cloud, maintaining compatibility with a huge variety of frameworks, web containers, and PaaS solutions that are popular in today’s distributed environments. In fact, the platform is ubiquitous throughout the enterprise space. In Gaur’s words, “If you are developing for the enterprise, you are probably using something from JEE whether you realize it or not.”
Gaur’s talk hinted at many areas of proposed change for the next edition of JavaEE. In the case of creating a better programming model in an environment ripe with distributed data streams, the focus might be on reactive programming that is centered around extending things like JAX-RS and JSON-B. Also, the development of an event messaging API could assist in forming a unified event model.
These upgrades will be designed to make the platform easier for beginner and intermediate developers to use. While there is no shortage of choices for components to use, it can be difficult for programmers to know where to start in making smart choices. Some standardization for best practices should go a long way to alleviating confusion. Overall, the upcoming changes across the Java appear designed to make things easier for big business, but without overlooking the individual developers and teams that do the heavy lifting.