Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Java Do #osc19do

Java Do #osc19do

Java有償化(していない件)について

オープンソースカンファレンス2019 北海道
https://www.ospn.jp/osc2019-do/modules/eguide/event.php?eid=21

先行して公開されている素晴らしい資料を使わせていただきました。
引用元・参考先の方々にこの場を借りて感謝を申し上げます。

Hiroto YAMAKAWA

June 01, 2019
Tweet

More Decks by Hiroto YAMAKAWA

Other Decks in Programming

Transcript

  1. 公立千歳科学技術大学 情報システム工学科 専任講師 R&D: Experimental Development of ICT (ex:City-Bus Tacking System)

    
 Computer in Education, Programming and Programmer's Learning 
 
 Community: Hiroto Yamakawa, @gishi_yama 2
  2. 運用現場は半年ごとの更新なんて無理!
 数年に安全な移行期間を人質にした実質有償化だ! • Javaのリリースサイクルを半年に早めて、他の言語の進化ペースに追いつく
 (従来:数年に一度) • 半年が厳しい環境むけに、3年ごとにLTS:Long Team Support 版もリリースする

    • (発表当時は) LTS版はオラクルが有償で提供し、
 半年版は Open JDK コミュニティが無償で提供する という情報 Q. Javaは有償化した? 5 A. いいえ、有償化していません。 うわさのはじまり å
  3. Java (JDK) のリリースサイクル・LTSタイミングの変更 8 伊藤敬(2019), JDK: 新しいリリースモデル解説 (ver. 2.2) @

    札幌 - 20190209 より引用
 https://www.slideshare.net/oracle4engineer/jdk-ver-22-20190209
  4. 進化や改善についていくのは楽しい&ついていけると便利・楽に 10 Jshell (9), Unmodi ableList(9), var (10), String:lines(11)
 改行文字列リテラル(13)

    や、 データ用クラス定義(?) なども検討されている ※もちろん、後方互換性の減少や依存ライブラリの追随への検証は必要になる
   (例:Java11でのJAXB削除、Lombok等の影響を受けやすいライブラリの動作)
  5. Q. じゃあJavaはどうなったの? A2. JDKが Linux の Distribution みたいになりました Linuxも 有償サポート製品と無償のコミュニティ(OSS)版がある


    Distribution の間で機能やパッケージングの違いがある
 短期のマイナー更新、長期のメジャー更新、サポート期限がある ⇒ OSと同じように、Javaも各自の環境・都合にあわせて選択・乗換をしていく Copyright © 2018, Oracle and/or its affiliates. All rights reserved. | 4J×çùĈüĘýĒĒĘõ×; • Update ProjectÂUpdate Releaseæ; • Oracle JDKÓ,ÖeÈÎĒĒĘõØÈѾվ • íđïēÂçùĈüĘýĒĒĘõæ~Y • 1Ġ%ĒĒĘõĚĞĜĠĜĢĜĞĝFě • åËÑJDK×ăðĆèùïõÞ!M • ÎÛÖOcwÞÈÏßÐÎâ çùĈüĘýĒĒĘõ×!HØ, etc... (オープンソース)
  6. バグへの対処 • OpenJDK Vulnerability Group の主導で作られた
 共同パッチに各ディストリビューションベンダが
 アクセスできる(ようになる) • いつバックポートするかはベンダの都合(

    or 姿勢)で変わる
 
 機能・ライブラリ等 • OpenJDKのソースに付随する部分以外は、
 ベンダ都合で変わる
 例) JavaFx の同梱
 インストーラーの有無(特にWindows)
    TCK (Technology Compatibility Kit) 合否 ディストリビューションとそのベンダでどこまで状態は異なるか? 12 参考: Logico (2019), 「OpenJDKベースのJDKでも、ディストリビュータごとに相違が出てくるんじゃないの」
      という疑問に関するお話。: (Don’t Fear) the Java https://logico-jp.io/2019/05/29/dont-fear-the-java/ https://twitter.com/hiqinternat/status/1132456027956269056
  7. Q. どの JDK Distribution を選べばいいの? A. デファクトスタンダードは(まだ)なく、
 Javaエキスパートの間でも意見は割れてます • 理想的には

    Oracle Open JDK(半年更新) に常について行く • 難しい場合は、運用環境での利用が有償・無償のLTSを検討する • OSベンダの独自LTSが利用できる場合もある(Ex: Redhat) • (前述)機能や同梱ライブラリ、パッチのバックポート都合(姿勢)の違いは要検討 • 開発環境は運用環境に合わせる(開発環境での利用は無償の場合がほとんど) ⇒ 自分たちの環境都合に最適なものを検討して選択するしかない
  8. Q. 金銭的コストは変わるの? A. 現場の状況によって変わることがあります 運用や契約都合などでチェック • 契約・運用上、JDK(JRE)にトラブルサポートやTCK合格が必須なのか • 利用するOSやクラウドベンダが提供・推奨されている場合があるか •

    Java 7 の環境が必要なのか • 英語・日本語のどちらのサポートが必要なのか • 日本代理店があるか ⇒ オラクルのライセンスは、リリースモデル変更にあわせ金額が再設定された
   LTS提供ベンダによっても異なる金額が設定がされている
  9. 18 伊藤敬(2019), JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209

    より引用
 https://www.slideshare.net/oracle4engineer/jdk-ver-22-20190209 掲載時点のものであり、詳細・実際は各ベンダへ!
  10. 1. 新しいリリースモデルに併せて,半年ごとにアップデートを実施
 ⇒テストコードや継続的インテグレーション(CI)で、影響を確認・変更しやすい
   土台や環境を作る
 ⇒ ソースコードに手を加えず、JDKだけを更新する
 ⇒ ソースコードを新しいJDKの仕様に併せて変更し、JDKを更新する 2.

    通常は,LTS 版を利用しインシデントが発生した時点で対応を検討
 ⇒ LTSに追従する方針にして、3年(問題発生時)ごとに切り替え作業を狙う
 ⇒ 大きなジャンプになるので(これまでの様に)更新コストがかかる 3. サービスに影響のない範囲で自己責任において長期利用
 ⇒ ? かなり限定的な塩漬け環境...? 調査検証して、方向性を定める 21 寺田佳央(2019) 技術評論社, 2019年のJava より引用・一部改変・再構成
 https://gihyo.jp/dev/column/newyear/2019/java?page=2
  11. Javaは有償化しておらず、付き合い方が変わる 1. Javaは有償化したのではなく、Javaの進化と現場の都合を両立させるために
 JDKのディストリビューション化が行われた
 (運用でも無償で使えるし、有償サポートが必要であればベンダの選択肢も増えた
  ⇒どちらにしても、進化に合わせる・止まるための検討・検証コストは必要) 2. Oracle (Open) JDKにあわせて半年ごとにメジャー更新できるのが理想だが、


    難しい理由がある場合は場合はLTSを選択する 3. ディストリビューションごとに細かな差異(バグ対応・付随機能、有償サポートコスト)
 はあるので、各自の開発・運用環境と照らし合わせて選ぶ必要がある 4. 調査・検証の環境を整えて、方針を決める
 ①常に追従 ②LTSに追従 ③更新せずに塩漬け
 どの方針もメリット・リスク・コストは異なるので、こちらも各自の事情に合わせる