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. Java有償化 について
    山川広人 (@gishi_yama)
    Javaエンジニアグループ北海道 Java Do
    1
    Java Doでしょう#OSC
    ハッシュタグ:#osc19do #room206

    ※資料は後ほど公開します
    していない件

    View Slide

  2. 公立千歳科学技術大学 情報システム工学科 専任講師
    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

    View Slide

  3. 北海道のJava User Groupとして、

    Javaやフレームワーク、エコシステム、システム開発手法などを

    テーマとして、初心者向けや新しい技術の入門ハンズオンや、

    国内・海外のJavaエンジニアを招いた上級者向けの講演などの

    勉強会を開催しています。 一緒にJava、どうでしょう!
    <今日のブース展示> Room107+108
    Javaエンジニアグループ北海道 (Java Do)
    3

    View Slide

  4. 本題
    4

    View Slide

  5. 運用現場は半年ごとの更新なんて無理!

    数年に安全な移行期間を人質にした実質有償化だ!
    • Javaのリリースサイクルを半年に早めて、他の言語の進化ペースに追いつく

    (従来:数年に一度)
    • 半年が厳しい環境むけに、3年ごとにLTS:Long Team Support 版もリリースする
    • (発表当時は) LTS版はオラクルが有償で提供し、

    半年版は Open JDK コミュニティが無償で提供する という情報
    Q. Javaは有償化した?
    5
    A. いいえ、有償化していません。
    うわさのはじまり
    å

    View Slide

  6. 「何が起こっているかわかりづらいよね」は世界的なもの
    6
    https://twitter.com/cero_t/status/1133736638553546753
    https://twitter.com/strategic_vivi/status/1087376168842489856
    https://www.java.com/ja/download/

    View Slide

  7. 何も考えてこなかった、つまり今までは


    あなたとJava

    今すぐダウンロー



    すれば他はなにも考えなくてよかった

    だって、メジャーバージョンアップですら数年単位

    (サポート期間はさらにその倍)だから
    7

    View Slide

  8. Java (JDK) のリリースサイクル・LTSタイミングの変更
    8
    伊藤敬(2019), JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209 より引用

    https://www.slideshare.net/oracle4engineer/jdk-ver-22-20190209

    View Slide

  9. Q. じゃあJavaはどうなったの?
    A1. 進化・改善・変更が早くなりました
    ひしだま, ひしだま's 技術メモページ より引用・一部改変
    http://www.ne.jp/asahi/hishidama/home/tech/java/uptodate.html

    View Slide

  10. 進化や改善についていくのは楽しい&ついていけると便利・楽に
    10
    Jshell (9), Unmodi ableList(9), var (10), String:lines(11)

    改行文字列リテラル(13) や、 データ用クラス定義(?) なども検討されている
    ※もちろん、後方互換性の減少や依存ライブラリの追随への検証は必要になる

      (例:Java11でのJAXB削除、Lombok等の影響を受けやすいライブラリの動作)

    View Slide

  11. 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...
    (オープンソース)

    View Slide

  12. バグへの対処
    • 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

    View Slide

  13. Q. どの JDK Distribution を選べばいいの?
    A. デファクトスタンダードは(まだ)なく、

    Javaエキスパートの間でも意見は割れてます
    • 理想的には Oracle Open JDK(半年更新) に常について行く
    • 難しい場合は、運用環境での利用が有償・無償のLTSを検討する
    • OSベンダの独自LTSが利用できる場合もある(Ex: Redhat)
    • (前述)機能や同梱ライブラリ、パッチのバックポート都合(姿勢)の違いは要検討
    • 開発環境は運用環境に合わせる(開発環境での利用は無償の場合がほとんど)
    ⇒ 自分たちの環境都合に最適なものを検討して選択するしかない

    View Slide

  14. 14
    山田 貴裕(2019), 最適なOpenJDKディストリビューションの選び方 より引用
    https://www.oracle.co.jp/campaign/code/2019/pdfs/oct2019_b-3-3.pdf

    View Slide

  15. 15
    山田 貴裕(2019), 最適なOpenJDKディストリビューションの選び方 より引用
    https://www.oracle.co.jp/campaign/code/2019/pdfs/oct2019_b-3-3.pdf

    View Slide

  16. 16
    山田 貴裕(2019), 最適なOpenJDKディストリビューションの選び方 より引用
    https://www.oracle.co.jp/campaign/code/2019/pdfs/oct2019_b-3-3.pdf

    View Slide

  17. Q. 金銭的コストは変わるの?
    A. 現場の状況によって変わることがあります
    運用や契約都合などでチェック
    • 契約・運用上、JDK(JRE)にトラブルサポートやTCK合格が必須なのか
    • 利用するOSやクラウドベンダが提供・推奨されている場合があるか
    • Java 7 の環境が必要なのか
    • 英語・日本語のどちらのサポートが必要なのか
    • 日本代理店があるか
    ⇒ オラクルのライセンスは、リリースモデル変更にあわせ金額が再設定された

      LTS提供ベンダによっても異なる金額が設定がされている

    View Slide

  18. 18
    伊藤敬(2019), JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209 より引用

    https://www.slideshare.net/oracle4engineer/jdk-ver-22-20190209
    掲載時点のものであり、詳細・実際は各ベンダへ!

    View Slide

  19. 他の企業ディストリビューションでは...?
    19
    https://www.azul.com/products/pricing-2/

    https://support.bell-sw.com/support
    いくつかの例。日本代理店がある場合は価格・内容が変わってくる可能性があります。
    BellSoft
    掲載時点のものであり、詳細・実際は各ベンダへ!

    View Slide

  20. Q. どうやって追随やディストリビューションの切り替えをすれば?
    A. アンテナを立て、調査検証しやすい環境づくり
    Javaはユーザコミュニティが全国的に存在し、

    JDKの状況も有志の方がコミュニティ・勉強会等で情報提供してくれている
    https://qiita.com/u-tanick/items/bb166929a58a4c20bb88
    https://www.slideshare.net/YujiKubota/introduction-to-java-11-support-and-jvm-features
    https://www.oracle.co.jp/campaign/code/2019/pdfs/oct2019_b-3-3.pdf
    皆さんからのニーズがあれば、 Java Do にお越しいただく機会も作りたいので、ぜひ教えてください!

    (@gishi_yama や @jug_hokkaido 宛)

    View Slide

  21. 1. 新しいリリースモデルに併せて,半年ごとにアップデートを実施

    ⇒テストコードや継続的インテグレーション(CI)で、影響を確認・変更しやすい

      土台や環境を作る

    ⇒ ソースコードに手を加えず、JDKだけを更新する

    ⇒ ソースコードを新しいJDKの仕様に併せて変更し、JDKを更新する
    2. 通常は,LTS 版を利用しインシデントが発生した時点で対応を検討

    ⇒ LTSに追従する方針にして、3年(問題発生時)ごとに切り替え作業を狙う

    ⇒ 大きなジャンプになるので(これまでの様に)更新コストがかかる
    3. サービスに影響のない範囲で自己責任において長期利用


    ? かなり限定的な塩漬け環境...?
    調査検証して、方向性を定める
    21
    寺田佳央(2019) 技術評論社, 2019年のJava より引用・一部改変・再構成

    https://gihyo.jp/dev/column/newyear/2019/java?page=2

    View Slide

  22. 今日のまとめ
    22

    View Slide

  23. Javaは有償化しておらず、付き合い方が変わる
    1. Javaは有償化したのではなく、Javaの進化と現場の都合を両立させるために

    JDKのディストリビューション化が行われた

    (運用でも無償で使えるし、有償サポートが必要であればベンダの選択肢も増えた

     ⇒どちらにしても、進化に合わせる・止まるための検討・検証コストは必要)
    2. Oracle (Open) JDKにあわせて半年ごとにメジャー更新できるのが理想だが、

    難しい理由がある場合は場合はLTSを選択する
    3. ディストリビューションごとに細かな差異(バグ対応・付随機能、有償サポートコスト)

    はあるので、各自の開発・運用環境と照らし合わせて選ぶ必要がある
    4. 調査・検証の環境を整えて、方針を決める

    ①常に追従 ②LTSに追従 ③更新せずに塩漬け

    どの方針もメリット・リスク・コストは異なるので、こちらも各自の事情に合わせる

    View Slide