Over the years, Java has earned its status as one of the leading programming languages for enterprise applications. Today, Java powers much of the software used in the real world to facilitate business and accomplish tasks. Its stability, predictability, depth of features, and strong community have made it a great choice for businesses who choose to use it.
Oracle has released consistent updates to Java every few years in the past. These updates were complete, functional, usually backwards compatible, and played well with existing enterprise applications in most cases. The business community loved the predictability of the updates and the long lead and support times between versions. However, the long time between updates also slowed down Java’s ability to innovate and deliver on new ideas. Oracle realized that slow release times meant Java was falling behind other languages for new applications and features.
Faster Release Cycle
A recent trend for Oracle, Java, and development in general has been moving faster. More frequent releases means users get new features more quickly. It also reduces risk if something goes wrong. Oracle recently announced it would be moving Java to a faster release cycle. The new Java Development Kits (JDKs) will release every six months. Java 9 and now Java 10 are released under this new schedule, with the two updates coming in quick succession.
Companies can choose to stay with an older, slow-produced version of Java, like Java 8. However, support for these older versions will end in 2020. The upcoming build of JDK 11 is the next Java release scheduled to receive long-term support (LTS) from Oracle, with support lasting through 2026. Releases that are in-between LTS releases, like JDK 9 and 10, become obsolete as soon as the new version releases. Following JDK 11, the next LTS release will be JDK 17, slated for delivery in 2021.
In theory, this means that companies that value stability and predictability can upgrade every time a LTS release comes out. Companies that want to stay on the cutting edge or access new features will be able to get more frequent releases in between. For previous Java releases, Oracle has made use of auto-updating on desktop to bring users up to speed with the latest version of Java. However, on the new release schedule, Oracle won’t enforce auto-updates on Java 8 desktops.
Released in September 2017, Java 9 made significant changes and updates to its three-year-old brother, Java 8. Chief among those updates is an entirely new architecture and structure to Java. JDK 9 uses a modular structure instead of the old monolithic model we’re accustomed to with Java. For devs, this means modulepath replaces classpath and each module runs independent of one another.
The benefit of modularity is the ability to set up custom configurations of modules and remove any unnecessary modules. Such custom configurations could greatly increase efficiency and scalability in Java apps. The ultimate goal of this modularity push is making Java more accessible to smaller-scale machines, especially smartphones.
Another major improvement in Java 9 was the JShell Read-Eval-Print-Loop functionality. Developers can now get instant feedback on how their code is working, Instead of taking the seconds to run the program, feedback comes in real time.
Java 10 released in March 2018. Right on schedule, six months after Java 9. Being an incremental release, Java 10 didn’t include any monumental changes, but it did break ground in a few key areas. Most importantly, Java 10 includes a new garbage collector interface that organizes and concentrates the source code for garbage collection into one place instead of distributing files and pathing throughout the environment.
The new version of Java can also make inferences about variable type when you use the “var” keyword. Java is still strongly typed, but this makes it easier to define and set a new variable. In addition, Java 10 makes it easier to use Docker containers in the JVM, further improving on the scalability and modularity of Java 9.
Java 11 is still several months away, but we already know a few things about what to expect from the upcoming reference version, long-term support release in the fall of 2018 (scheduled for September). Some of the scheduled updates include standard browser updates and upgrading Java to Unicode 10 (previous versions used Unicode 8). Other updates will be more substantial, like new syntax for some Lambda parameters, a garbage collector with lower overhead, and new class-file constants. Java 11 will also get rid of support for Java EE and COBRA modules. COBRA is being retired and Java EE is now Jakarta EE, maintained by the Eclipse Foundation.
Since it’s the new long-term support release, Java 11 will also standardize and codify the improvements from Java 9 and 10. This long-term support applies to customers with a commercial support contract from Oracle. Public updates to Java 11 will stop after six months when Java 12 releases.
The Future of Java
So, that covers the recent changes and what’s coming in the near future for Java. What about the long-term plans for the Java ecosystem?
The ongoing trend is embracing interoperability. Java has opened its doors to partnerships with other organizations to extend the Java community. OpenJDK and Jakarta EE are two examples of this interoperability in action. Additionally, future versions of Java will get improved API integration and support, modular open source libraries and frameworks, and greater attention to microservices, containers, and mobile devices. Spring, Kotlin, and other frameworks/stacks will also become increasingly popular for developing new applications.
With Java’s new quick release cycle, expect a lot of changes in the coming years. Java will become more responsive to emerging trends in development and the needs of its users. This embrace of a quick release cycle along with extended support for reference builds means Oracle has implemented a hybrid approach that gets the best of both worlds in terms of stability and flexibility.
Originally published at Intertech Blog.