We've been working with DACH companies since 2014, and we can see that many of them are reluctant to major Java updates. Often it's because entrepreneurs assume that the better is the enemy of the good. If something works, then there’s no need to change it.
And while this logic definitely does apply to many business cases, the recent changes in the Java world leave no doubt: if you don't update the system, you will fall behind both business and technology-wise.
Today I will break down all the changes, benefits, and new features of the latest Java versions that I believe make a big difference in how companies and their software work.
PS. Most cases, the following changes compare Java 8 and 17, but not all of them. Some features are available in earlier Java versions. Still, I will simplify the examples to the most
popular, old (J8), and the latest LTS-covered versions (J17) for an easier understanding of the trends. If you want a more detailed explanation, contact me directly.
End of technical support
Some Java releases come out in the form of LTS (long-term support), which in the case of Java 8, ended in March 2022. Oracle no longer includes Java 8 with PremierSupport. As they officially pointed out, "their effort put into maintaining it will likely be significantly smaller than it is right now."
In other words, Oracle stops investing in Java 8 and won't develop it as it will develop new versions. As a result, companies working on old Java won't have access to technical support. Their systems will grow slower than competing ones running on Java 17 and newer.
Safer and more efficient business
The lack of support by Oracle also means the lack of access to security patches. Each version has security issues; the older the version, the more holes it has. And Oracle will no longer patch those.
Companies that don't update Java will be more vulnerable to data leakage and other security weaknesses. The number of security and performance issues that are fixed regularly is vast. Please take a look at this list to have a glimpse of the repair scale.
In addition, with Java 17, companies get access to features that improve system performance and thus the work speed of all employees. One fundamental performance change not available for older Java versions is the new, improved G1 and ZGC Garbage Collector.
A Garbage Collector is a built-in program that automatically and continuously manages your system's memory. Thanks to it, your system (application, program, website) is constantly cleaned of unnecessary data, so it doesn't fill up and works quickly and efficiently.
Java 17's GC is faster and more efficient than its predecessors on every level. Below is a comparison of latency (shortening the app's work interruptions) between J8 and J17. GC in Java
17 cuts latency by up to 60 percentage points faster than in Java 8.
In practice, this means that with the newer GC, the downtime of the company’s software caused by running it will be shorter by milliseconds. It may not seem like a massive result, but it can be crucial in the case of software that processes data in real-time. And the more data it processes, the bigger the importance of the milliseconds.
Less code, fewer problems
The Garbage Collector is one of the Java 17 most profound features, but there are plenty more. I will name three other examples I find of great importance for the business.
Records (available since J16) – simple information carriers operating between different app layers, thanks to which you can program, for example, DTO much faster.
Sealed classes – a mechanism for which the developer can introduce restrictions in the type hierarchy without completely blocking inheritance.
Switch Expression – an improved version of the switch control statement that allows you to assign "switch result" to a variable immediately.
Translated into non-tech language, all of the above features facilitate and accelerate the work of developers. Thanks to them, the company’s software will have fewer lines of code, and the code itself will be easier (and cheaper) to maintain.
Attract new developers and retain existing ones
Entrepreneurs who run IT companies (or ones that highly rely on some software) probably know how difficult it is to build a complete IT team. It indeed is the case for the DACH region, which is why many companies from this part of Europe decide to offshore their IT to neighboring countries.
Still, as a company, you want to attract the best, who usually want to work with the best (which often means the latest) software. Staying with the old system discourages ambitious new employees eager for growth and development.
Completing an IT team is generally hard, but with old software and technologies, it's even more challenging.
This principle also works the other way around. If you stay on the old software, you increase the chance that your developers will leave. We see this trend in our German partners'
companies. Developers often change jobs because they don’t want to work with the old Java, which doesn't give them any new challenges or room for improvement.
Even more safety and efficiency
Moving to new Java doesn't just mean updating the system itself. Instead, it forces the company to simultaneously update libraries, which are files that allow developers to use the same code multiple times. Libraries facilitate and shorten the coding work, but you want to update them regularly because new versions are safer, more convenient, and faster.
Old, out-of-date libraries are fraught with security and performance bugs. When you update Java, you update all libraries too.
Java update is an evolution, not a revolution
Finally, I want to add that updating Java isn't a transition to a new, different system. Companies upgrading Java won’t have to teach their employees new things, train them or hire dedicated Java17 specialists. New Java is your old system, only faster, safer, and more efficient.
As long as the old software is working and doing well, it's worth using. However, you want to switch to the latest version when official support ends, and the system ceases to be developed.
For Java, the cut-off point is March 2022, which is the month when PremierSupport has ended. If you're reading this after this period and your team is still working on Java 8 or earlier, we would hapily answer all your questions regarding the upgrade.