【東京】JJUG ナイトセミナー 「緊急特集! Javaの無償版はなくならないぞ!」 6/20(水)に参加してきました
【東京】JJUG ナイトセミナー 「緊急特集! Javaの無償版はなくならないぞ!」 6/20(水) 開催
久々にJJUGへ参加しました。Javaは使用しなくなって2年ほどになったのですが、Javaの無償版について、自分の理解が合っているかを確認するためです。
下記は当日のメモです。
また、Twitterのハッシュタグ#JJUGで当日の様子を振り返ることができます。
Togetterはこちら。
- 【東京】JJUG ナイトセミナー 「緊急特集! Javaの無償版はなくならないぞ!」 6/20(水) 開催
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がセキュリティアップデートを開発
セキュリティアップデートの両者同期は不完全
- もっと短期間でバージョンアップしてほしい
- 1バージョンを長期間使いたい
- モダンにして欲しい
- ITトレンドに対応、インフラの進化へ適応
- 言語としての進化
- ドタバタしないで欲しい
- 直前でリリースが伸びるとか…
アップデート間隔
- 6->7
- 4年8ヶ月
- 7->8
- 2年8ヶ月
- 8->9
- 3年6ヶ月
この相反するニーズにどのように応えるか
- もっと短期間でバージョンアップしてほしい
- 1バージョンを長期間使いたい
JDK9以降のOpenJDKとOracleJDKの作り方
OpenJDKのソースコードから
- OpenJDKのバイナリ
- OracleJDKのバイナリ
- JavaFX
- Installer
をOracleが生成するように JavaFXとInstallerの追加が差分となる
有償版だったJFR/JMCはOpenJDKに含まれるようになる
JDK9以降のOpenJDKとOracleJDK
OpenJDK
- 開発した機能を順次利用できる
- 6ヶ月単位でリリースしバージョンアップ
- セキュリティアップデートを提供
- OpenJDKコミュニティによる無償サポート
- 次期バージョンがリリースされると前バージョンの提供が終了
- バージョンアップ・リリースは3月と9月
- 絶対にリリース
- 1回のバージョンアップに2回更新が入る
- 脆弱性対策
- バグFix
OracleJDK
- バージョンを固定したいニージュに特化
- 3年に一度のリリース
- セキュリティアップデートを提供
- Oracleの有償サポート提供(最低8年:LTS)
- ここでお金が発生する
OpenJDKは一つのソースコードを継続的にアップデートするのに対して
OracleJDKは各バージョンごとにブランチができる(LTS対応のため)
OpenJDKの不安要素って結局のところ、バージョンアップ時のオーバーラップ期間が一切ないところだよな。。
— kentaro.maeda (@kencharos) June 20, 2018
やっぱりこれが気になるところ。
OpenJDKの入手先
OracleJavaArchiveは既存のままで、以前のバージョンも取得可能
加えてOpenJDKArchiveも提供
JCP(JavaCmmunityProcess)はOpenJDKに対して仕様提案・定義・承認する
ライセンス
既存APIについて
今まではDeprecatedで残していたが、今後は機能が削除される可能性もある
OpenJDK(無償版)を採用して半年毎のバージョンアップに追従していくか。Oracle JDK(有償版)を採用して1つのバージョンを3年〜8年使い続けるか。 #jjug
— Suzuki Junya (@suzukij) June 20, 2018
現実的な選択肢としてこうなりそう
OpenJDK開発の実態 by 吉田 真也さん (LINE)
質問受け付け
最近イベントでも流行っているらしい。セッション中に質問を投げられるのいいね。
普段どうやってOpenJDKを開発しているのか
- バージョン管理はMercurialを使っている
- 全てのコミットはチケットに紐付いているのでチケット駆動開発している
- Jiraを使用
- https://bugs.openjdk.java.net/secure/Dashboard.jspa
- コミットしたい場合「starter」と検索すると最初に取り組みやすいチケットが検索できる
- パッチを作成してMLに投げる
- OpenJDK ML(http://mail.openjdk.java.net/mailman/listinfo)
Q&A
- 好きなJavaクラスはなんですか?
- Stream
- ProjectLambdaなどでよく関わっていた
- 胸熱なバグは?
- コンパイラが落ちるのが面白い
- IDE/エディタは?
- Githubに移行は?
- ない
- なんでコミッタに?
- 開発するのに不便だから
- でもレビュワーになったら大変なので本末転倒
- Authorぐらいが楽。パッチ作って投げるだけ
- LINEに入ったわけ
- Javaをがっつり使っていたから
- 文法が変わったりJVMに大きな変更があった場合にLTSに対して焦点をあてる?
- あてない
- OCJPはどうなる?
- わからない
- でも取っておくといいと思うよ
他、Twitterで#JJUGを検索すると全ての質問に答えてくれています。
いかにJavaのバージョンアップと付き合うべきか by 谷本 心 (Acroquest)
発表資料。
どのバージョンのJavaを使っている?
- JDK8が多数
- JDK9はちょびっと
- JDK10はいない
- JDK1.4はいない
伝統のスベリ芸が発動した
半年ごとのバージョンアップに追従していくだけ
選択肢は?
Javaのアップデートに追従してく理由 - セキュリテイ問題への対応 - 技術的な追従
バージョンアップのジレンマ
- 再テスト
- しようね
- FWのバージョンも挙げなければいけない
- Spring Boot対応
- Elasticsearch対応
- Elasticsearchとセットで使われやすいLogstashが未対応
- Java自身のバージョンアップよりFWやライブラリが対応していない問題が辛い
バージョンアップ戦略の選択肢
- 最新に追従
- LTSに追従
- バージョン固定
最新に追従が増えただけ
半年ごとのバージョンアップは海外でのサイクルとしては普通
是非チャレンジして欲しい
AdoptOpenJDK。こんなJDKあるんだね。
総括
Javaが有償化になるぞー!という煽りはやっぱり杞憂で、今までとは異なりバージョンアップサイクルに追従していく選択肢が増えた、ということですね。
ただ、Java自体は問題ないとしてもJVM言語・フレームワーク・ライブラリなどなど、どのように追従していくのかは動向が気になるところです。
特にJVM言語。恐らくOpenJDKをベースにすると思うので、そうなると各コミュニティがバージョンアップに追従していくのはかなり大変な印象です。JVM言語自体は素敵なエコシステムなので、衰退しないといいのですが…。