LoginSignup
0
0

More than 5 years have passed since last update.

WebサービスのJava11対応をしてみた話

Posted at

はじめに

私が開発と運用保守をしているWebサービスがJava8で動作していたためJava11対応をしてみた際の備忘です。

経緯

Webサービスが無事リリースされ安心し始めた、2018年2月頃に以下発表を読んで愕然としました。
リリースしたWebサービスの環境の寿命が近づいていることに。
春頃からJava界隈の様子見と情報収集をしながら、夏頃から対応作業を始めました。

対応前の環境

1年程度前から稼働しているサービスということもあり、当時の開発環境として以下で該当サービスが構成されていました。
各ツールはタイミングを見ながら更新していたため、メジャーバージョン以外は比較的新しめな状態でした。

  • アプリケーション
    • Java : OpenJDK8
    • Build Tool : Gradle 4.8
    • Application Framework : Spring Boot 1.5.13.RELEASE
    • Test Framework : JUnit 4.12
  • CI/CD
    • Jenkins 2.120.x
  • コード解析
    • SonarQube 6.4(SonarJavaPlugin 5.0利用)

対応後の環境

2018年11月中旬頃の各ツールの最新版、または安定版で構成しました。

  • アプリケーション
    • Java : OpenJDK11(11.0.1)
    • Build Tool : Gradle 5.0RC1
    • Application Framework : Spring Boot 2.1.0.RELEASE
    • Test Framework : JUnit 5.3.1
  • CI/CD
    • Jenkins 2.138.2
  • コード解析
    • SonarQube 7.1(SonarJavaPlugin 5.9利用)

対応の流れ

概ね以下のような流れでJava11対応を実施しました。

  • 2018年2月 Javaのサポートライフサイクルの変更に愕然とする(暫く見なかったことにしていました)
  • 2018年7月 OpenJDK11にアップデートすることを決意
  • 2018年8月 OpenJDK10、Spring Boot 2.0にアップデートをし様子見
  • 2018年9月 OpenJDK11 EarlyRelease、Spring Boot 2.1.0.Milestoneにアップデートし様子見
  • 2018年10月 OpenJDK11 GA、Spring Boot 2.1.0.RELEASEにアップデートし本格対応
  • 2018年11月初旬 たくさんテストする ※一番大変な時期。この時期にJUnit4からJUnit5にテストコードを変更
  • 2018年11月中旬 商用サービス環境にリリース

2018年10月のツール正式リリースからはBug対応やテストコード変更でバタつきましたが、事前に様子見でアップデートをしていたため、大きな問題は発生しませんでした。
正式リリースから実質1ヶ月弱の期間で商用サービスとしてリリースできたのは良かったかなと。

残課題

急ぎ対応したこともあり、以下は課題として残りましたが、12月以降順次対応しています。

  • Java11対応のGradle5.0のリリース遅れ(当初11月初旬の見通しだった)に伴い、RC版を利用した
  • JUnit5としてのテストコード最適化が不足
  • JDK9以降に採用された新機能や便利機能に適応できなかった

感想

バタつきましたが無事、2019年1月のJDK8のサポート終了に間に合ったのと、比較的最新のツールに移行できたのは良かったなと。
これで2019年3月のJava12リリースまでは延命できたので次はJava12対応の準備をしていこうかなと考えています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0