この週末、大阪のお客様との打合せで、大阪に出張してきました。
久しぶりにお客様とお会いしたのですが、
ネットや電話などでのコミュニケーションでは得られないお客様の温度感など、
対面だからこそ得られるものって実に多いですね。
北海道とは様々な意味で空気の違う大阪。
食文化も大きく違います。
その大阪のグルメについて、私の好みと主観と独断と偏見「だけ」で大阪のグルメや魅力を語ろうと思ったのですが、
写真等の記録に残すのを忘れ、美味しいものを食べると同時に美味しいお酒も堪能してしまい、酔った勢いで全て忘れ去り、
記録にも記憶にも、何も残っておりません。。。
というわけで今回のブログの話題も完全に詰んでしまい、
このまま終わるのもあまりに酷いので、
今回は、私がスタッフとして運営をお手伝いしている「Java Do」に絡めて、
最近話題のJavaのリリースモデルについて、ちょっとお話してみようと思います。
1年ほど前まで、一般的に、
Javaでプログラムを開発するときに使うJDK(Java Development Kit)や、
Javaで作られたプログラムを動かすときに使うJRE(Java Runtime Environment)は、
・無償でOracle社のサイトからダウンロードできる
・セキュリティホールがあった場合も、Oracle社からセキュリティアップデートが提供される
・バージョンアップまでの期間が長い
※機能的なアップデートが遅いというデメリットの反面、長い期間、安定的な環境が提供されるメリットも。
というイメージだったかと思います。
また、JDKには、
・Oracle社がバイナリとして提供する「Oracle JDK」
・オープンソース版の実装である「OpenJDK」
の2種類があります。
これまで、Oracle JDKとOpenJDKでは、
バージョンが同じなら利用者側から見て『ほぼ』同じものですが、
技術的、性能的に、細かいところで違いもあったようです。
さて、従来無償で提供され、セキュリティアップデートも無償だったのは、
2014年9月にリリースされた、Oracle JDK 8までで、
いま、Javaのリリースモデルが大きく変わっています。
まず、現状、多くの環境で使われているOracle JDK 8ですが、
ということになります。
次に、
は移行期間ということで無償で提供されていますが、
リリース機関の重複は無く、JDK 10がリリースされてからは、9に脆弱性が見つかったとしても、9にはセキュリティアップデートは提供されません。
そして、その次の11(2018年9月リリース予定)から今後の方針が適用され、
ということになります。
一部噂では、OpenJDKでもLTS版が提供されるという話も聞いたことがありますが、
公式な発表としてはまだ出ていません。
Oracle JDK 8以降、ややこしくて書いてる自分もよくわからないので、図にしてみました。
この図の中で、
薄いグレーはOracle JDKを無償で使える期間、
赤はOracle JDKを有償サポート契約の上で使える期間、
青はOpenJDKを使える期間
となります。
これまで無償でOracle JDK 8を使ってきた方にとって、
来年(2019年)1月(個人利用では2020年12月)を過ぎると無償で使えなくなるので、その後は、
の中のどれかを選択必要がでてきます。
いま2018年6月ですから、商用利用ではあと半年ということで、あまり時間がありませんね。
さて、次に、Oracle JDKを使うためにOracle社と有償サポート契約を結ぶ際に、
具体的にいくら必要になるか、といいますと。。。
Oracle社の価格表によると、サーバでJDKを使う際のライセンスとして、「Java SE Advanced」を契約すると、
物理プロセッサのコアごとに、
が毎年必要になる、とのことです。
【参考】Oracle 価格表:
https://www.oracle.com/jp/corporate/pricing/price/index.html
【2018/06/25 追記 ここから】
2018/06/22にOracleからJava SEサブスクリプション価格について、情報が公開されました。
https://www.oracle.com/technetwork/java/javaseproducts/overview/javasesubscriptionfaq-4891443.html
これによると、
まだ日本オラクルによる、日本ユーザー向けの情報は公開されておらず、2018年7月に発表される見込みとのことですが、
Oracleが発表した価格に近い価格になる予定との報道もありました。
日本向け報道:
https://tech.nikkeibp.co.jp/atcl/nxt/news/18/01697/?n_cid=nbpnxt_twbn
今後1~2ヶ月程は、目が離せませんね。
新たな情報が出てきましたら、こちらのブログ記事に更に追記していこうと考えております。
【2018/06/25 追記 ここまで】
なお、Java SEのプロセッサのライセンスでは、「物理プロセッサのコアごとに」というのがポイントになります。
Oracle社によると、「物理サーバーに搭載している全プロセッサ(コア)が課金対象になる」ということです。
※私が直接Oracle社に問い合わせたところ、このような答えが返ってきました。
サーバを構築する際、VMWareやHyper-Vなどの仮想化を導入するケースも多いかと思います。
仮想サーバを作成する際には、論理的なプロセッサのコア数などを定義することになりますね。
このサーバでOracle JDKを使う場合、仮想サーバの論理的なプロセッサ数の定義には関係なく、物理サーバに搭載されているプロセッサ数に課金される、ということなんです。
例えば、
とすると、物理プロセッサが10コアあるため、10コア分のプロセッサライセンスが必要になります。
ただ、その物理サーバの中で、仮想サーバを1個作成しようと、10個作成しようと、ライセンスの費用は変わらない、ということになりますね。
【参考】Oracle FAQ サーバー仮想化ソフトウェア( Oracle VM 、VMware、Hyper-Vなど)を使用した場合のライセンスカウントはどのようになりますか?:
https://faq.oracle.co.jp/app/answers/detail/a_id/2673
では、クラウドにサーバを構築した場合はどうなるか、といいますと、
そちらも、あくまでも、物理プロセッサ数で金額が決まるということです。
【参考】Oracle FAQ 他社のクラウド・サービスに、ライセンス持ち込み(BYOL: Bring Your Own License)でオラクル製品を使う場合、必要なライセンス数はどうなりますか?:
https://faq.oracle.co.jp/app/answers/detail/a_id/2706
さくらのクラウド、AWSなどのクラウドサーバを利用する際、論理的なプロセッサ数を決定して契約しますが、
そのような環境上でOracle JDKを使うという選択肢を取りたい場合、どうすればいいんでしょうかね。。。
そもそも、物理サーバ上にプロセッサのコアがいくつ搭載されているかを知ることはできないですし。。。
今後、
クラウド環境上でのライセンス形態について新たな情報が出てくるのか、
クラウドベンダー各社からOracle JDKのプロセッサライセンス付きのオプションが出てくるのか、
OpenJDKでもLTS提供が始まるのか、
何らかの動きがあれば、クラウドサーバ上でのJavaについても選択の余地が出てくるかもしれませんね。
JDK 11のリリースで新しいリリースモデルが正式に動き始まるまでの3ヶ月、
新しい情報を注視していきたいと思います。
というわけで、大阪訪問の余韻に浸りながら、まとめてみました。
やっぱり大阪が大好きだっちゃ。
M.clacla