As things get better, they often get slower, making better things worse. Far too often, that’s how things work in the tech sector, which is why I’m glad to see the architects of Java SE 9 bucking this trend in the latest full version release.
When I think about application performance, I think back to the days when I played my Atari 2600 as a kid. I’d shove in the Space Invaders cartridge and the only delay between clicking the on switch and engaging with the aliens was the speed of light traveling between the television set and my eyes. I stopped playing video games when Sony improved the gaming console so much that any time my Dig Doug died, I’d have to wait a minute and a half while the CD-ROM spun and the Fygars reloaded. Video games got better, and because of that they got slower, which made them worse than they were before. Even today, I long for the performance of an Atari 2600.
It’s a demoralizing cycle that asserts itself in a variety of areas of the tech sector. My 8 gig Android phone is unusable after the latest OS update. Windows 10 won’t even install on my old Lenovo laptops which run just fine with XP. And even if I bought a new phone, a new desktop and a new laptop with the most expensive hardware Fry’s Electronics is wiling to sell me, none of it would boot up as fast as my old Atari.
I doubt that an Atari 2600 was the inspiration as Oracle’s language architects worked on Java SE 9, but it may as well have been, because Java SE 9’s new module system is making Atari-like performance a real possibility.
Atari-esque performance and Java SE 9
The highlight of every JavaOne keynote happens when Oracle’s chief language architect Mark Reinhold takes the stage. Reinhold doesn’t talk in superlatives as do most other keynote speakers. Reinhold talks Java and always shoots straight about where we are in the evolution of the language. At JavaOne 2017, Reinhold demonstrated Java SE 9’s evolution beyond the simple classpath model and into an age of module isolation. It’s easy to tell that the Java language team is proud of this achievement.
The evolution of Java SE 9
Now there’s a plethora or reasons to be excited about modularity’s introduction, but in my opinion, Project Jigsaw’s greatest contribution to Java SE 9 is the fact that it not only makes software development with the JDK better, but it makes the applications we develop faster as well.
During his JavaOne 2017 keynote, Reinhold engaged in a little live coding in which a simple, module based Java SE 9 application was created. The whole thing was deployed to Docker and when the 261 meg container was run, the compulsory Hello World message was displayed. That was impressive in itself, but what ensued immediately following this little demonstration can only be technically described as witchcraft.
After the first Docker build, Reinhold remade the container but employed the new Java SE 9 tool JLink. “Java finally has a linker,” said Reinhold. “It’s an optional step, but it’s a very important one.” Using JLink, any of the 26 modules that the JDK has been divided into that aren’t used by the application get pruned away. The resulting recompilation using JLink created a new container that impressively tipped the scales at just under 39 megs.
With Java SE 9, Reinhold has not only delivered a better JDK, but he’s also delivered a system that can be configured to be faster and have a much smaller footprint as well. They haven’t just improved the functionality of the Java SE 9 platform, but at JavaOne 2017 they’ve shown how they’ve improved upon important non-functional aspects of it as well.
Prognosticating about Java SE 9 performance
Now I should be careful to draw a line between a container’s footprint and actual performance. I’ve deployed plenty of Java applications to WebSphere servers hosted on big, bare metal behemoths, and I doubt the presence of an unused Swing package sitting on the file-system inside of the JDK ever had a big impact on the performance of my e-commerce apps. But a module system does allow for a variety of tricks, such as the lazy loading of components, that developers can start taking advantage of in their code. And being able to move smaller Docker images across the network when updates happen or patches need to be applied will have a real, measurable impact on the performance of administrative and infrastructure tasks. The benefits of the Java SE 9 environment’s newfound modularity will assuredly reach far and wide.
It was an uphill battle getting Project Jigsaw finalized, ratified and packaged into the Java SE 9 platform before the Java community descended upon San Francisco for the JavaOne 2017 conference, but Reinhold and the rest of the Java language team made it happen. It’s an impressive feat, and it’s one for which they are deservedly proud.
You can follow Cameron McKenzie on Twitter: @cameronmcnz