受講料が最大70%OFF 受講料が最大70%OFF

Javaのアップデートしてますか?

Javaは、1995年にUNIXベンダーとして有名でだったサン・マイクロシステムズによって公開されました。マルチプラットフォームをコンセプトとしたプログラム言語として、発表当時は世界に大きなインパクトを与えました。

それから数十年、機能追加が繰り返し行われ、2021年1月時点での最新バージョンは「Java 15」となり、今での日々アップデートが行われ、当時に比べると非常に多くの機能が加えられ、さらに使いやすく改良されています。

しかし、Javaは時々ニュースになるほど、深刻な脆弱性(セキュリティホール)が見つかることがあります。

例えば、Javaのセキュリティーアップデートであるjava 8 update 131では、実に299件のセキュリティ問題が修正され、その中には、共通脆弱性評価システム(CVSS)のベーススコアで危険度が最大値の10.0とされた深刻な脆弱性も存在しました。

脆弱性を悪用されると、リモートからの攻撃によって Java が不正終了したり、任意のコードが実行され重要な顧客情報などが盗まれる恐れがあり、速やかに脆弱性(セキュリティホール)が修正されたパッチを適用する必要があります。

基本的には、深刻な脆弱性(セキュリティホール)が見つかると、速やかに修正が行われ、前述のjava 8 update 131のような形でセキュリティパッチが配信されます。

しかし、Javaを自動更新するように設定していないと、セキュリティパッチが自動で適用されず、脆弱性(セキュリティホール)を抱えたまま運用することとなり非常に危険です。

サポートが切れたJavaを使い続けると…

Javaの各バージョンにはサポート期限が定められており、サポートが切れたJavaのバージョンには、その後に深刻な不具合や脆弱性が見つかった場合でも、セキュリティパッチは基本的に公開されません。

サポートが切れたバージョンのJavaを使い続けると、脆弱性(セキュリティホール)を攻撃され重要なデータが盗まれるなど、非常に危険な状態でシステムを運用することになります。

昨今の社会事情からひとたび情報流出が発生すると、企業イメージに深刻なダメージを受け、顧客企業などとの今後の取引に影響を及ぼすばかりか、最悪の場合は訴訟に発展するケースもあります。

外部からのアクセスがなく、社内のネットワーク内からしかアクセスされないシステムであれば、コスト面などを考えて、サポートが切れたバージョンを使い続けるという判断もあるかもしれませんが、サポートが切れたバージョンは、不具合も修正されることもないので、基本的には新しいバージョンに更新することをお勧めします。

外部からアクセスがあるようなシステムでは、当然サポートが付いたバージョンを使うようにしましょう。

以下の表は、2021年1月時点のJavaのサポート状況です。

バージョン 公開 Premier Support Extended Support
7 2011年7月 2019年7月 2022年7月
8 2014年3月 2022年3月 2030年12月
9(非LTS) 2017年9月 2018年3月 なし
10(非LTS) 2018年3月 2018年9月 なし
11(LTS) 2018年9月 2023年9月 2026年9月
12(非LTS) 2019年3月 2019年9月 なし
13(非LTS) 2019年9月 2020年3月 なし
14(非LTS) 2020年3月 2020年9月 なし
15(非LTS) 2020年9月 2021年3月 なし

Java6以前のバージョンは表に載せていませんが、すでにサポートが切れています。
Java 7についてもサポート期限が迫ってきており、そろそろ移行を検討する時期に入ってきました。

Java9からはバージョンアップは半年ごとになり、およそ3年おきにJava11のようなLTS版(長期サポート)のJavaがリリースされるようなサイクルに変更されました。(次のLTS版はJava17となる予定)

非LTS版のJavaは、次のバージョンがリリースされるタイミングでサポートが切れるように設定されおり、そのためJava 14はサポートが切れているが、それより前にリリースされたLTS版のJava11のサポートはまだ当分続くような状態になります。

意外と簡単?Javaのバージョンアップ

サポートが切れたJavaを使い続けるのは危険であることは分かりました。

Javaバージョンアップは、ただ新しいバージョンのJavaをインストールするだけでなく、古いバージョンを使ったJavaアプリケーションのマイグレーションが必要になります。

マイグレーションは具体的に、廃止になったAPIを代わりとなる新しいAPIに書き換えたり、同じAPIでも動作に非互換がある箇所の修正を行います。

また、プログラムの修正が完了したら、システムの全体的な動作を確認したり、旧バージョンと新バージョンで比較確認を行い、問題を抽出し修正を行います。

上の内容を見ると、とても大変な作業でコストもかかりそうですが、実際はそうでないこともあります。

下位互換により実際の修正は少ない

Javaは、基本的に下位互換性があるように設計されています。

そのため、例えば Java 6から Java 7や8へアップデートする程度の少ないバージョンアップであれば、ほとんどソースコードを修正することなくマイグレーションできます。(もちろん新旧比較などのテストは必要です)

ポテパンダの一言メモ

少ないバージョンアップであればよいですが、Java 1.4 からJava 11など、一気にバージョンを上げるとなると、多くのソースコード修正が発生しテストの工数も膨れ上がります。

このように、コストを気にしてバージョンを延期してしまうと、そのツケを未来に払うことになり、その時の状況次第では膨大なコストに対する予算がつかず、システムが更新できず最悪の場合はシステムが動作しなくなる恐れがあります。

サポートが切れるタイミングで適度にバージョンを上げることも重要です。

各バージョンの互換性

最後に、Javaの各バージョンの互換性について紹介します。

【Java8の互換性 (7からの変更点) 】

Java 8は、Java 7の強い互換性があり、ほぼすべての既存プログラムが変更を加えずにJava 8で動作します。

ごく一部のコードは、変更が生じる可能性があるとOracle社は公表していますが、ほとんどのケースで変更は必要はないでしょう。

【Java9の互換性 (8からの変更点) 】

Java 9ではJava EEに由来する次のモジュールが非推奨になりました。(後のJava11で削除)

また、Java 9で追加されたモジュール機能により、⁠sun.securityなどのJDK内部クラスが、アプリケーションから参照できなくなりました。もし⁠sun.securityなどを参照しているコードが存在した場合、コンパイルエラーとなります。

さらに、java.awt.peerおよびjava.awt.dnd.peerパッケージはJava 9以降で削除されたため、コンパイルエラーとなります。

【Java11の互換性 (9からの変更点) 】

Java 11では、Java 9で非推奨となったJava EEに由来するモジュールが削除されしました。
また、標準からJAX-WSが削除され、続けて使用する場合はjaxws-api及びjavax.jws-apiを依存菅家のライブラリに追加する必要があります。

この記事では、Javaの各バージョンにおける大きな変更点のみ記載しましたが、細かいところでは様々な変更が行われています。

詳しくは、Oracle社公式の移行ガイドなどを参照してマイグレーションを行うようにしましょう。

【関連記事】
【Java】Java 2とは一体何か?いつから変わったのか?など歴史的背景についての解説。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。