
Backward compatibility is a huge help for migration because most of our code didn’t need to change.

Upgrading from OpenJDK 9 to OpenJDK 10, and later from OpenJDK 10 to OpenJDK 11, required only relatively minor changes.įor another, Java’s backward-compatibility guarantee allows application code developed and compiled with an older version of Java to run on a newer version, and the power of this should not be underestimated. As expected, the hardest part was the upgrade from OpenJDK 8 to OpenJDK 9, which required major changes to the Salesforce app. While we only intended to use them as stepping stones, not in production, we upgraded to OpenJDK 9 and OpenJDK 10 as soon as these versions became available. Well, for one thing, we didn’t exactly make the leap in a single jump. Why did we think we could safely make the leap from OpenJDK 8 (the last prior LTS release) to OpenJDK 11? This kicked off a long-awaited opportunity to move the Salesforce app forward and bring great new features and innovations to our internal developers. In late 2018, OpenJDK 11 became available as the latest long-term support (LTS) Java release. Getting it done right allowed us to harness several years’ worth of Java runtime innovations, provide a better experience to our customers, and contribute back to the open source community.


In this case, upgrading the main Salesforce CRM application to OpenJDK 11 was a massive, cross-organizational undertaking. You might not know this, but Salesforce has led the industry in integrating leading-edge, transformational technologies and providing them to our customers in a safe, secure, and seamless manner, without compromising our #1 core value: Trust. From gRPC to Kubernetes, Salesforce has a history of making early, bold advances into new tech. Salesforce was one of the first major enterprises to adopt OpenJDK 11 at scale in production, starting our adoption journey shortly after its release in late 2018.
