Jenkins Moves Forward: Deprecation of Java 8 and Embracing Java 11
Written on
Chapter 1: Jenkins Deprecates Java 8
Jenkins, the widely-used open-source DevOps tool, has declared that with the release of Jenkins 2.357 on June 28, and the forthcoming September LTS version, a minimum requirement of Java 11 will be enforced.
Originally launched as Hudson, Jenkins has been a staple in the continuous integration landscape for over a decade. Since its establishment in 2005, the Jenkins project has navigated multiple Java transitions. The current shift from Java 8 to Java 11 aligns with its historical migration patterns.
In a recent blog post, developer Basil Crow discussed the potential short-term retention of Java 8, but cautioned that this could be detrimental for several reasons. Firstly, numerous essential third-party libraries utilized by Jenkins, such as Jetty, JGit, Spring Framework, and Spring Security, have begun to mandate newer Java versions. Consequently, remaining on Java 8 would inhibit Jenkins from receiving crucial security updates from upstream projects.
Moreover, the introduction of Java 11 offers substantial runtime enhancements. For instance, LinkedIn experienced notable performance boosts after upgrading to Java 11, and Adoptium reported significant reductions in memory consumption following their transition (a trend also seen in Jenkins). The latest Java runtime has also introduced various improvements to garbage collection.
Importantly, using the most up-to-date version of Java can help Jenkins attract and retain developers more effectively.
Currently, the official Jenkins Docker image has been utilizing Java 11 for several months, with Java 8 being offered as a temporary alternative and Java 17 in preview mode. However, with Jenkins 2.357, the Java 8 image will be retired, while the Java 17 image will progress from preview to general availability (GA).
Indeed, the Jenkins team encourages users to adopt Java 17. Although support for Java 17 is relatively new and has yet to be fully embraced within the Jenkins community, our observations indicate that Java 17 is a more dependable option than Java 11. We are confident that transitioning from Java 11 to Java 17 will be less challenging than moving from Java 8 to Java 11.
Section 1.1: Performance Benefits of Upgrading
To understand the advantages of upgrading, watch the following video that details the process of moving from Java 8 to 11 for Jenkins:
This video explains the benefits and the steps involved in upgrading Jenkins to utilize Java 11, illustrating the significant performance enhancements that can be achieved.
Subsection 1.1.1: Real-World Impact of Java Upgrades
The effects of migrating to Java 11 are evident in various organizations. For instance, this video elaborates on how to upgrade Java in Jenkins while ensuring compatibility with OpenJDK 11:
This resource provides insights into the upgrade process and emphasizes the importance of using the recommended Java versions for optimal performance.
Section 1.2: Future Directions for Jenkins and Java
As the Jenkins community evolves, the focus on adopting newer Java versions will likely continue, ensuring that the platform remains secure and efficient for all users.