SlideShare une entreprise Scribd logo
1  sur  53
Télécharger pour lire hors ligne
JavaOne	2017報告	
2017/11/17	
LINE	Fukuoka	きしだ なおき
Agenda	
•  JavaOneについて	
•  Javaのリリースサイクル	
•  Java	Next	
•  Java	EE	
•  周辺技術
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	
•  ka[a	11	
•  cassandra	5	
•  mongodb	1	
•  Hadoop	2	
•  HBase	1	
Spark/Ka[aが人気。	
Hadoopは不人気というかインフラ化
about	Archtecture	
•  reacve	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セッションがなくなった
リリースサイクル
JavaOne発表時	
•  6ヶ月ごとにフィーチャーリリース	
•  バージョン番号は年.月	
–  次回リリースはJDK	18.3	
•  3ヶ月ごとにメンテナンスリリース	
•  サポートは次のフィーチャーリリースまで	
•  3年ごとにLong	Time	Support(LTS)	
–  Oracle	JDKのみ	
•  Open	JDKとOracke	JDKは同じバイナリに	
–  いままで有償だったツールもすべてOpenJDKに	
•  Oracle	JDKは顧客のみ
Javaリリースサイクル	
hdps://www.youtube.com/watch?v=UeyyLielXsU
Stephen	Celebourne氏の批判	
(Date	Time	API作者)	
•  ツールの対応に3ヶ月、評価に3ヶ月かかる	
•  6ヶ月のサポートではいつまでも新バージョン
が使えない	
•  バージョン番号評価が今までと違うので対応
が必要
DEVOXX	Belgiumでの発表	
•  OpenJDKも3年ごとに3年のサポート	
•  バージョン番号はフィーチャーリリースごとに
インクリメント	
– 次はJDK	10
Javaリリースサイクル(new)	
hdps://www.youtube.com/watch?v=x7pkWlost64
バージョン番号	
•  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
Java	Next
Java	Next	
•  Project	Valhalla	
–  Value	Type	
–  Specializaon	
•  Project	Panama	
–  Vector	
–  Value	Layout	
•  Project	Amber	
–  var	
–  Padern	matching	
–  Enhanced	Enum	
•  Project	Loom	
–  Fiber(Lightweight	Thread)	
–  Connuaon
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 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 =
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);
matches	
•  matches演算子	
Object comp = getComponent();
if(comp matches Point(var x, var y)) {
printf("点(%d,%d)やね", x, y);
}
ところで、varすでに試せます。	
•  jdk10で試せる	
– hdp://jdk.java.net/10/	
•  JShellで超便利	
•  IDEは対応していない	
– varがあって補完がない世界より、補完があって
varがない世界のほうがはるかにつよい
jdk10にvarが入る	
•  言語仕様すら6ヶ月でかわる	
•  なにが変わるか事前に把握しづらい	
– リリース3ヶ月前のRamp	Downで確定	
– 進捗状況はプロジェクトごとに確認する必要があ
る	
•  なにが変わったか事後に把握しづらい	
•  なにが動かせるか把握しづらい	
•  どうすんの
Java	EE
Java	EEセッションが不人気	
•  Linda	Demicelのセッションに空席	
– Spec	Lead	
– 同じ話を3年目?	
•  MVCは5人・・・
Java	EE	8	
•  Servlet	4.0	
–  HTTP/2対応	
•  CDI	2.0	
–  Java	SE対応	
–  非同期対応	
•  JAX-RS	
–  Server	Sent	Event対応	
•  JSON-B	
–  JSON	Binding	
–  Jackson
EE4J	
•  Java	EEをEclipseに寄贈	
•  Oracleのコントロールがゆるくなる	
•  最近Oracleなんもしてない
EE4Jに至る道	
•  2013/07	Java	EE	7リリース	
•  2015/02	(HTTP/2リリース)	
•  2015/07	Java	EE	8リリース延期	2016->2017	
•  2015/09	Javaエバンジェリスト大量解雇	
•  2016/06	Java	EE	Guardians	
•  2016/08	Java	EE	MicroProfile	
•  2017/08	Java	EEのオープンソース化を発表	
•  2017/09	EE4J
周辺環境
Javaの実行環境の変化	
•  AOT	
–  事前コンパイル	
•  Graal	
–  Javaで書かれたJIT	
•  OpenJ9	
–  IBM	J9がオープンソースに	
•  新しいGC	
–  Shenandoah	by	Redhat	
–  ZGC	by	Oracle	
–  数百GB〜数TBのメモリに対応
ハードウェア対応のフレームワーク	
•  Vector	
– not	java.ul.Vector	
– SIMD対応	
•  Persistent	Memory	
– 永続メモリ(不揮発メモリ)
fn	project	
•  Java対応のサーバーレスフレームワーク	
•  Dockerネイティブ
fn	projectは簡単に試せる	
•  ぜんぶDockerがやってくれる	
– これで試せる	
$	brew	install	fn	
$	fn	start	
$	mkdir	sample	
$	cd	sample	
$	fn	init	--runme	java	
$	fn	deploy	-app	myapp	--local
サーバーレスとJava	
•  サーバーレス	
–  要するにCGI	
–  ゲートウェイだけが立っていてアプリケーションはそ
の都度プロセスを動かす	
–  サーバー管理の必要性が低い	
–  スケールアップが容易	
•  多重化はしたいけど負荷はそう高くないみたい
なところにいいかも	
–  CMSのように、多重化してるけどあまり使われないも
のとか
サーバーレスとJava	
•  Javaの欠点	
– プロセス起動が重い	
– 一度しか実行されないので実行時最適化が無駄	
•  最適化してる間に実行おわる	
•  最適化しても使われない
とうこともあると思って	
•  プロセス起動が重い	
– 読み込むクラスを減らす	
•  モジュール化	
•  実行時最適化が無駄	
– あらかじめ最適化	
•  AOTやOpenJ9
JUnit5	
•  再設計	
•  だいぶ便利	
– Nested	
– Parameterize
おまけ	
•  成田→福岡の飛行機の夜景がきれいでした	
hdp://d.hatena.ne.jp/nowokay/20171025#1508893711
まとめ	
•  モジュールがJavaを変えた	
– Javaのコードの書き方は変わらない	
– Javaの中身が変わった	
– Javaの世界が変わった

Contenu connexe

En vedette

短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術Takafumi ONAKA
 
プログラマは何を勉強するか
プログラマは何を勉強するかプログラマは何を勉強するか
プログラマは何を勉強するかなおき きしだ
 
人工知能に何ができないか
人工知能に何ができないか人工知能に何ができないか
人工知能に何ができないかなおき きしだ
 
コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道なおき きしだ
 
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定するNetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定するなおき きしだ
 
Your code sucks, let's fix it - DPC UnCon
Your code sucks, let's fix it - DPC UnConYour code sucks, let's fix it - DPC UnCon
Your code sucks, let's fix it - DPC UnConRafael Dohms
 
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。なおき きしだ
 
増え続ける情報に対応するためのFPGA基礎知識
増え続ける情報に対応するためのFPGA基礎知識増え続ける情報に対応するためのFPGA基礎知識
増え続ける情報に対応するためのFPGA基礎知識なおき きしだ
 
オブジェクト指向やめましょう
オブジェクト指向やめましょうオブジェクト指向やめましょう
オブジェクト指向やめましょうなおき きしだ
 
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...なおき きしだ
 

En vedette (12)

短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術
 
プログラマは何を勉強するか
プログラマは何を勉強するかプログラマは何を勉強するか
プログラマは何を勉強するか
 
JavaOne2016報告
JavaOne2016報告JavaOne2016報告
JavaOne2016報告
 
人工知能に何ができないか
人工知能に何ができないか人工知能に何ができないか
人工知能に何ができないか
 
コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道
 
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定するNetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
 
Javaプログラミング入門
Javaプログラミング入門Javaプログラミング入門
Javaプログラミング入門
 
Your code sucks, let's fix it - DPC UnCon
Your code sucks, let's fix it - DPC UnConYour code sucks, let's fix it - DPC UnCon
Your code sucks, let's fix it - DPC UnCon
 
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
 
増え続ける情報に対応するためのFPGA基礎知識
増え続ける情報に対応するためのFPGA基礎知識増え続ける情報に対応するためのFPGA基礎知識
増え続ける情報に対応するためのFPGA基礎知識
 
オブジェクト指向やめましょう
オブジェクト指向やめましょうオブジェクト指向やめましょう
オブジェクト指向やめましょう
 
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
 

Plus de なおき きしだ

GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話なおき きしだ
 
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8なおき きしだ
 
VRカメラが楽しいのでブラウザで見たくなった話
VRカメラが楽しいのでブラウザで見たくなった話VRカメラが楽しいのでブラウザで見たくなった話
VRカメラが楽しいのでブラウザで見たくなった話なおき きしだ
 
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)なおき きしだ
 
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なおき きしだ
 
