JJUGナイトセミナー「JDK 11リリース記念:今知っておくべきJDK 11の重要ポイント」に行ってきたメモ
最初に
↓を必ず読もう
JDK 11リリースなので改めて「新しいJDKリリースモデル解説(サマリー&アップデート)」 by 伊藤 敬さん
スライドは↓↓↓
Oracle JDK
- 前々からアナウンスされていた商用ライセンス版
- だけじゃなく、社内もしくは個人での開発・テスト・デモであれば無償利用可能(OTNLAライセンス)
- OTNからダウンロードできる
- OTNLAライセンス版も3年間のアップデートが提供される(・・・かもしれない)
- まだ検討中
- 商用ライセンスを個人で買う手段は現在用意中
Oracle OpenJDK
その他
- 10/16に11.0.1がリリース予定
- リリース情報はこれからもOpenJDK
- リリースドキュメントはしっかり見て!!
Java 11 : サポートとVM機能 編 by 久保田 祐史さん
スライドは↓
Introduction to Java 11: Support and JVM Features #jjug
Java11のサポートとJVMについて
- サポートは開発サポート、配信サポート、問い合わせサポートの3つ。
無償で使いたい人の結論はAdoptOpenJDKからダウンロード。最低4年間の配信サポートが得られる。
Java8のサポートが切れるまでにはJava11に移行する
4年以上のバイナリ配信サポートが欲しければ有償サポートしかない
- 外にサポートを求めてもエース級がくるとは限らない。あえてサポートを受けず、組織内でエースを育てるのもあり。
JVM
JEP 330: Launch Single-File Source-Code Programs
Javaファイルを直接実行できる。例えば、java Hoge.javaで実行できる。
- メインメソッドと1ファイルで完結するという制約あり
- Javaソースをスクリプト化できる。これが本当のJavaScript!
JEP 328: Flight Recorder
もともとJava Flight Recorderだったが、Javaが商標に引っかかるからFlight Recorderになった
ツールじゃなくてJREに組み込まれている
JEP 318: Epsilon: A No-Op Garbage Collector
メモリ監視とか行わない。なので、何も考えずに使うとOOEMが起こる。
研究や開発で使うのを想定。JITの効果測定とか(GCが邪魔しない)
JEP 333: ZGC: A Scalable Low-Latency Garbage Collector
Java11では試用版のポーズレスGC。世代別GCではないので、色々変わる。
64bit、Linux限定。
今後、クラスアンロード周りを始め、修正がガンガン入ってくる。
また、運用するためには、LinuxのLargePageとNUMA周りも気にしないとダメ。
Java 11:APIの変更点 編 by きしだなおきさん
Nestedクラスのアクセス制御
public、protected、default、private以外の5つ目のアクセス制御。ネストクラス間のprivateメンバーアクセス。
今まではコンパイルすると別クラスになるので、アクセス用のメソッドが生成されていた。
Nest Mate APIでアクセスできる
Dynamic Class Costants
Classfileフォーマットの拡張。言語やコンパイラの実装自由度、クラス読み込みが早くなる(定数の遅延実行)
Java 11ではコンパイラが未対応(?)
将来的にはstatic finalの定数とかも対象に含めたい。
Java EEとCORBAモジュールの削除
JAX-WSとかJAXBとかはMavenでライブラリ取ってくる必要あり。 CORBAはメンテナンスできる人がいなくなった?(まぁ、使ってる方がレアだし・・・?)
HTTPクライアント
Java9で入っていたHTTPクライアントがスタンダードに。
HTTP2、Reactive対応。
varの拡張
varがLambdaでも使えるように。Lambda内でアノテーションをつけるときに便利。
APIの追加
StringにisBlank、strip(全角空白対応のtrim)、Charactor.toStringにintパラメーター(キャスト不要になった)
FilesにReadString,WriteStringが追加され、小さいコードを書く時便利になった。
nullReader,nullWriterは/dev/nullみたいなもの
Path.ofはインターフェースにofメソッドを追加するという最近の流行りに追従。
Collections.toArrayにintFunctionを指定できるようになった
toArray(String[]::new)のように書ける
Streamのfilterでnotが書きやすくなった
文字列が空「じゃない」フィルターでもメソッド参照がつかえる
Thread.destroyとかstopとか削除されたAPIがある
ArrayIndexOutOfBoundsExceptionのメッセージがわかりやすくなった
JapaneseDateの新元号対応。NewEraとして入ってる
新しい元号は、12.0.1(4/25)に反映される予定
Timソートのバグが直った
静的解析ツールKeYで検出
QA
Q:Java 11でJAX-WSやJAX-Bがなくなった背景は?
A:削除の背景は開発速度の違い。Java EEの変更をSEに入れるのが大変。また、Jackarta EEになってパッケージが変わるという理由もある。
Q:年号を起動時に指定できる? A:Enumだからできない。
プロパティで年号持ってるのはjava.util.Calendarの方だった気がする(うろ覚え) #jjug
— せち (@setys0) October 9, 2018
JJUGからの案内
来月はナイトセミナーだけでなく、OracleCodeOneの報告会を予定。12月はJJUG CCC。
立て続けにイベントがあるのでみんな来てね。
修正メモ
- スライド追加
- JDK 11.0.1のリリース日が間違ってたので修正