新春特別企画

2019年のJava

この記事を読むのに必要な時間:およそ 4 分

今後のJavaの成長と仲良く付き合う

時代の波にあったリリースモデルのアップデート

2017年Java SE 9がリリースされて以降,Java 10,11が半年に1度リリースされるようにリリースモデルが変更されました。このリリースモデルの変更に関して,グローバルのJavaエンジニアはとても好意的に受け取っています。

今までJavaは約3年に1度大きなメジャーバージョンアップを行っていました。しかし,今の時代,IT業界における3年という時間はあまりにも長すぎます。今から3年前,2016年のIT業界では,Dockerなどのコンテナ技術がトレンドになりました。このころは,まだKubernetesも主流になっていないころです。しかしこのたった3年で,IT業界のトレンドや情勢は大きく変わりました。

このような変化の激しいIT業界において,3年ごとにしかアップデートができないプログラミング言語は致命的です。3年前に策定した新しい言語仕様が,3年後ようやく使えるようになったとき,時代はさらに先に進みプログラミング言語としては時代遅れになっているでしょう。

時代の変化やニーズに対して迅速に対応するためには,Javaもまた高速な進化が必要なのです。実際,Java SE 8以降のリリースにおいて,言語仕様での改良はもちろんのこと,JavaアプリケーションをDockerなどのコンテナ環境で効率良く動作させるための改善がJava 9以降でいくつか入っています。

Java開発者もまた,この世界を取り巻くIT業界の現状を認識し,必要に応じてJavaの進化に追随し,可能な限り新しいJavaの最新動向をキャッチアップしていただければ幸いです。一度にすべてをキャッチアップするのが大変な場合もあるでしょう。その場合は,日本各地に存在するJavaコミュニティの勉強会に参加するなど,最新情報を徐々にキャッチアップして新しい年をお過ごしいただくのがよいかと思います。

Java is Still Free !!

2018年のJavaを振り返る

昨年一部メディアなどを通じて「Javaが有償化される」⁠Javaから他のプログラミング言語に移行をしなければならない」といった記事や情報が流れ,一部開発者,また製品選定者に動揺が走りました。しかし,最新動向のJavaを正しくチェックしているエンジニアは,すぐにそれらの情報が大きな誤解であったことに気付いたかと思います。

過去の経緯を知る者として申し上げるならば,Javaのサポート・サービスの提供は,決してOracle社に始まったわけではありません。Sun Microsystems時代から「Java for Business」として,Javaの商用サポートを提供していました。

実際のJavaサポートでは,障害対応(コア・ダンプ解析など)の他,Java VMのQ&A対応,さらには原因を特定するためのデバッグ情報付きの特別なJava VMの提供や,特定の顧客のもとで発生している問題を解決するためだけにビルドされた専用のJRE(一時的な利用)を提供することもありました。

また,PublicでEOLを迎えたJDKに対して,サポート期間を延長してバグ修正対応,Q&A対応なども行っていました。今までも,こうしたサポートを受けてこられた企業ユーザにとって今回の変更は,とくに今までと変わらない状況かと思います。こうした企業ユーザは,今後もLong Term Support(LTS)を提供するタイミングJava 11,17,23(3年ごと,バージョン番号で6飛ばし)でのアップグレードをご検討ください。

これからのアップデートに対するユーザの心構え

それでは,今までサポートを受けてこなかったJavaの利用者は,今後どうすれば良いのかという点ですが,次のようにいくつかの選択肢があるかと思います。

  1. 新しいリリースモデルに併せて,半年ごとにアップデートを実施
  2. 通常は,LTS 版を利用しインシデントが発生した時点で対応を検討
  3. サービスに影響のない範囲で自己責任において長期利用
①新しいリリースモデルに併せて,半年ごとのアップデートを実施

半年ごとのアップデートを行っていくためには,事前に次のような内容を準備しておくことでリスクを下げることができるでしょう。

●OpenJDKの動向ウォッチ

  • 正式リリースのスケジュールの把握
  • アーリー・アクセスビルドの入手とテスト
  • 新機能の確認,削除パッケージの有無などの確認

●テストコードの整備

●継続的インテグレーション(ビルドテスト)

 

まず,第一にOpenJDKの動向を常にチェックしましょう。最も大事なのは,OpenJDKのサイトで公開される正式リリースの日程を把握することです。この日程を把握することで,自身のアプリケーションの更新スケジュールを立てられるようになります。

次に,アーリーアクセス版のバイナリを入手し事前に検証をしましょう。仮に正式リリースまで検証を待つと,その時点で新たな課題を発見する可能性があります。これにより急な想定外の対応をしなければならず,結果として予定していたよりも導入までに時間を要する可能性があります。アーリーアクセス版で検証しておくことで,こうした課題を早く発見できるでしょう。

また,アーリーアクセス版を試していただくのと同様に,JDK Enhancement Proposal(JEP)を確認しておくこともとても重要です。これにより,新機能追加や変更に対する情報をいち早く入手でき,必要な変更箇所などをあらかじめ把握することが可能になります。

たとえば,Java SE 11より一部のパッケージ(JAX-WS,JAXB,CORBAなど)が削除されましたが,このような場合も,実装しているアプリケーション内で使用しているか,もしくは利用しているサードパーティ製のライブラリで利用されていないかを確認し,それに応じて事前に対応を施すこともできます。

これ以外にも,新機能の追加,さらにはJava VMやGCに対する変更もJEPで定義・記載されていますので,とても重要なドキュメントになります。

著者プロフィール

寺田佳央(てらだよしお)

Microsoft Corporation

シニア・クラウド・デベロッパー・アドボケイト

 

2001年サン・マイクロシステムズ株式会社に入社し,GlassFishエバンジェリストとして活動。

2010年,OracleのSun買収後,日本オラクル株式会社でJavaエバンジェリストとして活動。Javaの最新技術情報の提供や,Java コミュニティ活動の活性化を,日本Javaユーザ・グループ(JJUG)とともに行ってきた。

2015年7月,日本マイクロソフト株式会社に移籍し,移籍後もなお,Javaエバンジェリストとして,MicrosoftプラットフォームにおけるJavaの利用促進・啓蒙活動を実施中。

2018年7月より,Microsoft Corporationで日本人初のクラウド・デベロッパー・アドボケイトとして活動を開始。

2016年7月,日本人で2人目となるJava Championに就任。JJUG幹事の一員でもある。

Blog:https://yoshio3.com

GitHub:yoshioterada

Facebook:yoshio.terada

Twitter:@yoshioterada