えんじにゃーず・ハイ

主にエンジニアや技術情報についてつらつら書き連ねるブログです

【東京】JJUG ナイトセミナー 「緊急特集! Javaの無償版はなくならないぞ!」 6/20(水)に参加してきました

【東京】JJUG ナイトセミナー 「緊急特集! Javaの無償版はなくならないぞ!」 6/20(水) 開催

久々にJJUGへ参加しました。Javaは使用しなくなって2年ほどになったのですが、Javaの無償版について、自分の理解が合っているかを確認するためです。

jjug.doorkeeper.jp

下記は当日のメモです。

また、Twitterハッシュタグ#JJUGで当日の様子を振り返ることができます。

twitter.com

Togetterはこちら。

togetter.com

JDK:新しいリリースモデル解説 by 伊藤 敬さん (Oracle)

発表資料。

www.slideshare.net

従来

OpenJDKのソースコードを公開している OracleはOpenJDKに下記を追加しビルドしてOracleJDKを生成

Oracleが追加しているもの - JavaFX - Java Plug-In/JavaWebStart - JFR/JMC - AutoVersionUp - Installer

セキュリテイアップデートはOpenJDKに対してはUpdateProjectがgaUpdateRelaseを提供している

OracleJDKはOracleがセキュリティアップデートを開発

セキュリティアップデートの両者同期は不完全

JDK/JREに対するニーズ

  • もっと短期間でバージョンアップしてほしい
  • 1バージョンを長期間使いたい
  • モダンにして欲しい
    • ITトレンドに対応、インフラの進化へ適応
    • 言語としての進化
  • ドタバタしないで欲しい
    • 直前でリリースが伸びるとか…

アップデート間隔

  • 6->7
    • 4年8ヶ月
  • 7->8
    • 2年8ヶ月
  • 8->9
    • 3年6ヶ月

この相反するニーズにどのように応えるか

  • もっと短期間でバージョンアップしてほしい
  • 1バージョンを長期間使いたい

JDK9以降のOpenJDKとOracleJDKの作り方

OpenJDKのソースコードから

  • OpenJDKのバイナリ
  • OracleJDKのバイナリ

Oracleが生成するように JavaFXとInstallerの追加が差分となる

有償版だったJFR/JMCはOpenJDKに含まれるようになる

JDK9以降のOpenJDKとOracleJDK

OpenJDK
  • 開発した機能を順次利用できる
  • 6ヶ月単位でリリースしバージョンアップ
  • セキュリティアップデートを提供
  • OpenJDKコミュニティによる無償サポート
  • 次期バージョンがリリースされると前バージョンの提供が終了
  • バージョンアップ・リリースは3月と9月
    • 絶対にリリース
    • 1回のバージョンアップに2回更新が入る
OracleJDK
  • バージョンを固定したいニージュに特化
  • 3年に一度のリリース
  • セキュリティアップデートを提供
  • Oracleの有償サポート提供(最低8年:LTS)
    • ここでお金が発生する

OpenJDKは一つのソースコードを継続的にアップデートするのに対して

OracleJDKは各バージョンごとにブランチができる(LTS対応のため)

やっぱりこれが気になるところ。

OpenJDKの入手先

JDK Builds from Oracle

OracleJavaArchiveは既存のままで、以前のバージョンも取得可能

加えてOpenJDKArchiveも提供

JCP(JavaCmmunityProcess)はOpenJDKに対して仕様提案・定義・承認する

ライセンス
  • OpenJDK
  • OracleJDK
    • BCL
    • 再配布不可
既存APIについて

今まではDeprecatedで残していたが、今後は機能が削除される可能性もある

現実的な選択肢としてこうなりそう

OpenJDK開発の実態 by 吉田 真也さん (LINE)

質問受け付け

www.sli.do

最近イベントでも流行っているらしい。セッション中に質問を投げられるのいいね。

普段どうやってOpenJDKを開発しているのか

Q&A

  • 好きなJavaクラスはなんですか?
    • Stream
    • ProjectLambdaなどでよく関わっていた
  • 胸熱なバグは?
  • IDE/エディタは?
    • IntelliJを使っている
    • OpenJDKはビルドした後に.idea.sh を叩くとIntelliJ用のプロジェクトファイルが作成される
  • Githubに移行は?
    • ない
  • なんでコミッタに?
    • 開発するのに不便だから
    • でもレビュワーになったら大変なので本末転倒
    • Authorぐらいが楽。パッチ作って投げるだけ
  • LINEに入ったわけ
    • Javaをがっつり使っていたから
  • 文法が変わったりJVMに大きな変更があった場合にLTSに対して焦点をあてる?
    • あてない
  • OCJPはどうなる?
    • わからない
    • でも取っておくといいと思うよ

他、Twitterで#JJUGを検索すると全ての質問に答えてくれています。

いかにJavaのバージョンアップと付き合うべきか by 谷本 心 (Acroquest)

発表資料。

t.co

どのバージョンのJavaを使っている?

  • JDK8が多数
  • JDK9はちょびっと
  • JDK10はいない
  • JDK1.4はいない

伝統のスベリ芸が発動した

半年ごとのバージョンアップに追従していくだけ

選択肢は?

Javaのアップデートに追従してく理由 - セキュリテイ問題への対応 - 技術的な追従

バージョンアップのジレンマ

  • 再テスト
    • しようね
  • FWのバージョンも挙げなければいけない
    • Spring Boot対応
    • Elasticsearch対応
    • Elasticsearchとセットで使われやすいLogstashが未対応
    • Java自身のバージョンアップよりFWやライブラリが対応していない問題が辛い

バージョンアップ戦略の選択肢

  • 最新に追従
  • LTSに追従
  • バージョン固定

最新に追従が増えただけ

半年ごとのバージョンアップは海外でのサイクルとしては普通

是非チャレンジして欲しい

AdoptOpenJDK。こんなJDKあるんだね。

adoptopenjdk.net

総括

Javaが有償化になるぞー!という煽りはやっぱり杞憂で、今までとは異なりバージョンアップサイクルに追従していく選択肢が増えた、ということですね。

ただ、Java自体は問題ないとしてもJVM言語・フレームワーク・ライブラリなどなど、どのように追従していくのかは動向が気になるところです。

特にJVM言語。恐らくOpenJDKをベースにすると思うので、そうなると各コミュニティがバージョンアップに追従していくのはかなり大変な印象です。JVM言語自体は素敵なエコシステムなので、衰退しないといいのですが…。