Following from previous JavaOne events, the inaugural Oracle CodeOne 2018 was recently held in San Francisco, USA. Headline announcements in the Monday night keynote, titled "The Future of Java Is Today", included: the new six-monthly Java/JDK release cadence is proceeding as planned; Oracle (and many other organisations) are continuing to support and contribute to Java; and there are several new OpenJDK projects exploring productivity-enhancing language features like raw String literals, fibers and continuations, and foreign-function and data interfaces.
After a brief welcome from Georges Saab, vice president of Software Development for the Java Platform Group, the first presenter to the stage was Matthew McCullough, VP of Field Services at GitHub. He emphasised the importance of OpenJDK, the open source reference implementation of the Java platform, and discussed "Project Skara", a prototype GitHub-based mirror of the official OpenJDK upstream Mercurial repositories.
The goal of Project Skara is to investigate alternative source code management and code review options for the JDK source code. McCullough also discussed that most "software of consequence" is developed through global collaboration, and encouraged the audience to get involved with open source projects. A brief demonstration of the several new GitHub features that facilitate this goal were demonstrated.
It is worth noting that the work in Project Skara is early-stage and currently separate but loosely aligned with the community-driven AdoptOpenJDK project, which is also mirroring upstream OpenJDK repositories and offering builds of all recent and future JDK versions along with the goal to offer four years of builds and best-effort community support for Long Term Support (LTS) versions of Java (which includes the recently released Java 11). Commercial backing for the AdoptOpenJDK project includes IBM, Azul Systems, the LJC, Microsoft, Ocado Technology, and Packet.
Saab returned to the stage and discussed about "preserving Java's virtues". Java continues to be free and open, and the community is committed to delivering ongoing platform completeness and investing in developer productivity and compatibility. There is also continuing investment in quality and security, and preserving open and transparent development.
Moving on to Oracle's contributions, Saab presented the recent open source release of several previously commercial Java platform features: in Java 10 this included Application Class Data Sharing (ACDS); and in Java 11 this included: Project ZGC (low latency GC for multi-terabyte heaps), Flight Recorder and Mission Control (for diagnostics and monitoring).
The new six-month release schedule has also been successfully delivered, which provides incremental improvements to the Java platform, and allows developers access to new features sooner, with "no more disruptive major releases" (if a scheduled feature misses the release deadlines, it simply gets moved to the next release). Saab briefly touched on the new LTS release and Oracle support model, of which there has been much confusion within the community (and InfoQ has recently covered a related "Java is Still Free" Java Champion statement on this topic).
This section of the keynote was concluded with a thank you to the many contributors within the OpenJDK community, and a mention of several Oracle-funded Java community support programs, including the Java Magazine, Java User Groups, Java Champions, jDuchess Program, Oracle Academy Student Outreach, and the Java Community Process (JCP).
Next to the stage was Mark Reinhold, chief architect of the Java Platform Group at Oracle, who began by reminding the audience how much of a challenge it has been to move to the new Java module system (JEP 261), as this required much re-writing of internal components. However, since the release of this functionality within Java 9, the uptake has been good, and benefits are starting to be realised. Reinhold encouraged every Java developer to take a look at the new functionality, and recommended several books to get started.
The new modular architecture has allowed the platform release cadence to improve, and echoing the earlier comments made by Saab, Reinhold discussed the successful on-time delivery of both Java 10 and Java 11, and also the impact the LTS releases will have (which primarily relates to the offering of commercial support from Oracle, although other vendors and AdoptOpenJDK plan to offer alternative builds and community-driven and commercial support models).
A core message from this section of the keynote was that "Java is still free" and that Oracle JDK is very similar to the OpenJDK builds (especially for the first six months of an LTS release, although builds may start to diverge after this date depending of what security and bug fix patches get released into the upstream OpenJDK repositories). Reinhold presented his "top five misconceptions about the new release model", which included the incorrect belief that non-LTS releases are experimental, and if you maintain an infrequently-migrated system that you can ignore the non-LTS releases.
He also discussed the community efforts of testing open source projects with the latest Java releases, and mentioned the Twitter hashtags #WorksFineOnJDK9 and #WorksLikeHeavenOnJDK11. All developers using Java 9 or later were strongly encouraged to upgrade to the latest versions of all of their tools and dependencies.
Next, Reinhold changed gears and began looking towards the future. Java 12 / JDK 12 currently has four JEPs (so far) associated with it, including a (command line flag enabled) preview of new switch expressions and raw string literals, and "One AArch64 Port, Not Two" and default CDS archives. Emphasis for several future features is being placed on developer productivity and program performance "in the face of constantly-evolving programming paradigm, application areas, deployment styles and hardware".
The final section of the keynote focused on four new projects within the OpenJDK:
- Amber: "Right-sizing language ceremony", including local variable type inference, raw string literals that do not require escape sequencing
- Loom: "Continuations and fibers", including the removal of old "meaningless" or broken Thread-related API methods, and the addition of fibers as "lightweight, efficient threads managed by the Java Virtual Machine, that let developers use the same simple abstraction but with better performance and lower footprint"
- Panama: Non-Java foreign-function and data interfaces, including native function calling from JVM (C, C++), and native data access from JVM or inside JVM heap
- Valhalla: Value types and specialised generics
Reinhold presented a series of live-coding demonstrations with the latest (unreleased) Java 12 build, examples of which can be found on the respective project websites linked above.
Community reaction to the Java keynote was generally positive, with Paul Bakker stating "Excellent keynote at #CodeOne! And for good reason, [the] #java ecosystem looks better than ever." and Chris Hegerty commenting "Excellent #Java Keynote at #CodeOne, especially the technical section by [Mark Reinhold]".
The full video recording of "The Future of Java is Today" keynote can be found on the Oracle Developers YouTube channel.