Soumettre la recherche
Mettre en ligne
JavaOne2015報告またはこれからのJava
•
8 j'aime
•
3,125 vues
なおき きしだ
Suivre
JavaOne2015の報告資料。Java SE 9/Java EE 8まとめ
Lire moins
Lire la suite
Logiciels
Signaler
Partager
Signaler
Partager
1 sur 68
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道
なおき きしだ
これからのコンピューティングとJava(Hacker Tackle)
これからのコンピューティングとJava(Hacker Tackle)
なおき きしだ
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
なおき きしだ
機械学習プロ生20151121
機械学習プロ生20151121
なおき きしだ
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Norito Agetsuma
Native Memory Tracking
Native Memory Tracking
Takahiro YAMADA
Metaspace
Metaspace
Yasumasa Suenaga
Recommandé
コンピューティングとJava~なにわTECH道
コンピューティングとJava~なにわTECH道
なおき きしだ
これからのコンピューティングとJava(Hacker Tackle)
これからのコンピューティングとJava(Hacker Tackle)
なおき きしだ
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
なおき きしだ
機械学習プロ生20151121
機械学習プロ生20151121
なおき きしだ
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Norito Agetsuma
Native Memory Tracking
Native Memory Tracking
Takahiro YAMADA
Metaspace
Metaspace
Yasumasa Suenaga
Jvm internal
Jvm internal
Go Tanaka
スレッドダンプの読み方
スレッドダンプの読み方
Funato Takashi
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
YujiSoftware
Heap statsfx analyzer
Heap statsfx analyzer
Yasumasa Suenaga
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
JustSystems Corporation
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える
chonaso
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
Hls friends 20161122.key
Hls friends 20161122.key
Takefumi MIYOSHI
JVMの中身を可視化してみた
JVMの中身を可視化してみた
Kengo Toda
講座Java入門
講座Java入門
Tokai University
キメるClojure
キメるClojure
Yoshitaka Kawashima
Introduction to JShell #JavaDayTokyo #jdt_jshell
Introduction to JShell #JavaDayTokyo #jdt_jshell
bitter_fox
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
Akira Shimosako
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Yosuke Mizutani
MySQL日本語利用徹底入門
MySQL日本語利用徹底入門
Mikiya Okuno
JavaでインメモリSQLエンジンを作ってみた
JavaでインメモリSQLエンジンを作ってみた
JustSystems Corporation
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
y_taka_23
Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015
Norito Agetsuma
MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術
yoku0825
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
なおき きしだ
JavaOne2016報告
JavaOne2016報告
なおき きしだ
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
なおき きしだ
Contenu connexe
Tendances
Jvm internal
Jvm internal
Go Tanaka
スレッドダンプの読み方
スレッドダンプの読み方
Funato Takashi
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
YujiSoftware
Heap statsfx analyzer
Heap statsfx analyzer
Yasumasa Suenaga
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
JustSystems Corporation
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える
chonaso
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
Hls friends 20161122.key
Hls friends 20161122.key
Takefumi MIYOSHI
JVMの中身を可視化してみた
JVMの中身を可視化してみた
Kengo Toda
講座Java入門
講座Java入門
Tokai University
キメるClojure
キメるClojure
Yoshitaka Kawashima
Introduction to JShell #JavaDayTokyo #jdt_jshell
Introduction to JShell #JavaDayTokyo #jdt_jshell
bitter_fox
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
Akira Shimosako
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Yosuke Mizutani
MySQL日本語利用徹底入門
MySQL日本語利用徹底入門
Mikiya Okuno
JavaでインメモリSQLエンジンを作ってみた
JavaでインメモリSQLエンジンを作ってみた
JustSystems Corporation
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
y_taka_23
Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015
Norito Agetsuma
MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術
yoku0825
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
なおき きしだ
Tendances
(20)
Jvm internal
Jvm internal
スレッドダンプの読み方
スレッドダンプの読み方
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
Heap statsfx analyzer
Heap statsfx analyzer
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
第六回渋谷Java Java8のJVM監視を考える
第六回渋谷Java Java8のJVM監視を考える
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Hls friends 20161122.key
Hls friends 20161122.key
JVMの中身を可視化してみた
JVMの中身を可視化してみた
講座Java入門
講座Java入門
キメるClojure
キメるClojure
Introduction to JShell #JavaDayTokyo #jdt_jshell
Introduction to JShell #JavaDayTokyo #jdt_jshell
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
MySQL日本語利用徹底入門
MySQL日本語利用徹底入門
JavaでインメモリSQLエンジンを作ってみた
JavaでインメモリSQLエンジンを作ってみた
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015
MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
En vedette
JavaOne2016報告
JavaOne2016報告
なおき きしだ
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
なおき きしだ
乱数のたのしい話
乱数のたのしい話
なおき きしだ
人工知能に何ができないか
人工知能に何ができないか
なおき きしだ
Javaプログラミング入門
Javaプログラミング入門
なおき きしだ
ぼくの実装した最弱のディープラーニング
ぼくの実装した最弱のディープラーニング
なおき きしだ
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
なおき きしだ
Java 9 preview
Java 9 preview
Ivan Krylov
勉強会に参加しないと不幸になる話
勉強会に参加しないと不幸になる話
なおき きしだ
職業人講和20141007
職業人講和20141007
なおき きしだ
Java SE 8 lambdaで変わる プログラミングスタイル
Java SE 8 lambdaで変わる プログラミングスタイル
なおき きしだ
JDK9 Features (Summary, 31/Jul/2015) #JJUG
JDK9 Features (Summary, 31/Jul/2015) #JJUG
Yuji Kubota
ソフトウェア技術者はFPGAをどのように使うか
ソフトウェア技術者はFPGAをどのように使うか
なおき きしだ
オブジェクト指向やめましょう
オブジェクト指向やめましょう
なおき きしだ
JDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjug
Yuji Kubota
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
Yuuki Fukuda
En vedette
(16)
JavaOne2016報告
JavaOne2016報告
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
NetBeansのメモリ使用ログから機械学習できしだが働いてるかどうか判定する
乱数のたのしい話
乱数のたのしい話
人工知能に何ができないか
人工知能に何ができないか
Javaプログラミング入門
Javaプログラミング入門
ぼくの実装した最弱のディープラーニング
ぼくの実装した最弱のディープラーニング
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
だれも教えてくれないJavaの世界。 あと、ぼくが会社員になったわけ。
Java 9 preview
Java 9 preview
勉強会に参加しないと不幸になる話
勉強会に参加しないと不幸になる話
職業人講和20141007
職業人講和20141007
Java SE 8 lambdaで変わる プログラミングスタイル
Java SE 8 lambdaで変わる プログラミングスタイル
JDK9 Features (Summary, 31/Jul/2015) #JJUG
JDK9 Features (Summary, 31/Jul/2015) #JJUG
ソフトウェア技術者はFPGAをどのように使うか
ソフトウェア技術者はFPGAをどのように使うか
オブジェクト指向やめましょう
オブジェクト指向やめましょう
JDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjug
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
Similaire à JavaOne2015報告またはこれからのJava
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
PE-BANK
今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava
Takashi Ito
Java EE 再入門
Java EE 再入門
minazou67
Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)
Appresso Engineering Team
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...
Insight Technology, Inc.
Introduction to GraalVM and Native Image
Introduction to GraalVM and Native Image
Koichi Sakata
Play jjug2012spring
Play jjug2012spring
Takafumi Ikeda
Beginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_study
Toshiaki Maki
〜Apache Geode 入門 Multi-site(WAN)構成によるクラスター連携
〜Apache Geode 入門 Multi-site(WAN)構成によるクラスター連携
Akihiro Kitada
Web技術勉強会 第31回
Web技術勉強会 第31回
龍一 田中
EWD 3トレーニングコース#2 EWD 3の概要
EWD 3トレーニングコース#2 EWD 3の概要
Kiyoshi Sawada
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
Masahiro Nagano
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
Akio Katayama
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
Ryosuke MATSUMOTO
Scalaでのプログラム開発
Scalaでのプログラム開発
Kota Mizushima
Java EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jp
Norito Agetsuma
What is java_se_7
What is java_se_7
TakumiIINO
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
Takakiyo Tanaka
Apache geode at-s1p
Apache geode at-s1p
Masaki Yamakawa
Backlogでの Perlのつかいかた
Backlogでの Perlのつかいかた
Ryuzo Yamamoto
Similaire à JavaOne2015報告またはこれからのJava
(20)
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava
Java EE 再入門
Java EE 再入門
Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...
[db tech showcase Tokyo 2014] D21: Postgres Plus Advanced Serverはここが使える&9.4新機...
Introduction to GraalVM and Native Image
Introduction to GraalVM and Native Image
Play jjug2012spring
Play jjug2012spring
Beginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_study
〜Apache Geode 入門 Multi-site(WAN)構成によるクラスター連携
〜Apache Geode 入門 Multi-site(WAN)構成によるクラスター連携
Web技術勉強会 第31回
Web技術勉強会 第31回
EWD 3トレーニングコース#2 EWD 3の概要
EWD 3トレーニングコース#2 EWD 3の概要
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
Scalaでのプログラム開発
Scalaでのプログラム開発
Java EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jp
What is java_se_7
What is java_se_7
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
Apache geode at-s1p
Apache geode at-s1p
Backlogでの Perlのつかいかた
Backlogでの Perlのつかいかた
Plus de なおき きしだ
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
なおき きしだ
GraalVM at Fukuoka LT
GraalVM at Fukuoka LT
なおき きしだ
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
なおき きしだ
GraalVMについて
GraalVMについて
なおき きしだ
VRカメラが楽しいのでブラウザで見たくなった話
VRカメラが楽しいのでブラウザで見たくなった話
なおき きしだ
最近のJava事情
最近のJava事情
なおき きしだ
怖いコードの話 2018/7/18
怖いコードの話 2018/7/18
なおき きしだ
Java新機能観察日記 - JJUGナイトセミナー
Java新機能観察日記 - JJUGナイトセミナー
なおき きしだ
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
なおき きしだ
これからのコンピューティングの変化とこれからのプログラミング at 広島
これからのコンピューティングの変化とこれからのプログラミング at 広島
なおき きしだ
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 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 Spr
なおき きしだ
New 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言語と実行環境
これからのJava言語と実行環境
なおき きしだ
JavaOne報告2017
JavaOne報告2017
なおき きしだ
JavaOne2017で感じた、Javaのいまと未来 in 大阪
JavaOne2017で感じた、Javaのいまと未来 in 大阪
なおき きしだ
GPUをJavaで使う話(Java Casual Talks #1)
GPUをJavaで使う話(Java Casual Talks #1)
なおき きしだ
Plus de なおき きしだ
(19)
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
GraalVMの紹介とTruffleでPHPぽい言語を実装したら爆速だった話
GraalVM at Fukuoka LT
GraalVM at Fukuoka LT
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
これからのコンピューティングの変化とこれからのプログラミング in 福岡 2018/12/8
GraalVMについて
GraalVMについて
VRカメラが楽しいのでブラウザで見たくなった話
VRカメラが楽しいのでブラウザで見たくなった話
最近のJava事情
最近のJava事情
怖いコードの話 2018/7/18
怖いコードの話 2018/7/18
Java新機能観察日記 - JJUGナイトセミナー
Java新機能観察日記 - JJUGナイトセミナー
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
プログラマになるためになにを勉強するか at 九州学生エンジニアLT大会
これからのコンピューティングの変化とこれからのプログラミング at 広島
これからのコンピューティングの変化とこれからのプログラミング at 広島
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 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 Spr
New 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言語と実行環境
これからのJava言語と実行環境
JavaOne報告2017
JavaOne報告2017
JavaOne2017で感じた、Javaのいまと未来 in 大阪
JavaOne2017で感じた、Javaのいまと未来 in 大阪
GPUをJavaで使う話(Java Casual Talks #1)
GPUをJavaで使う話(Java Casual Talks #1)
JavaOne2015報告またはこれからのJava
1.
JavaOne2015報告 またはこれからのJava 2015年12月16日 きしだ なおき
2.
今日のおはなし ● Javaの基本用語 ● Java
SE 9 ● Java EE 8
3.
Javaの基本用語 ● Java SE ●
Java EE ● JDK ● OpenJDK ● JSR ● JEP
4.
Java SE ● Java
Standard Edition ● Javaプラットフォームの仕様 – Java実行環境 – バイトコード – 言語仕様 – 標準ライブラリ – GUI
5.
Java EE ● Java
Enterprise Edition ● サーバー向けライブラリ仕様 – Web – トランザクション – セキュリティ – メッセージング – 管理機能
6.
JDK ● Java Development
Kit ● OracleのJava実装 – コンパイラ、VM、API、その他ツール ● Java SEは仕様、JDKは実装 – ただし、JDKのどこまでがJava SE仕様かはあいまい – JavaFXはJava SEに含まれる?
7.
OpenJDK ● オープンソースで開発されるJDK ● 現在のJava
SEはOpenJDKとして機能が実装さ れる ● クラスパス例外付GPL v2 – 標準APIに依存するソースコードにGPLが 波及しない
8.
JEP ● JDK Enhancement
Proposal ● JDK改善提案 ● JDKはJEPの集まり
9.
JSR ● Java Specification
Request ● Javaの標準仕様 ● Specification Leadsを中心に、Expert Groupが作業を行う ● Java EEはJSRの集まり – Java EE自体JSRで定義されている ● 例 – JSR-310 Date and Time API – JSR-366 Java Platform, Enterprise Edition 8 Specification
10.
Java SE 9 ●
ロードマップ ● REPL ● JavaDoc ● 言語の変更 ● ライブラリの小変更 ● Flow API ● HttpClient ● Module ● Unsafe ● 実行環境 ● 画像処理
11.
Java SE 9
ロードマップ ● 2016/05/26 Feature Complete ● 2016/09/01 Rampdown Start ● 2017/01/26 Final Release Candidate ● 2017/03/23 General Availability
12.
REPL(Read-Eval-Print Loop) ● JShellコマンド ●
学習のハードルをさげる ● メソッドの試行を楽に – IDEが対応すれば、書いてすぐ試せる
13.
JavaDoc ● HTML5対応 ● 検索
14.
言語の変更 ● 匿名クラスでのダイアモンド推論 ● try-with-resource前の初期化
15.
匿名クラスでのダイアモンド推論 ● 匿名クラスでもダイアモンド演算子が使える ようになる Map<String, String>
params = new HashMap<String, String>(){ { put(“a”, “123”); put(“b”, “456”); } } Map<String, String> params = new HashMap<>(){ { put(“a”, “123”); put(“b”, “456”); } }
16.
try-with-resource前の初期化 ● try-with-resourceの前で初期化が可能 final Resource
r = new Resource(); try(r){ ... } use(r); final Resource r = new Resource(); try(Resource r2 = r){ ... } use(r);
17.
ライブラリの変更 ● Stream ● Optional.stream() ●
コレクションのBuilder
18.
Streamの変更 ● Stream.takeWhile ● Stream.dropWhile ●
Stream.ofNullable
19.
Optional.stream() ● Optional.stream() Stream.of( Optional.of(“aa”), Optional.empty(), Optional.of(“bb”)) .flatMap(Optional::stream) .collect(Collectors.toList());
20.
コレクションのBuilder ● List – List.of(e1,
e2, e3, ...) ● Set – Set.of(e1, e2, e3, ...) ● Map – Map.of(k1, v1, k2, v2, k3, v3, ...) – Map.of(entity(k1, v1), entity(k2, v2), ...)
21.
コレクションのBuilderの注意 ● 実装はprivate ● immutable ●
nullは入れられない ● setやmapのキーで重複があると例外 ● setやmapの順序は不定 ● メモリ効率のよい実装
22.
Flow API ● JEP
266 ● Reactive Stream ● Push Style API – CompletableFuture ・・・ continuation-style – Stream ・・・ pull-style ● java.util.concurrent.Flow – Publisher/Subscriber/Processor/Subscription
23.
HttpClient ● HTTP/2対応 ● java.net.httpパッケージ ●
シンプルなAPI – HttpClient/HttpRequest/HttpResponse
24.
HttpURLConnection ● 複数プロトコルに対応したURLConnectionの 一種だった – FTP/GOPHER... ●
抽象的すぎて使うのが面倒 ● HTTP/1.1に対応
25.
HTTP/2 ● HTTP/1.1の拡張 ● SPDYをベース ●
1つのコネクションで複数のリクエスト ● サーバーPush ● ヘッダ圧縮
26.
基本的な使い方 HttpResponse resp =
HttpRequest .create(new URI(“http://www.example.com/”)) .GET() .response(); if(resp.statusCode() == 200){ String responseBody = resp.body(HttpResponse.asString()); System.out.println(responseBody); }
27.
レスポンス処理 ● HttpResponse.asString() ● HttpResponse.asFile(path) ●
HttpResponse.asByteArray()
28.
POST HttpResponse resp =
HttpRequest .create(new URI(“http://www.example.com/”)) .body(HttpRequest.fromString(“param1=1,param2=2”)) .POST() .response()
29.
POSTデータ ● fromString() ● fromFile(path) ●
fromInputStream(input) ● fromByteArray(data)
30.
非同期リクエスト ● CompletableFuture CompletableFuture<HttpResponse> cf
= HttpRequest.create(uri) .GET() .responseAsync(); HttpResponse resp = cf.join();
31.
CompletableFuture HttpRequest.create(uri) .GET() .responseAsync(); .thenApplyAsync((HttpResponse resp) ->
{ if(resp.statusCode() = 200){ return resp.body(asFile(path)); }else { throw new SomeException(); } }); // output is CompletableFuture<Path>
32.
サーバーPush CompletableFuture<Map<URI, PATH>> cf
= HttpRequest.create(uri) .version(Version.HTTP_2) .GET() .multiResponseAsync( HttpResponse.multiFile(“/usr/dest”); Map<URI, Path> results = cf.join();
33.
Module ● Project Jigsaw ●
モジュール定義 ● JDKのモジュール分解
34.
これまでのJavaの構造 ● package – class
& interface ● field & method
35.
Javaの構造 ● module – package ●
class & interface – field & method
36.
今までの可視性 ● public ● protected ●
<package> ● private
37.
これからの可視性 ● すべてに対してpublic ● 特定のモジュールに対してpublic ●
モジュール内でpublic ● protected ● <package> ● private
38.
モジュール定義 ● module-info.java // src/kishida/util/module-info.java module
kishida.util { exports kishida.util; } kishida.util ○kishida.util ×kishida.util.internal
39.
依存 ● requires module kishida.util
{ exports kishida.util; } kishida.util module kishida.app { requires kishida.util; } kishida.app
40.
依存の伝播 ● 孫依存のモジュール module kishida.util
{ exports kishida.util; requires kishida.logging; } module kishida.app { requires kishida.util; requires kishida.logging; } module kishida.logging { exports kishida.logging; } 面倒
41.
依存の伝播 ● requires public module
kishida.util { exports kishida.util; requires public kishida.logging; } module kishida.app { requires kishida.util; } module kishida.logging { exports kishida.logging; }
42.
リフレクション ● setAccessible(true)も効かない
43.
Unsafe ● sun.misc.Unsafe ● メモリの直接アクセスなどを行う ●
モジュール化で行き所がなくなる
44.
Unsafe 利用例 Unsafe 並列化プリミティブ Unsafe.compareAndSwap* シリアライズ
Unsafe.allocateInstance メモリ管理 Unsafe.allocate/freeMemory JVM外とのやりとり Unsafe.get*/set*
45.
Unsafeを利用している製品 ● Cassandra/Ehcache/HBase/Hadoop Hibernate/JRuby/Netty/Scala/Spring...
46.
Unsafeの廃止 ● Java 9でメンテナンス停止 ●
Java $N-1で完全置き換え、Deprecate ● Java $Nで廃止
47.
Unsafeの代替 利用例 代替 並列化プリミティブ JEP
193 Variable Handles シリアライズ JEP 187 Serialization メモリ管理 Project Panama Project Valhalla Arrays 2.0 JVM外とのやりとり Project Panama JEP 191 FFI
48.
実行環境 ● G1GCのデフォルト化 ● ログフォーマットの統一
49.
画像処理 ● マルチ解像度対応のImage ● フォントレンダリングの変更
50.
Java EE 8 ●
ロードマップ ● Servlet 4.0(JSR 369) ● CDI 2.0(JSR 365) ● JAX-RS 2.1(JSR 370) ● MVC 1.0(JSR 371) ● JSON – JSON Binding 1.0(JSR 367) – JSON-P 1.1(JSR 374)
51.
Java EE 8
ロードマップ ● 2015 Q4 Early Draft ● 2016 Q1 Public Review ● 2016 Q3 Proposed Final Draft ● 2017 H1 Final Release
52.
Servlet 4.0(JSR 369) ●
HTTP/2対応 ● リクエスト・レスポンス多重化 ● ストリームの優先順位 ● サーバーPush
53.
CDI 2.0(JSR 365) ●
CDI for Java SE ● モジュール化 ● 非同期イベント
54.
CDI for Java
SE CDIProvider provider = CDI.getCDIProvider(); CDI<Object> cdi = provider.initialize(); MyBean bean = cdi.select(MyBean.class).get(); bean.some(); cdi.shutdown(); ● Java SEでもCDIを ● テストが容易に
55.
モジュール化 ● CDI light –
Basic DI – Producers ● Full CDI – light – Events – Interceptor & Decorator
56.
4つのモジュール ● CDI light
for Java SE ● CDI full for Java SE ● CDI light for Java EE ● CDI full for Java EE
57.
非同期イベント @Inject Event<Payload> event; public void
someLogic() { event.fireAync(new Payload()); }
58.
JAX-RS 2.1(JSR 370) ●
HTTP/2対応 ● Server Sent Event(SSE)
59.
MVC 1.0(JSR 371) ●
アクションベース ● JAX-RSをベースに @Path(“hello”) public class HelloController{ @GET @Controller public String hello(){ someProc(); return “hello.jsp”; } }
60.
JSON ● JSON Binding(JSON-B/JSR
367) ● JSON Processing(JSON-P/JSR 374)
61.
JSON Binding 1.0(JSR
367) ● JavaオブジェクトとJSONのバインディング ● JsonBuilder Person p = new Person(); p.setName(“きしだ”); p.setAddress(“ふくおか”); p.setTwitter(“@kis”); Jsonb jsonb = JsonbBuilder.create(); jsonb.toJson(p, System.out);
62.
JSON-P 1.1(JSR 374) ●
JsonObjectやJsonArrayの操作 – JSON Pointer – JSON Patch ● Java 8 Streamへの対応
63.
JSONの構築 ● createObjectBuilder ● createArrayBuilder JsonArray
contacts=Json.createArrayBuilder() .add(Json.createObjectBuilder() .add("name","Duke") .add("gender","M") .add("phones",Json.createObjectBuilder() .add("home","650-123-4567") .add("mobile","650-234-5678"))) .add(Json.createObjectBuilder() .add("name","Jane") .add("gender","F") .add("phones",Json.createObjectBuilder() .add("mobile","707-555-9999"))) .build();
64.
JSON Pointer ● RFC
6901 [ { "name":"Duke", "gender":"M", "phones":{ "home":"650-123-4567", "mobile":"650-555-1212"}}, { "name":"Jane", "gender":"F", "phones":{ "mobile":"707-555-9999"}} ] JsonPointer p = new JsonPointer("/0/phones/mobile"); contacts = p.replace(contacts, "650-555-1212");
65.
JSON Patch ● RFC
6902 ● add, replace, remove, mode, copy, test ● PatchはJSONで記述 [ { “op”:”replace”, “path”:”/0/phones/modile”, “value”:”650-111-2222” }, { “op”:”remove”, “path”:”/1” } ]
66.
JsonPatchBuilder JsonPatchBuilder builder =
new JsonPatchBuilder(); JsonArray patch = builder.replace("0/phones/mobile", "650-111-2222") .remove("/1") .build(); JsonArray result = patch.apply(contacts);
67.
Stream対応 JsonArray contacts =
...; List<String> femaleNames = contacts.getValuesAs(JsonObject.class).stream() .filter(x->"F".equals(x.getString("gender"))) .map(x->(x.getString("name")) .collect(Collectors.toList());
68.
JsonCollector JsonArray contacts =
...; JsonArray femaleNames = contacts.getValuesAs(JsonObject.class).stream() .filter(x->"F".equals(x.getString("gender"))) .map(x->(x.getString("name")) .collect(JsonCollectors.toJsonArray());
Télécharger maintenant