JenkinsがJava 8の対応を終了し、Java 11が必須に。Java 17の対応も開始
今回は「JenkinsがJava 8の対応を終了し、Java 11が必須に。Java 17の対応も開始」についてご紹介します。
関連ワード (導入、年後、発表等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
Jenkins開発チームは、6月28日リリースのJenkins 2.357および9月にリリース予定のJenkins LTS版からはJenkinsの実行環境としてJava 11が必須になることを、ブログ「Jenkins requires Java 11」で明らかにしました。
これまでJenkinsはJava 8もしくはJava 11を実行環境としていましたが、Java 8の対応がなくなることになります。
Jenkins 2.357 released today as the first Jenkins version to require Java 11. @bcrow shares the history of Java support in Jenkins and the benefits of the update. https://t.co/FPTNBTG3jK pic.twitter.com/BcYV5McgpS
— Jenkins (@jenkinsci) June 28, 2022
また、6月14日リリースのJenkins 2.355および6月22日リリースのJenkins 2.346.1 LTSからはJava 17の対応を開始することも合わせて発表しました。
Java 8の利用は下り坂の一方、Java 11が急上昇
Jenkinsは、ビルドやテスト、デプロイなどを自動化してくれるツールとしてよく知られていると同時に、Javaをランタイムとして用いる代表的なツールの1つでもあります。
Javaは、Java 9から導入されたJigsawと呼ばれるモジュール機能などによって大きな変更が加えられたことなどから、Java 8からJava 9以降のバージョンへのバージョンアップはそれほど容易ではなく、多くのユーザーがまだJava 8を利用していると見られます。と同時に、この現状に配慮する多くのJavaディストリビューションでは、Java 8のサポート期間をこの先まだ数年以上継続する計画を明らかにしています。
そうしたなかで、Jenkinsの開発プロジェクトでは匿名のJava使用統計情報を公開しており、これによるとJava 8の利用は2021年頃をピークに急激に減り始めた一方、Java 11の利用は急上昇していることが分かりました。
JenkinsがJava 11へ移行する3つの理由
こうした状況を踏まえ、JenkinsプロジェクトではJava 11へ移行するタイミングが来たと次のように説明しています。
1つ目の理由はセキュリティ面での懸念。
While the Jenkins project could remain on Java 8 for the foreseeable future, this would be imprudent for several reasons. First, many key third-party libraries consumed by the Jenkins project (e.g., Jetty, JGit, Spring Framework, and Spring Security) are beginning to require newer versions of Java, and staying on Java 8 puts the Jenkins project at risk of eventually not being able to receive security updates from upstream projects.
Jenkinsプロジェクトは、当面Java 8を使い続けることも可能ですが、いくつかの理由から、これが賢い選択ではないといえます。1つ目は、Jenkinsプロジェクトが利用する多くの重要なサードパーティライブラリ(Jetty、JGit、Spring Framework、Spring Securityなど)が新しいバージョンのJavaを必要とし始めており、Java 8のままでは、いずれJenkinsプロジェクトが上流プロジェクトからのセキュリティ更新を受け取れなくなる危険性があるためです。
2つ目は、新しいJavaではパフォーマンスやメモリ使用などで大きな改善がある点。
Furthermore, significant runtime improvements have been made to the Java Platform in recent years. For example, LinkedIn saw drastic performance improvements when migrating to Java 11, and Adoptium saw significant memory usage improvements when migrating to Java 11 (on Jenkins, no less!). Recent Java runtimes provide a number of improvements to garbage collection, among other areas.
さらに、ここ数年Javaプラットフォームには大幅なランタイムの改良が加えられています。例えば、LinkedInではJava 11への移行でパフォーマンスが劇的に改善されました。そしてAdoptiumではJava 11に移行する際にメモリ使用量が大幅に改善されました(Jenkins上で、です!)。また、最近のJavaランタイムはガベージコレクションで多数の改善がありますし、それ以外にも多くの改善があるのです。
最後の理由は、最新のJavaを採用することでJenkinsそのものを魅力的なプロジェクトに保つため。
Finally, Jenkins takes pride in its strong development community, and staying on a current version of Java helps attract and retain developers.
最後に、Jenkinsは強力な開発コミュニティに誇りを持っており、最新バージョンのJavaを使い続けることは、そこへ開発者を惹きつけ続けるためでもあります。
Java 11は2018年にリリースされ、Java 17はその3年後の2021年にリリースされたJavaで、いずれもLTS(Long Term Support)対象のJavaです。
日本国内でもまだJava 8のユーザーは多いと思われますが、このJenkinsによるJavaバージョンアップは、Java 11もしくはJava 17へ移行を検討するうえでよい材料、あるいは上司や顧客へのよい言い訳になるのではないでしょうか。