JavaOne報告201718. JavaOne発表時
• 6ヶ月ごとにフィーチャーリリース
• バージョン番号は年.月
– 次回リリースはJDK 18.3
• 3ヶ月ごとにメンテナンスリリース
• サポートは次のフィーチャーリリースまで
• 3年ごとにLong Time Support(LTS)
– Oracle JDKのみ
• Open JDKとOracke JDKは同じバイナリに
– いままで有償だったツールもすべてOpenJDKに
• Oracle JDKは顧客のみ
23. バージョン番号
• 2018/03 フィーチャーリリース JDK10
• 2018/04 メンテナンスリリース JDK10.0.1
• 2018/07 メンテナンスリリース JDK10.0.2
• 2018/09 フィーチャーリリース JDK11 LTS
• 2018/10 メンテナンスリリース JDK11.0.1 LTS
• 2019/01 メンテナンスリリース JDK11.0.2 LTS
26. Value Type
• Codes like as a class, works like as an int
• Not a reference type
• Can not be null
value class Point {
int x;
int y;
}
28. Local Variable Inference
• Inferring for local variable
• JEP 286
var now = LocalDateTime.now();
var list = new ArrayList<String>();
var stream = list.stream();
29. Enhanced enum
• use generic parameter for enum
• JEP 301
enum Hoge<T> {
FOO(Integer.class , 1),
BAR(String.class, "test");
...
T getValue() {
return value;
}
}
30. Data Class
• We want to declare class as just
structure
• Now we use lombok @Value
• Language has Data Class, compiler
can distinguish it.
@Value
class Point {
int x;
int y;
}
class Point (int x, int y) {}
32. Instanceof
• use type as a condition
Object comp = getComponent();
String message;
if (comp instanceof Integer) {
int i = (Integer)comp;
message = "整数やね " + i;
} else if (comp instanceof String) {
String s = (String)comp;
message = s.length() + “文字やね";
} else {
message = "ようしらん";
}
print(message);
Object comp = getComponent();
String message;
switch (comp) {
case Integer i:
message = "整数やね " + i;
break;
case String s:
message = s.length() + “文字やね";
break;
default:
message = "ようしらん";
}
print(message);
33. switch expression
• Write switch as an expression
Object comp = getComponent();
String message =
expswitch (comp) {
case Integer i -> "整数やね " + i;
case String s -> s.length() + “文字やね";
default -> "ようしらん";
}
print(message);
34. Pattern matching
• Pattern matching with data class
Object comp = getComponent();
String message =
switch (comp) {
case Point(var x, var y) -> String.format("点(%d,%d)やね", x, y);
case Integer i -> "整数やね " + i;
case String s -> s.length() + “文字やね";
default -> "ようしらん";
}
print(message);
48. サーバーレスとJava
• サーバーレス
– 要するにCGI
– ゲートウェイだけが立っていてアプリケーションはそ
の都度プロセスを動かす
– サーバー管理の必要性が低い
– スケールアップが容易
• 多重化はしたいけど負荷はそう高くないみたい
なところにいいかも
– CMSのように、多重化してるけどあまり使われないも
のとか