Book review: OpenJDK Migration for Dummies

Written By:
Content Copyright © 2023 Bloor. All Rights Reserved.
Also posted on: Bloor blogs

Book review: OpenJDK Migration for Dummies banner

In the “ideal world”, everyone would be on the latest versions of all of their software, complete with the latest security fixes. But is this always in your best interests? Suppose what you currently have works in your environment and you don’t need any new features the latest versions may have? Any upgrade includes the possibility of new defects that might affect you and upgrading is never zero-cost anyway, it has inevitable management overheads.

There is also the question of support, of course, which may evaporate if you aren’t up-to-date on your software releases. But this shouldn’t matter so much if you are sensible enough to use Open Source Software (OSS) as, although your commercial support provider may insist on software currency, lots of people can read the OSS and help you. Which is why I am reviewing “OpenJDK Migration for Dummies” by Simon Ritter. OSS Java (labeled OpenJDK) is the foundation of many companies’ software development.

Simon works for Azul and I was reading an “Azul Special Edition” of the book. Azul sells a “commercial open source” version of the Java JDK, competing with Oracle’s Java, but it supports a much wider range of Java versions than Oracle does. I think that is all that needs to be said, but I do believe that this book is written from a reasonably vendor-neutral perspective, not just from reading it but also because Simon says something similar to me in person, although it is obviously not possible (given the title) to avoid mentioning Oracle – and “what Azul does” (without saying that it is the only option) appears in various places.

The book is written for people who:

  • “are familiar with open-source software (OSS)”;
  • “care enough about [their] Java applications to want to run them on the very best Java Development Kit (JDK) available”;
  • “are cost conscious. [they’ll] pay for quality service, but [they] expect to be charged a fair price”; and,
  • “Seek out technology providers who offer true partnerships”.

This obviously describes Azul’s intended customers, but many Oracle ones too. The first chapter is entitled “Replacing Oracle Java SE in the Enterprise” and explains why you might want to, and also explains that the Java Technology Compatibility means that your options (not just with Azul) are entirely open. I find this convincing, although (personally) I might have just assumed that readers want to migrate and put the Oracle-specific stuff in the book’s Appendix.

The second chapter, “Preparing for Your Migration” is important whatever Java you are migrating from or to, I think. It covers identifying goals, having a migration process, the risks associated with older versions of Java (without saying that you can’t use them) and, most importantly for success, auditing your current state: “The first stage [an inventory of JDKs currently on use] is often the most time-consuming in a JDK migration because of the variety of JDK versions in use”. If you have an agreed policy such as [“JDK xxx must be used”] you can’t simply take this on trust (even if you think that you’ve enforced it); you must actually do the audit check. This chapter also mentions Oracle JDK-specific features to be aware of – which is good.

Chapter 3, “Migrating Your Applications”, is a useful overview, although it does assume that you know what you are doing (it’s not exactly “for dummies” :-). It even suggests testing your migrated applications: “After installation, you should test all applications that have been switched to the new JDK to ensure correct functionality”. Very likely nothing significant will have changed, but it is also rather likely that you’ll end up unhappy if you don’t test properly. Finding good structured regression test cases may be rather more non-trivial than this book implies, but it is written at quite a high level.

Chapter 4 is “Evaluating OpenJDK Distribution Providers”, This makes useful reading and is acceptably vendor-neutral. It does say “Organizations like Azul also provide binaries for additional versions of Java (Azul currently supports 6 Java versions, 14 operating systems, 7 architectures, and 4 packages)” but it also points out that “If you’re using Oracle Java applications, you should check carefully to determine whether the JDK is included in the support contract” – if it is, you might be foolish to replace it. There are many useful hints and tips in this chapter.

“Exploring the Benefits of Commercial Support”, Chapter 5, should be required reading for anyone with a commercial enterprise which is dependent on “free Java”. Software is never free, it always has a management and governance overhead – and a commercial organisation dependent on OSS community support has, in our opinion, accepted unmanaged risk. This is a very useful chapter for everyone to read, in fact, especially the section on “Understanding and Addressing GPL Contamination”.

Chapter 6, on “Choosing the Right Java Partner” is where one might expect an Azul marketing message – and it is where you, thankfully, don’t get one. It’s a useful chapter, as is Chapter 7: “Ten Questions for Your Next Request for Information”.

Then there are the useful Appendices, which go into a bit more technical detail:

  • Appendix A: a brief history of java.
  • Appendix B: optimizing the JVM for lower latency, higher throughput, and faster warm-up.
  • Appendix C: runtime security.

I liked this book. I do think it is more for an experienced IT person than for any sort of “dummy” but it will be especially useful for a general IT practitioner who is a bit rusty on Java. And useful for anyone who has been invited for a “chat” with their Oracle sales-rep. It really does, it seems to me, give one access to a lot of Azul’s “secret sauce” without much of an Azul sales message. It is recommended.