GPUをJavaで使う話(Java Casual Talks #1)
GPUをJavaで使う話(Java Casual Talks #1)GPUをJavaで使う話(Java Casual Talks #1)
GPUをJavaで使う話(Java Casual Talks #1)なおき きしだ
 

Plus de なおき きしだ (20)

GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
 
GraalVM at Fukuoka LT
GraalVM at Fukuoka LTGraalVM at Fukuoka LT
GraalVM at Fukuoka LT
 
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
 
GraalVMについて
GraalVMについてGraalVMについて
GraalVMについて
 
VRカメラが楽しいのでブラウザで見たくなった話
VRカメラが楽しいのでブラウザで見たくなった話VRカメラが楽しいのでブラウザで見たくなった話
VRカメラが楽しいのでブラウザで見たくなった話
 
最近のJava事情
最近のJava事情最近のJava事情
最近のJava事情
 
怖いコードの話 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)
 
乱数のたのしい話
乱数のたのしい話乱数のたのしい話
乱数のたのしい話
 
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
 
GPUをJavaで使う話(Java Casual Talks #1)
GPUをJavaで使う話(Java Casual Talks #1)GPUをJavaで使う話(Java Casual Talks #1)
GPUをJavaで使う話(Java Casual Talks #1)
 

JavaOne報告2017