Java News
関西Javaエンジニアの会
ポノス株式会社
阪田 浩一 @jyukutyo
#kanjava
Disclaimer
以下の事項は個人の理解に基づいています。
正確な情報を提供することに努めています
が、誤りがあることがあります。何かを確
約するものではないため、この情報を元に
判断なさらないでください。
Java SE 10リリース!
• 2018/03/20
• non LTSリリース
リリースサイクルの変更
9 (17/9) ###
10(18/3) ###
11(18/9) ##################
12 ###
13 ###
14 ###
15 ###
16 ###
17 ##################
6ヶ月ごとに
リリース
3年ごとに
LTSリリース
#: サポート期間
無償版のOracle JDKは
なくなる
OpenJDKのビルドが
代わりとなる
ライセンスはGPL
(クラスパス例外付きGPLv2)
Oracle JDKとOpenJDK
• 機能的な差はない(TCKにより保証)
– Oracle JDKには
• オラクルのバイナリコードライセンスがある
• 一部のコードが異なる
• クローズドソースのサードパーティのコンポーネント
が含まれている
– グラフィック・ラスタライザ、サード・パーティ・フォン
ト、追加ドキュメントなど
• 商用機能がある
商用機能は
OpenJDKへ統合される
Java SE 10
の内容
ローカル変数の
型推論
Javaにおける
型推論の歴史
List<String> l =
Collections.<String>emptyList();
List<String> l = Collenctions.emptyList();
--
List<String> l = new ArrayList<String>();
List<String> l = new ArrayList<>();
--
Predicate<String> p =
(String s) -> s.length() == 0;
Predicate<String> p = s -> s.length() == 0;
URL url =
new URL(”http://openjdk.java.net”);
var url =
new URL(”http://openjdk.java.net”);
型推論
• ❌動的型付き
• コンパイラが型を補完してくれるイメージ
var hello = ”hello”;
hello = 1; // できません
なぜローカル変数だけ?
ローカル変数以外は
そのファイル(クラス)内で
完結しないから
制限
// できません
var x;
var x = 1, y = 2;
var x = null;
var x[] = new int[2];
var x = {1, 2, 3};
var x = (x = 7);
var x = f = (x, y) -> x + y;
ガイドラインがあります
• Style Guidelines for Local Variable
Type Inference in Java
– 日本語訳
• https://orablogs-jp.blogspot.jp/2018/03/style-guidelines-for-local-variable.html
– 原文
• http://openjdk.java.net/projects/amber/LVTIstyle.html
その他
• JEP 304: Garbage Collector Interface
• JEP 307: Parallel Full GC for G1
• JEP 310: Application Class-Data Sharing
– 通称AppCDS
• JEP 317: Experimental Java-Based JIT Compiler
– いわゆるGraal
• 他にもたくさん
Graal
JVMCIを利用した
Java製JITコンパイラ
≠ GraalVM
JVMCI
• JEP 243: Java-Level JVM Compiler Interface
– JavaでJITコンパイラを実装するためのインタフェースを提供
Graal
5/17(木)の
Java Day Tokyoで
セッションがあります!
(Twitter社エンジニア)
Graal
Twitter社では
Graalを本番環境で
すでに利用中
Java 10で
いろいろやりましょう!

Kanjava 201804 Java News