有料版
Oracle Java 11 Releasedが、リリースされました。
https://www.infoq.com/news/2018/09/java11-releasedこれまで無料で使えていたものが有料化となりました。
Javaで生活を営んでいたすべてのエンジニアは、どうすればよいのか?
今から3年前、ORACLEが、Oracle JDKの有料化を発表しました。
ところが、再び、無償提供をすると発表
今回のIT小僧の時事放談では、
Java SE 11は無料じゃないよ 先が見えてきたJavaにさようならを言おう
と題して
オラクル社のJava有料化における騒動と対策について
いつものように小難しい話をわかりやすく解決しながらブログにまとめました。
最後まで読んでいただけると幸いです。
目次
最新ニュース
Oracle Java の脆弱性対策について(CVE-2023-21835等) 2023年01月18日
Oracle Java の脆弱性対策について(CVE-2023-21835等)
最終更新日:2023年01月18日
注釈:追記すべき情報がある場合には、その都度このページを更新する予定です。MyJVNバージョンチェッカで最新バージョンのソフトウェアをチェックする
概要
Oracle 社から Java SE に関する脆弱性が公表されています。同社からは攻撃された場合の影響が大きい脆弱性であることがアナウンスされているため、できるだけ早急に修正プログラムを適用してください。
対象
サポートされている以下の Oracle 製品が対象です。Oracle Java SE 19.0.1
Oracle Java SE 17.0.5
Oracle Java SE 11.0.17
Oracle Java SE 8 Update 351-perf
Oracle Java SE 8 Update 351
「やばすぎる」 Javaライブラリ「Log4j」にゼロデイ脆弱性 2021年12月10日
Javaで使われるログ出力ライブラリ「Apache Log4j」に悪意のある文字列を記録させることで、任意のリモートコードを実行できるようになる(Remote Code Execution, RCE)、ゼロデイ脆弱性があることが12月10日に分かった。広範囲に影響が及ぶ可能性があることから、ITエンジニアを中心に議論の的になっている。
例えばMinecraftでは、チャットに悪意のある文字列を書き込んだりすることでログに記録させるだけで任意のリモートコードを実行できてしまうことが報告されている。すでに、Minecraftの一部サーバでは閉鎖やパッチの適用などの対応を進めている。
「やばすぎる」 Javaライブラリ「Log4j」にゼロデイ脆弱性、任意のリモートコードを実行可能 iCloudやSteam、Minecraftなど広範囲のJava製品に影響か
トレンドマイクロ社からも注意勧告がでています。
2021年12月9日、人気のあるApache Log4j 2 ログライブラリの複数のバージョンに影響を与える新しい重大なゼロデイ脆弱性が公開されました。これは、悪用された場合、影響を受けるインストールで特定の文字列をログに記録することにより、リモートコード実行(RCE)を引き起こす可能性があります。
この特定の脆弱性にはCVE-2021-44228が割り当てられており、さまざまなブログやレポートで一般的に「Log4Shell」と呼ばれています。影響を受けると言われているライブラリのバージョンは、バージョン2.0-beta9から2.14.1です。
日本語訳:Google
SECURITY ALERT: Apache Log4j "Log4Shell" Remote Code Execution 0-Day Vulnerability (CVE-2021-44228)
2021年9月14日 最新版のOracle JDK 17が無料で利用可能に(Itmedia)
米Oracleは、同社が提供している企業向けのJavaディストリビューションであるOracle JDKのライセンスを変更し、無料で本番環境などでの利用を可能にしました。 同社が9月14日付で公開したブログ「Introducing the Free Java License 」で、次のように説明しています(関連するプレスリリース「Oracle Releases Java 17」)。
- Oracle JDKを無料で提供し、四半期ごとのセキュリティアップデートも提供する。
- 新ライセンス「Oracle No-Fee Terms and Conditions(NFTC)」は、商用利用や本番環境での利用を含む全てのユーザーに対して無料での利用を許可する。
- Oracle JDK 17から、この無料のリリースとアップデートの提供を開始する。これは次の長期サポート(LTS:Long Term Support)がリリースされてから1年が経過するまで続く。
最新版のOracle JDK 17が無料で利用可能に
Javaは半年ごとにフィーチャーリリースと呼ばれるメジャーアップデートが行われますが、このフィーチャーリリースのうち、3年に一度のリリースが長期サポート版(LTS版)として提供されます。
このLTS版は、少なくとも3年以上にわたりアップデートやセキュリティパッチが提供されます。Javaのバージョンを一定期間以上固定して開発や運用を行いたい企業ユーザー向けのリリースです。
https://blogs.oracle.com/java/post/free-java-license
前回のLTS版は2018年9月に登場したJava 11であり、昨日リリースされたJava 17が最新のLTS版となります。
今回の発表により、このJava 17に対応したOracle JDK 17が無料で提供されることになります。
そして少なくとも次のLTS版が登場して1年が経過するまで、Oracle JDK 17に対して本番環境などでの利用許可とオラクルからのセキュリティパッチ提供などが無料で受けられることになります。
次のLTS版は、当初の予定では3年後の2024年9月に登場となっていますが、オラクルは現在、この3年ごとのLTSのサイクルを2年ごとにする提案を行っています
AWSがAmazon Correttoを、マイクロソフトがMicrosoft Build of OpenJDKをそれぞれ無料でリリースしたために慌てて追いかけたとう記事の内容もありますが、今更? という感じがします。
以下、2年前の記事です。
Javaのおさらい
Java SEとかJava EEとかについて簡単に説明します。
Javaで抑えておいてほしい4つのこと
- Javaとはプログラミング言語の1つ
- 人気のある言語1位
- 多くの現場で使われている
- 汎用的でOSに依存しないプラットフォームの提供
これだけを最初に抑えておいてください。
特徴
いろいろなところ(WindowsとかMacOSとかAndroidとかiPhoneとかサーバ)とかで動く環境(プラットフォーム)が用意されているので原則Javaで書いたプログラムがどこでも動くぞ。
ということです。
正確に言うと「どこでも動く」ではなく「比較的簡単にどこでも動くようになる」というプログラム言語です。
Windowsで開発したものが、MacintoshでもJavaの環境があれば動くと思ってください。
Minecraft(マインクラフト)というゲームをご存知ですか?
あのゲーム Javaで書かれているのです。
Java SE
正式名は、
Java Platform, Standard Edition(Java SE)
デスクトップ(パソコン)やサーバーでJavaアプリケーションを開発するための基本的な機能が詰まったものです。
プログラムの開発には、必須です。
Java EE
正式名は、
Java Platform, Enterprise Edition(Java EE)
企業で使うサーバー等の機能が詰まったものです。
Webの開発で使いうことが多いのでJava SEと合わせ技的に使います。
JRE
正式名は、
Java Runtime Environment(JRE)
あなたのパソコンにインストールされていると思います。
これがないとJavaが動きません。
ここは、無料なのでJavaでつくられたアプリケーションを使うのは、お金がかからないので安心してください。
Java SEを使うならおカネを取るぞ!(オラクル社)
Javaで開発するときに絶対的に必須なJava SEをオラクル社が、2018年9月のバージョンからおカネをいただきます。
と発表しました。
これまで Java全般は、基本無料でした。
Javaの生まれ故郷がサン・マイクロシステムズという会社でオープン(みんなに開放)で発表していたので 無料で使えるという文化が根づいていました。
その方針によって Javaは、世界中のシステムをつくるときに活用され、特にインターネットと相性が良かったので爆発的に世界中で使われました。
世界に貢献する言語と環境を生み出してきた サン・マイクロシステムズ社は、UNIXという世界で一人勝ち状態だったのですが、経営が怪しくなり
2009年4月20日にオラクル社に買収されてしまいました。
もちろん、その中には、Javaも含まれています。
そこから約9年間、オラクル社は、Javaのサポートを無償で行ってきました。
Javaの環境は、インターネットで使われることが多く、ハッキングも多いわけで、次から次へとバグやセキュリティの問題が出てきます。
オラクル社は、それに対して無償で対応してきたのです。
ところが、2017年、オラクル社は、Java SE(開発には必須です)に対して
「2018年の9月に出てくるバージョン(Java SE 11)からおカネをいただきます。」
と発表しました。
世界中のJavaで開発されてきたシステムが一斉に悲鳴を挙げます。
おいおい!カネ払うのかよ ヽ(`Д´)ノプンプン
というわけです 。
面倒な説明をわかりやすく
バグや、セキュリティの問題が見つかるたびにオラクル社は、修正をしてきました。
今までは、それも無料で使えたのですが、今度からおカネが必要になります。
では、バージョンの説明をします。
Java SE XのXが、バージョンを表しています。
Java SE 8 2019年1月で無償サポート終了
Java SE 9 2018年3月無償サポート終了しています。
Java SE 10 2018年9月でサポート終了
Java SEで無償でサポートを受けられるのは、Java SE 8のみとなっています。
なんか変ですね、Java SE 8という2014年3月18日(米国時間)に発表されたものが、一番長いサポートって
わざとややこしくして、混乱させているとしか思えません。
そして、オラクル社からJava SE 10という有償版が登場します。
この Java SE 11は、3年間のバグやセキュリティの修正をしますよという保証がついています。
これを Long Time Support(LTSと略されています)と言います。
今後、オラクル社のJava SE(開発環境)を使いたければ、おカネが必要になってくるのです。
費用
Oracle Java SEには、4つサポートが組まれています。
- Java SE Advanced Desktop
- Java SE Advanced
- Java SE Suite
- Java SE Subscription
Javaが主に使用されているのは、サーバーと呼ばれている環境なので Java SE Advanced が多いと思われます。
このお値段
- ライセンス費用=1物理プロセッサーあたり
年間60万円。 - 保守費用=1物理プロセッサーあたり
年間13万2000円。
1物理プロセッサーというのは、CPUの数です。
通常、ネットサービスを提供している場合、1物理プロセッサーというのは、ありえないのでかなりの金額になるのは、間違いありません。
また、Java SE Subscriptionという月々支払うパターンも追加されています。
詳しくは、オラクル社の価格表に記載されています。
https://www.oracle.com/assets/e-pl101005-101005a-n-176288-ja.pdf
もし、この記事を読んでいる人で
「うちのサービスは、大常備なんだろうか?」
「いくらオラクル社に支払えばいいのか?」
と思っている担当者や経営者の皆さん。
詳しくは、自社のシステム担当者か開発を担当しているIT企業と相談したほうが手っ取り早いです。
空気や水と同じだったJavaは、無料じゃなくなる
無料で使えるシステムの開発環境は、たくさんあります。
これを「オープンソース」と言います。
しかし、空気や水がいきなり「カネとるぞ」と言ってきたらどうしますか?
Javaは、空気や水と同じように無料で使ってきたわけですが、そうもいかなくなりました。
OracleのJavaを使っていればよいという 安心は、おカネを払うしかなくなりました。
OpenJDKという逃げ道もあるけど
オラクル社が、提供している Java SE(Oracle Java SE)とは、別に無償版の開発環境を提供している
OpenJDK (Open Java Development Kit) という団体のようなものがあります。
http://openjdk.java.net/
おっと JDKという言葉が出てきたので解説します。
JDKというのは、Java SE Development Kitと言ってJavaを開発する上で必要なものです。
これがあれば、オラクル社の Javaを使わなくても大丈夫!
というはずですが。。。
OpenJDKは、サポートが、半年単位
半年たったら、次のバージョン、そのバージョンのサポートが半年
というように
Long Time Support(LTS)が今の所、発表されていません。
つまり、バグやセキュリティを最新の状態で対応するには、半年ごとにOpenJDKの入れ替えが必要となるのです。
そんな、理不尽な・・・ 言われても Java自体は、オラクル社のものなので
そういう取り決めと思ってください。
正確に言うとオラクル社のJava SEも半年単位でバージョンアップが用意されるスケジュールになっていますが、一つのバージョンに対して Long Time Support(LTS)を有償で対応しますよ。
という仕組みです。
つまりOpenJDKには、Long Time Support(LTS)がないのでオラクル社のバージョンリリースにあわせなければならないのです。
大人の事情というやつですか・・・
Long Time Support(LTS)のOpenJDKも登場してきました。
2019年追記
システムをそれらに切り替えることができれば、問題は解決ですが、いづれにしろシステム移行には、費用はかかります。
Javaが多くのシステムで採用されてきたのは、Oracleという後ろ盾があったからです。
OracleのJavaという共通プラットフォームで安心して開発してきたものが、有料になりました。
「じゃ、おカネを払いたくないのでオープン系のJavaに移行すればいい」
企業として簡単な話ではありません。
ただし、IBMのようなベンダーならば、おまかせできると思います。
だからベンダーは、うちのJavaを使ってくださいね!とアピールしてきたわけです。
無償なら半年バージョンアップでもええじゃないの?
いいえ! よくありません。
バージョンアップするということは、試験をしなければならないのです。
半年ごとにJava関係の試験をやり直すということは、どれだけコストが掛かるかわかりません。
個人のシステムなら多少問題が起きても 自己責任で済みますが、
企業、特に金融系など莫大なおカネがやり取りされるシステムでは、自己責任ではすみません。
となると事実上、オラクル社にサポート料を払い続けるしか道はないのです。
Androidは?
Javaが使われているAndroidは、どうなの?
ご安心ください。
Androidの開発元のGoogleは、OpenJDKに移行済みです。
さらにこれからの開発は、JavaではなくKotlin(コトリン)という言語に移行してゆくようです。
また、サーバー関連もJavaからの移行がすすみつつあります。
そして、今、もっともおカネを取れる開発言語は、Go(ゴー)というレポートもあります。
Go(ゴー)は、Googleがが設計したプログラム言語です。
[amazonjs asin="4873117526" locale="JP" title="Go言語によるWebアプリケーション開発"]
Oracle社の狙い
企業が採用するかどうかは、単に費用がかかる、かからないだけでは決定されません。
大金を投じて出来上がったシステムが、急に有料といわれても困るわけです。
例えば、銀行のようなシステムをOracleのJavaで開発したとしましょう。
「Oracleからカネを取られるから、おカネのかからないJavaに切り替えましょう。」
と言ってもその費用は、莫大なものになります。
Oracle社が狙っているところは、そういうところです。
ですから、OpenJDKとの棲み分けができています。
今後、銀行などの巨大プロジェクトでJavaでの開発は、エンジニアとして悩むことでしょう。
Oracle社が、値上げと言ったら逆らえないからです。
※データベースのサポート料金の値上げを考えたら、わかりますよ。
これらのことを考えると企業がシステムを構築するときにどうするか?
ということです。
Javaのコミュニティが中心になって進めるのは、全然OKなんですが、Oracleという金看板のもと無料で使えたものがなくなる意味はかなり大きい。
個人や中小企業での開発ならばJavaは、その資産から考えても有望でしょう。
しかし、企業は、コスト優先に考えるので、そんな面倒ならば、「できあいのもの」に踏み切るところが多いはず。
そうなると、ERP(Enterprise Resources Planning)に切り替える企業が増えてくることが予想されます。
こうなると 多くのSIerや、下請け企業に打撃が来ることになります。
そうなると、もうJavaがどうとか言っている場合ではなくなる可能性もあるのです。
Javaプログラマーは、違う言語を習得せよ
Javaは、無くなるとは思いませんが、縮小してゆくことは間違いないと思われます。
なによりJavaのプログラマーが多すぎます。
Javaのスペシャリストとしてやってきた人は、Javaだけでやっていけるほど IT業界は、甘い時代ではありません。
こんなこと書くと、Javaスペシャリストの人からお叱りを受けるかも知れませんが、いつまでも同じ環境にしがみついていると危険です。
ここで次の一手を考えないとエンジニアとして生き延びることはできません。
どのプログラム言語が成長するかは、以前ブログに書いてあるので後でそちらを読んでみてください。
-
Javaは、儲からない言語になってしまったのか? TECH ACADEMY(テックアカデミー)で高収入の言語を習得せよ
人工衛星のプログラム開発から銀行のシステム開発まで この世にあるデジタル機器のほとんど全てとインターネットの世界のほとんど全ては、プログラムで書かれています。 あなたが、今このブログをみている、iPh ...
今は、やはりPythonとなるのか?
Python
Python(パイソン)は、AIで有名になったプログラム言語ですが、サーバ側の開発言語としても有望です。
コードがシンプルで扱いやすく設計されており、さまざまなプログラムを分かりやすく、少ないコード行数で書けるといった特徴を持っています。
AIだけではなく、多方面に使われることは必須、ギャラの面でも急上昇中。
固執していたのでは明日はない
一つの言語や環境に固執することは、自分の幅を狭くします。
今は、Javaの開発が多くても いつ、なくなってしまうかも知れません。
Javaは、これまでの資産が多いので簡単にはなくならないと思うけど、柔軟な感覚を養うべきです。
どの言語が優れているとか、優秀だとか という思想は危険です。
[amazonjs asin="4309253954" locale="JP" title="柔軟的思考 困難を乗り越える独創的な脳"]
まとめ
そして、オラクル社が、手にしているもう一つの大きな「オープンソース」
MySQLというデータベースも今は、無料ですが、いつ
「明日からカネを取るぞ」
と言ってくるかも知れません。
ITの世界は、多数を掌握したものだけが、勝利者となる世界で、掌握したものに逆らえない状況が発生するのです。
その世界でエンジニアとして生きてゆくためには、自己投資と研鑽を積むしかありません。
Javaというぬるま湯に使っているとJavaの衰退とともに消えてしまいます。
先を見通す能力がエンジニアとして成功する鍵となるでしょう。
Javaに関しては、すでに世界中で多くのシステムが可動しているので「今すぐなくなる」わけではないでしょう。
保守作業もあるのでJavaプログラマーの需要はあると思います。
しかし、カネを儲けようと思うのなら、複数のシステム、プラットフォームに精通する必要はあります。
スポンサーリンク
あとがき
以前、Javaに関してのブロクを書いたのですが、よりわかりやすく書いてみました。
お時間があればこちらも読んで見てください。
-
オラクル社がJavaを有料化 それって既定路線? Javaは、使われなくなるのでしょうか?
Javaという言語(環境)を知っていますか? Java このお茶(本当はCoffeeだと言われてますが)と同じ名前がついているコンピュータ言語(環境も含む)は、スマートフォン(主にAndroid)の開 ...
Java is Still Free
Java is Still Free, but it costs money to keep quality.
「Javaは、まだ無料ですが、品質を維持するにはコスト=おカネが、かかります。」
開発するには、無料ですが、商用化するにはカネがかかるんですよ!
世界のJavaのトップクラスが執筆したJava is Still Freeというドキュメントを読んでください。
https://docs.google.com/document/d/1nFGazvrCvHMZJgFstlbzoHjpAVwv5DEdnaBr_5pKuHo/edit