SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Downloaden Sie, um offline zu lesen
Agenda	
•  JavaOneについて	
•  Java	Next	
•  周辺技術
JavaOneについて
JavaOne	
•  Oracleが主催するJavaイベント	
•  サンフランシスコで開催されるものが最大	
•  Oracle	Open	Worldと併催
会場がMosconeに 	
•  2009あたりまでMosconeだった	
•  2016までHiltonとParc55(とNikko)	
– Hiltonは複雑怪奇	
– 探検感が楽しかった	
•  ただしMoscone	SouthではなくMoscone	West	
– Moscone	Southは工事中
セッション枠が45分	
•  去年までは60分	
•  聞くのが楽	
•  ちょっと物足りない
昼食にドリンクがない	
•  いままではペプシかなにかがあった
時差ぼけ	
•  おかげで朝8:30のセッションに元気に	
参加できます!	
•  日本に戻っても2週間くらい午前中起床が	
続きました。	
•  昼夜逆転対策にサンフランシスコおすすめ
サンフランシスコ	
•  日本人観光客がいない	
– 中国語を話す人が多い	
•  ホームレスがまた増えた	
– 去年減ったように見えたホームレスが増えてた	
– 子どもをつれてるホームレスが何組かいた	
•  SF	MOMAの改修終了
JavaOneセッションの傾向	
•  セッションの検索件数をカウント	
•  about	Java	
•  about	Next	Java	
•  about	JVM	Language	
•  about	Middleware	
•  about	Archtecture	
•  about	Buzz	word
about	Java	
•  “java	9”	32	
•  “jdk	9”	21	
•  Java	EE	57	
•  jigsaw	9	
•  module	17	
•  Virtual	Machine	7	
•  JShell	5	
Java9とくにモジュール関連が多い
about	Next	Java	
•  valhalla	1	
•  panama	1	
•  amber	0	
•  loom	0	
•  “java	10”	0	
•  “jdk	10”	1	
次のJavaの仕様についてのセッションが
ほぼない
about	JVM	Language	
•  groovy	9	
•  kotlin	12	
•  javascript	32	
•  Scala	46	
– ほぼ”Scalable”・・・。タイトルは5件	
Kotlin人気
about	Middleware	
•  sql	18	
•  spark	14	
•  kaYa	11	
•  cassandra	5	
•  mongodb	1	
•  Hadoop	2	
•  HBase	1	
Spark/KaYaが人気。	
Hadoopは不人気というかインフラ化
about	Archtecture	
•  reac[ve	19	
•  microservice	162	
•  serverless	12	
•  docker	33	
•  kubernetes	20	
みんなMicroserviceいいたいだけでは。
Docker人気。
about	Buzz	word	
•  big	data	12	
•  cloud	273	
–  カテゴリ名に入っていたのでサーバーサイド系が	
すべてカウントされていた。タイトルには50程度。	
•  Machine	Leaning	19	
•  Blockchain	4	
•  IoT	16	
•  raspberry	5	
•  VR	3	
•  gpu	0	
•  fpga	0	 機械学習人気	
GPUセッションがなくなった
Java	Next
Java	Next	
•  Project	Valhalla	
–  Value	Type	
–  Specializa[on	
•  Project	Panama	
–  FFI(Foreign	Language	Interface)	
–  Vector	
–  Value	Layout	
•  Project	Amber	
–  var	
–  Pacern	matching	
–  Enhanced	Enum	
•  Project	Loom	
–  Fiber(Lightweight	Thread)	
–  Con[nua[on
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;
}
Specialization
•  We can write List<int>
•  No more IntStream and OptionalInt
Local Variable Inference
•  Inferring for local variable
•  JEP 286
var now = LocalDateTime.now();
var list = new ArrayList<String>();
var stream = list.stream();
Enhanced enum
•  use generic parameter for enum
•  JEP 301
enum Hoge<T> {
FOO(Integer.class , 1),
BAR(String.class, "test");
...
T getValue() {
return value;
}
}
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) {}
Extended Switch
•  instanceof
•  pattern matching
•  switch expression
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);
定数も使える
•  どんな型でもswitchに使える
double comp = getComponent();
String message;
switch (comp) {
case 10:
message = "整数やね" ;
break;
case 10.5:
message = "小数やね";
break;
default:
message = "ようしらん";
}
print(message);	
罠
定数も使える
•  どんな型でもswitchに使える
double comp = getComponent();
String message;
switch (comp) {
case 10d:
message = "整数やね ";
break;
case 10.5:
message = "小数やね";
break;
default:
message = "ようしらん";
}
print(message);	
doubleにする
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);
Pattern matching
•  Pattern matching with data class
Object comp = getComponent();
String message =
expswitch (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);
matches	
•  matches演算子	
Object comp = getComponent();
if(comp matches Point(var x, var y)) {
printf("点(%d,%d)やね", x, y);
}
ところで、varすでに試せます。	
•  jdk10で試せる	
– hcp://jdk.java.net/10/	
•  JShellで超便利	
•  IDEは対応していない	
– varがあって補完がない世界より、補完があって
varがない世界のほうがはるかにつよい
jdk10にvarが入る	
•  言語仕様すら6ヶ月でかわる	
•  なにが変わるか事前に把握しづらい	
– リリース3ヶ月前のRamp	Downで確定	
– 進捗状況はプロジェクトごとに確認する必要があ
る	
•  なにが変わったか事後に把握しづらい	
•  なにが動かせるか把握しづらい	
•  どうすんの
周辺環境
Javaの実行環境の変化	
•  AOT	
–  事前コンパイル	
•  Graal	
–  Javaで書かれたJIT	
•  OpenJ9	
–  IBM	J9がオープンソースに	
•  新しいGC	
–  Shenandoah	by	Redhat	
–  ZGC	by	Oracle	
–  数百GB〜数TBのメモリに対応
ハードウェア対応のフレームワーク	
•  Vector	
– not	java.u[l.Vector	
– SIMD対応	
•  Persistent	Memory	
– 永続メモリ(不揮発メモリ)
fn	project	
•  Java対応のサーバーレスフレームワーク	
•  Dockerネイティブ	
hcps://github.com/fnproject/fn
fn	projectは簡単に試せる	
•  ぜんぶDockerがやってくれる	
– これで試せる	
$	brew	install	fn	
$	fn	start	
$	mkdir	sample	
$	cd	sample	
$	fn	init	--run[me	java	
$	fn	deploy	-app	myapp	--local
サーバーレスとJava	
•  サーバーレス	
– 要するにCGI	
– ゲートウェイだけが立っていてアプリケーションは
その都度プロセスを動かす	
– サーバー管理の必要性が低い	
– スケールアップが容易	
•  多重化はしたいけど負荷はそう高くないもの
がたくさんあるみたいなところにいいかも
サーバーレスとJava	
•  Javaの欠点	
– プロセス起動が重い	
– 一度しか実行されないので実行時最適化が無駄	
•  最適化してる間に実行おわる	
•  最適化しても使われない
とうこともあると思って	
•  プロセス起動が重い	
– 読み込むクラスを減らす	
•  モジュール化	
•  実行時最適化が無駄	
– あらかじめ最適化	
•  AOTやOpenJ9
おまけ	
•  成田→福岡の飛行機の夜景がきれいでした	
hcp://d.hatena.ne.jp/nowokay/20171025#1508893711
まとめ	
•  モジュールがJavaを変えた	
– Javaのコードの書き方は変わらない	
– Javaの中身が変わった	
– Javaの世界が変わった

Weitere ähnliche Inhalte

Mehr von なおき きしだ

Java新機能観察日記 - JJUGナイトセミナー
Java新機能観察日記 - JJUGナイトセミナーJava新機能観察日記 - JJUGナイトセミナー
Java新機能観察日記 - JJUGナイトセミナーなおき きしだ
 
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会なおき きしだ
 
これからのコンピューティングの変化とこれからのプログラミング at 広島
これからのコンピューティングの変化とこれからのプログラミング at 広島これからのコンピューティングの変化とこれからのプログラミング at 広島
これからのコンピューティングの変化とこれからのプログラミング at 広島なおき きしだ
 
Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11なおき きしだ
 
Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11なおき きしだ
 
Java10 and Java11 at JJUG CCC 2018 Spr
Java10 and Java11 at JJUG CCC 2018 SprJava10 and Java11 at JJUG CCC 2018 Spr
Java10 and Java11 at JJUG CCC 2018 Sprなおき きしだ
 
New thing in JDK10 even that scala-er should know
New thing in JDK10 even that scala-er should knowNew thing in JDK10 even that scala-er should know
New thing in JDK10 even that scala-er should knowなおき きしだ
 
Java Release Model (on Scala Matsuri)
Java Release Model (on Scala Matsuri)Java Release Model (on Scala Matsuri)
Java Release Model (on Scala Matsuri)なおき きしだ
 
JavaOne2017で感じた、Javaのいまと未来 in 大阪
JavaOne2017で感じた、Javaのいまと未来 in 大阪JavaOne2017で感じた、Javaのいまと未来 in 大阪
JavaOne2017で感じた、Javaのいまと未来 in 大阪なおき きしだ
 
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...なおき きしだ
 
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定するNetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定するなおき きしだ
 
コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道なおき きしだ
 
人工知能に何ができないか
人工知能に何ができないか人工知能に何ができないか
人工知能に何ができないかなおき きしだ
 
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaJavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaなおき きしだ
 
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fallこれからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fallなおき きしだ
 

Mehr von なおき きしだ (20)

怖いコードの話 2018/7/18
怖いコードの話 2018/7/18怖いコードの話 2018/7/18
怖いコードの話 2018/7/18
 
Java新機能観察日記 - JJUGナイトセミナー
Java新機能観察日記 - JJUGナイトセミナーJava新機能観察日記 - JJUGナイトセミナー
Java新機能観察日記 - JJUGナイトセミナー
 
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
 
これからのコンピューティングの変化とこれからのプログラミング at 広島
これからのコンピューティングの変化とこれからのプログラミング at 広島これからのコンピューティングの変化とこれからのプログラミング at 広島
これからのコンピューティングの変化とこれからのプログラミング at 広島
 
Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11
 
Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11Summary of JDK10 and What will come into JDK11
Summary of JDK10 and What will come into JDK11
 
Java10 and Java11 at JJUG CCC 2018 Spr
Java10 and Java11 at JJUG CCC 2018 SprJava10 and Java11 at JJUG CCC 2018 Spr
Java10 and Java11 at JJUG CCC 2018 Spr
 
New thing in JDK10 even that scala-er should know
New thing in JDK10 even that scala-er should knowNew thing in JDK10 even that scala-er should know
New thing in JDK10 even that scala-er should know
 
Java Release Model (on Scala Matsuri)
Java Release Model (on Scala Matsuri)Java Release Model (on Scala Matsuri)
Java Release Model (on Scala Matsuri)
 
JavaOne2017で感じた、Javaのいまと未来 in 大阪
JavaOne2017で感じた、Javaのいまと未来 in 大阪JavaOne2017で感じた、Javaのいまと未来 in 大阪
JavaOne2017で感じた、Javaのいまと未来 in 大阪
 
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
 
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定するNetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
 
JavaOne2016報告
JavaOne2016報告JavaOne2016報告
JavaOne2016報告
 
コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道
 
Javaプログラミング入門
Javaプログラミング入門Javaプログラミング入門
Javaプログラミング入門
 
人工知能に何ができないか
人工知能に何ができないか人工知能に何ができないか
人工知能に何ができないか
 
乱数のたのしい話
乱数のたのしい話乱数のたのしい話
乱数のたのしい話
 
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJavaJavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJava
 
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fallこれからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
 
機械学習プロ生20151121
機械学習プロ生20151121機械学習プロ生20151121
機械学習プロ生20151121
 

これからのJava言語と実行環境