Top Banner
Copyright©2017 NTT corp. All Rights Reserved. Java 9 and Future 2017年10月21日 NTT OSSセンタ 久保田 祐史
29

Java 9 and Future #jjug

Jan 21, 2018

Download

Technology

Yuji Kubota
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Java 9 and Future #jjug

Copyrightcopy2017 NTT corp All Rights Reserved

Java 9 and Future

2017年10月21日NTT OSSセンタ 久保田 祐史

2Copyrightcopy2017 NTT corp All Rights Reserved

bull本セッション内容は公開されます

bull資料はダウンロードできますざっくりですがノートに原稿も記載しています

bull httpswwwslidesharenetYujiKubota

bull再アップロードできなくなったので一覧からhellip

bullデモに利用したコードは実行方法とあわせて公開しています

bull githubcomykubotajigsaw-sample_jp

bullぜひTwitterで JJUG を付けて呟いて下さい

bull難聴者の方などが理解する助けになります

情報保障

3Copyrightcopy2017 NTT corp All Rights Reserved

bullKUBOTA Yuji (sugarlife)

bull Java (OpenJDK) サポート担当

bullOpenJDKバリバリ利用中

bullOpenJDKコントリビュートしたりJavaOneやJJUGで喋ったり

bullWEB+DB v101で記事書きました

bullNTT OSSセンタ

bullNTTグループのOSS活用を支える部隊

bullKernel PostgreSQL Pacemaker Tomcat OpenJDK and so on

bull各種コントリビューター揃えております

Who I am

4Copyrightcopy2017 NTT corp All Rights Reserved

bull2017921 リリース

Java 9

5Copyrightcopy2017 NTT corp All Rights Reserved

bull1ヵ月が経ちましたがhellip

bullプロダクションで使っている人

bull手元で使ってみた人

bullJava 9について調べてみた人

Java 9

6Copyrightcopy2017 NTT corp All Rights Reserved

bullJava 9の調べ方

bullJava 9のメイン新機能を少し詳しく

bullデモンストレーション

bull次のJavaをチラ見

bullJava 183

今日お話しすること

7Copyrightcopy2017 NTT corp All Rights Reserved

bullJava Enhancement Proposal(JEP)を見る

bullhttpopenjdkjavanetprojectsjdk9

bullbugzillaで検索 (issuetype=JEP)

追加された機能の確認方法

8Copyrightcopy2017 NTT corp All Rights Reserved

bullMigration Guideを読む

bullhttpsdocsoraclecomjavase9migratetochtm

bullメジャーバージョンリリース時にOracle社より提供されている

bull基本的なマイグレーション手順や移行時に問題となりそうな大きな非互換性が紹介されている

移行する際に注意するポイントは

9Copyrightcopy2017 NTT corp All Rights Reserved

全体的な解説

10Copyrightcopy2017 NTT corp All Rights Reserved

全体的な解説

11Copyrightcopy2017 NTT corp All Rights Reserved

bullSpecificationやRelease Noteを読む

bull JSR 379(Java SE 9) API Specification Change Summary

bullbugzillaで検索 (labels=release-note)

より細かく見る(サポートレベル)

12Copyrightcopy2017 NTT corp All Rights Reserved

トラブルシュータは必須

13Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メリットの一部

14Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メイン新機能

15Copyrightcopy2017 NTT corp All Rights Reserved

Demonstration

16Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

次のJava

17Copyrightcopy2017 NTT corp All Rights Reserved

bullJDK Project

bull httpopenjdkjavanetprojectsjdk

どこで管理

18Copyrightcopy2017 NTT corp All Rights Reserved

スケジュールと機能

19Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

bull JEP 286 Local-Variable Type Inference

bullProject Amber

bullFuture

bullProject Panama

bullProject Valhalla

bullProject Loom (投票中)

bullProject Metropolis (投票中)

bullリポジトリやバイナリ(EA)は独立予定

bullそれぞれで試せる予定JEP286はjdk10でも

新機能(予定)

20Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

URL url = new URL(httpjavanet)URLConnection conn = urlopenConnection()Scanner scanner =

new Scanner(conngetInputStream())

21Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

var url = new URL(httpjavanet)var conn = urlopenConnection()var scanner =

new Scanner(conngetInputStream())

22Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = unknownif (obj instanceof Integer) int i = (Integer) objformatted = Stringformat(int d i)

else if (obj instanceof Byte) byte b = (Byte) inputformatted = Stringformat(byte b b)

else if (obj instanceof Long) elseformatted = Stringformat(Unknown s obj)

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 2: Java 9 and Future #jjug

2Copyrightcopy2017 NTT corp All Rights Reserved

bull本セッション内容は公開されます

bull資料はダウンロードできますざっくりですがノートに原稿も記載しています

bull httpswwwslidesharenetYujiKubota

bull再アップロードできなくなったので一覧からhellip

bullデモに利用したコードは実行方法とあわせて公開しています

bull githubcomykubotajigsaw-sample_jp

bullぜひTwitterで JJUG を付けて呟いて下さい

bull難聴者の方などが理解する助けになります

情報保障

3Copyrightcopy2017 NTT corp All Rights Reserved

bullKUBOTA Yuji (sugarlife)

bull Java (OpenJDK) サポート担当

bullOpenJDKバリバリ利用中

bullOpenJDKコントリビュートしたりJavaOneやJJUGで喋ったり

bullWEB+DB v101で記事書きました

bullNTT OSSセンタ

bullNTTグループのOSS活用を支える部隊

bullKernel PostgreSQL Pacemaker Tomcat OpenJDK and so on

bull各種コントリビューター揃えております

Who I am

4Copyrightcopy2017 NTT corp All Rights Reserved

bull2017921 リリース

Java 9

5Copyrightcopy2017 NTT corp All Rights Reserved

bull1ヵ月が経ちましたがhellip

bullプロダクションで使っている人

bull手元で使ってみた人

bullJava 9について調べてみた人

Java 9

6Copyrightcopy2017 NTT corp All Rights Reserved

bullJava 9の調べ方

bullJava 9のメイン新機能を少し詳しく

bullデモンストレーション

bull次のJavaをチラ見

bullJava 183

今日お話しすること

7Copyrightcopy2017 NTT corp All Rights Reserved

bullJava Enhancement Proposal(JEP)を見る

bullhttpopenjdkjavanetprojectsjdk9

bullbugzillaで検索 (issuetype=JEP)

追加された機能の確認方法

8Copyrightcopy2017 NTT corp All Rights Reserved

bullMigration Guideを読む

bullhttpsdocsoraclecomjavase9migratetochtm

bullメジャーバージョンリリース時にOracle社より提供されている

bull基本的なマイグレーション手順や移行時に問題となりそうな大きな非互換性が紹介されている

移行する際に注意するポイントは

9Copyrightcopy2017 NTT corp All Rights Reserved

全体的な解説

10Copyrightcopy2017 NTT corp All Rights Reserved

全体的な解説

11Copyrightcopy2017 NTT corp All Rights Reserved

bullSpecificationやRelease Noteを読む

bull JSR 379(Java SE 9) API Specification Change Summary

bullbugzillaで検索 (labels=release-note)

より細かく見る(サポートレベル)

12Copyrightcopy2017 NTT corp All Rights Reserved

トラブルシュータは必須

13Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メリットの一部

14Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メイン新機能

15Copyrightcopy2017 NTT corp All Rights Reserved

Demonstration

16Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

次のJava

17Copyrightcopy2017 NTT corp All Rights Reserved

bullJDK Project

bull httpopenjdkjavanetprojectsjdk

どこで管理

18Copyrightcopy2017 NTT corp All Rights Reserved

スケジュールと機能

19Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

bull JEP 286 Local-Variable Type Inference

bullProject Amber

bullFuture

bullProject Panama

bullProject Valhalla

bullProject Loom (投票中)

bullProject Metropolis (投票中)

bullリポジトリやバイナリ(EA)は独立予定

bullそれぞれで試せる予定JEP286はjdk10でも

新機能(予定)

20Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

URL url = new URL(httpjavanet)URLConnection conn = urlopenConnection()Scanner scanner =

new Scanner(conngetInputStream())

21Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

var url = new URL(httpjavanet)var conn = urlopenConnection()var scanner =

new Scanner(conngetInputStream())

22Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = unknownif (obj instanceof Integer) int i = (Integer) objformatted = Stringformat(int d i)

else if (obj instanceof Byte) byte b = (Byte) inputformatted = Stringformat(byte b b)

else if (obj instanceof Long) elseformatted = Stringformat(Unknown s obj)

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 3: Java 9 and Future #jjug

3Copyrightcopy2017 NTT corp All Rights Reserved

bullKUBOTA Yuji (sugarlife)

bull Java (OpenJDK) サポート担当

bullOpenJDKバリバリ利用中

bullOpenJDKコントリビュートしたりJavaOneやJJUGで喋ったり

bullWEB+DB v101で記事書きました

bullNTT OSSセンタ

bullNTTグループのOSS活用を支える部隊

bullKernel PostgreSQL Pacemaker Tomcat OpenJDK and so on

bull各種コントリビューター揃えております

Who I am

4Copyrightcopy2017 NTT corp All Rights Reserved

bull2017921 リリース

Java 9

5Copyrightcopy2017 NTT corp All Rights Reserved

bull1ヵ月が経ちましたがhellip

bullプロダクションで使っている人

bull手元で使ってみた人

bullJava 9について調べてみた人

Java 9

6Copyrightcopy2017 NTT corp All Rights Reserved

bullJava 9の調べ方

bullJava 9のメイン新機能を少し詳しく

bullデモンストレーション

bull次のJavaをチラ見

bullJava 183

今日お話しすること

7Copyrightcopy2017 NTT corp All Rights Reserved

bullJava Enhancement Proposal(JEP)を見る

bullhttpopenjdkjavanetprojectsjdk9

bullbugzillaで検索 (issuetype=JEP)

追加された機能の確認方法

8Copyrightcopy2017 NTT corp All Rights Reserved

bullMigration Guideを読む

bullhttpsdocsoraclecomjavase9migratetochtm

bullメジャーバージョンリリース時にOracle社より提供されている

bull基本的なマイグレーション手順や移行時に問題となりそうな大きな非互換性が紹介されている

移行する際に注意するポイントは

9Copyrightcopy2017 NTT corp All Rights Reserved

全体的な解説

10Copyrightcopy2017 NTT corp All Rights Reserved

全体的な解説

11Copyrightcopy2017 NTT corp All Rights Reserved

bullSpecificationやRelease Noteを読む

bull JSR 379(Java SE 9) API Specification Change Summary

bullbugzillaで検索 (labels=release-note)

より細かく見る(サポートレベル)

12Copyrightcopy2017 NTT corp All Rights Reserved

トラブルシュータは必須

13Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メリットの一部

14Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メイン新機能

15Copyrightcopy2017 NTT corp All Rights Reserved

Demonstration

16Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

次のJava

17Copyrightcopy2017 NTT corp All Rights Reserved

bullJDK Project

bull httpopenjdkjavanetprojectsjdk

どこで管理

18Copyrightcopy2017 NTT corp All Rights Reserved

スケジュールと機能

19Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

bull JEP 286 Local-Variable Type Inference

bullProject Amber

bullFuture

bullProject Panama

bullProject Valhalla

bullProject Loom (投票中)

bullProject Metropolis (投票中)

bullリポジトリやバイナリ(EA)は独立予定

bullそれぞれで試せる予定JEP286はjdk10でも

新機能(予定)

20Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

URL url = new URL(httpjavanet)URLConnection conn = urlopenConnection()Scanner scanner =

new Scanner(conngetInputStream())

21Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

var url = new URL(httpjavanet)var conn = urlopenConnection()var scanner =

new Scanner(conngetInputStream())

22Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = unknownif (obj instanceof Integer) int i = (Integer) objformatted = Stringformat(int d i)

else if (obj instanceof Byte) byte b = (Byte) inputformatted = Stringformat(byte b b)

else if (obj instanceof Long) elseformatted = Stringformat(Unknown s obj)

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 4: Java 9 and Future #jjug

4Copyrightcopy2017 NTT corp All Rights Reserved

bull2017921 リリース

Java 9

5Copyrightcopy2017 NTT corp All Rights Reserved

bull1ヵ月が経ちましたがhellip

bullプロダクションで使っている人

bull手元で使ってみた人

bullJava 9について調べてみた人

Java 9

6Copyrightcopy2017 NTT corp All Rights Reserved

bullJava 9の調べ方

bullJava 9のメイン新機能を少し詳しく

bullデモンストレーション

bull次のJavaをチラ見

bullJava 183

今日お話しすること

7Copyrightcopy2017 NTT corp All Rights Reserved

bullJava Enhancement Proposal(JEP)を見る

bullhttpopenjdkjavanetprojectsjdk9

bullbugzillaで検索 (issuetype=JEP)

追加された機能の確認方法

8Copyrightcopy2017 NTT corp All Rights Reserved

bullMigration Guideを読む

bullhttpsdocsoraclecomjavase9migratetochtm

bullメジャーバージョンリリース時にOracle社より提供されている

bull基本的なマイグレーション手順や移行時に問題となりそうな大きな非互換性が紹介されている

移行する際に注意するポイントは

9Copyrightcopy2017 NTT corp All Rights Reserved

全体的な解説

10Copyrightcopy2017 NTT corp All Rights Reserved

全体的な解説

11Copyrightcopy2017 NTT corp All Rights Reserved

bullSpecificationやRelease Noteを読む

bull JSR 379(Java SE 9) API Specification Change Summary

bullbugzillaで検索 (labels=release-note)

より細かく見る(サポートレベル)

12Copyrightcopy2017 NTT corp All Rights Reserved

トラブルシュータは必須

13Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メリットの一部

14Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メイン新機能

15Copyrightcopy2017 NTT corp All Rights Reserved

Demonstration

16Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

次のJava

17Copyrightcopy2017 NTT corp All Rights Reserved

bullJDK Project

bull httpopenjdkjavanetprojectsjdk

どこで管理

18Copyrightcopy2017 NTT corp All Rights Reserved

スケジュールと機能

19Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

bull JEP 286 Local-Variable Type Inference

bullProject Amber

bullFuture

bullProject Panama

bullProject Valhalla

bullProject Loom (投票中)

bullProject Metropolis (投票中)

bullリポジトリやバイナリ(EA)は独立予定

bullそれぞれで試せる予定JEP286はjdk10でも

新機能(予定)

20Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

URL url = new URL(httpjavanet)URLConnection conn = urlopenConnection()Scanner scanner =

new Scanner(conngetInputStream())

21Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

var url = new URL(httpjavanet)var conn = urlopenConnection()var scanner =

new Scanner(conngetInputStream())

22Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = unknownif (obj instanceof Integer) int i = (Integer) objformatted = Stringformat(int d i)

else if (obj instanceof Byte) byte b = (Byte) inputformatted = Stringformat(byte b b)

else if (obj instanceof Long) elseformatted = Stringformat(Unknown s obj)

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 5: Java 9 and Future #jjug

5Copyrightcopy2017 NTT corp All Rights Reserved

bull1ヵ月が経ちましたがhellip

bullプロダクションで使っている人

bull手元で使ってみた人

bullJava 9について調べてみた人

Java 9

6Copyrightcopy2017 NTT corp All Rights Reserved

bullJava 9の調べ方

bullJava 9のメイン新機能を少し詳しく

bullデモンストレーション

bull次のJavaをチラ見

bullJava 183

今日お話しすること

7Copyrightcopy2017 NTT corp All Rights Reserved

bullJava Enhancement Proposal(JEP)を見る

bullhttpopenjdkjavanetprojectsjdk9

bullbugzillaで検索 (issuetype=JEP)

追加された機能の確認方法

8Copyrightcopy2017 NTT corp All Rights Reserved

bullMigration Guideを読む

bullhttpsdocsoraclecomjavase9migratetochtm

bullメジャーバージョンリリース時にOracle社より提供されている

bull基本的なマイグレーション手順や移行時に問題となりそうな大きな非互換性が紹介されている

移行する際に注意するポイントは

9Copyrightcopy2017 NTT corp All Rights Reserved

全体的な解説

10Copyrightcopy2017 NTT corp All Rights Reserved

全体的な解説

11Copyrightcopy2017 NTT corp All Rights Reserved

bullSpecificationやRelease Noteを読む

bull JSR 379(Java SE 9) API Specification Change Summary

bullbugzillaで検索 (labels=release-note)

より細かく見る(サポートレベル)

12Copyrightcopy2017 NTT corp All Rights Reserved

トラブルシュータは必須

13Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メリットの一部

14Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メイン新機能

15Copyrightcopy2017 NTT corp All Rights Reserved

Demonstration

16Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

次のJava

17Copyrightcopy2017 NTT corp All Rights Reserved

bullJDK Project

bull httpopenjdkjavanetprojectsjdk

どこで管理

18Copyrightcopy2017 NTT corp All Rights Reserved

スケジュールと機能

19Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

bull JEP 286 Local-Variable Type Inference

bullProject Amber

bullFuture

bullProject Panama

bullProject Valhalla

bullProject Loom (投票中)

bullProject Metropolis (投票中)

bullリポジトリやバイナリ(EA)は独立予定

bullそれぞれで試せる予定JEP286はjdk10でも

新機能(予定)

20Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

URL url = new URL(httpjavanet)URLConnection conn = urlopenConnection()Scanner scanner =

new Scanner(conngetInputStream())

21Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

var url = new URL(httpjavanet)var conn = urlopenConnection()var scanner =

new Scanner(conngetInputStream())

22Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = unknownif (obj instanceof Integer) int i = (Integer) objformatted = Stringformat(int d i)

else if (obj instanceof Byte) byte b = (Byte) inputformatted = Stringformat(byte b b)

else if (obj instanceof Long) elseformatted = Stringformat(Unknown s obj)

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 6: Java 9 and Future #jjug

6Copyrightcopy2017 NTT corp All Rights Reserved

bullJava 9の調べ方

bullJava 9のメイン新機能を少し詳しく

bullデモンストレーション

bull次のJavaをチラ見

bullJava 183

今日お話しすること

7Copyrightcopy2017 NTT corp All Rights Reserved

bullJava Enhancement Proposal(JEP)を見る

bullhttpopenjdkjavanetprojectsjdk9

bullbugzillaで検索 (issuetype=JEP)

追加された機能の確認方法

8Copyrightcopy2017 NTT corp All Rights Reserved

bullMigration Guideを読む

bullhttpsdocsoraclecomjavase9migratetochtm

bullメジャーバージョンリリース時にOracle社より提供されている

bull基本的なマイグレーション手順や移行時に問題となりそうな大きな非互換性が紹介されている

移行する際に注意するポイントは

9Copyrightcopy2017 NTT corp All Rights Reserved

全体的な解説

10Copyrightcopy2017 NTT corp All Rights Reserved

全体的な解説

11Copyrightcopy2017 NTT corp All Rights Reserved

bullSpecificationやRelease Noteを読む

bull JSR 379(Java SE 9) API Specification Change Summary

bullbugzillaで検索 (labels=release-note)

より細かく見る(サポートレベル)

12Copyrightcopy2017 NTT corp All Rights Reserved

トラブルシュータは必須

13Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メリットの一部

14Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メイン新機能

15Copyrightcopy2017 NTT corp All Rights Reserved

Demonstration

16Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

次のJava

17Copyrightcopy2017 NTT corp All Rights Reserved

bullJDK Project

bull httpopenjdkjavanetprojectsjdk

どこで管理

18Copyrightcopy2017 NTT corp All Rights Reserved

スケジュールと機能

19Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

bull JEP 286 Local-Variable Type Inference

bullProject Amber

bullFuture

bullProject Panama

bullProject Valhalla

bullProject Loom (投票中)

bullProject Metropolis (投票中)

bullリポジトリやバイナリ(EA)は独立予定

bullそれぞれで試せる予定JEP286はjdk10でも

新機能(予定)

20Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

URL url = new URL(httpjavanet)URLConnection conn = urlopenConnection()Scanner scanner =

new Scanner(conngetInputStream())

21Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

var url = new URL(httpjavanet)var conn = urlopenConnection()var scanner =

new Scanner(conngetInputStream())

22Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = unknownif (obj instanceof Integer) int i = (Integer) objformatted = Stringformat(int d i)

else if (obj instanceof Byte) byte b = (Byte) inputformatted = Stringformat(byte b b)

else if (obj instanceof Long) elseformatted = Stringformat(Unknown s obj)

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 7: Java 9 and Future #jjug

7Copyrightcopy2017 NTT corp All Rights Reserved

bullJava Enhancement Proposal(JEP)を見る

bullhttpopenjdkjavanetprojectsjdk9

bullbugzillaで検索 (issuetype=JEP)

追加された機能の確認方法

8Copyrightcopy2017 NTT corp All Rights Reserved

bullMigration Guideを読む

bullhttpsdocsoraclecomjavase9migratetochtm

bullメジャーバージョンリリース時にOracle社より提供されている

bull基本的なマイグレーション手順や移行時に問題となりそうな大きな非互換性が紹介されている

移行する際に注意するポイントは

9Copyrightcopy2017 NTT corp All Rights Reserved

全体的な解説

10Copyrightcopy2017 NTT corp All Rights Reserved

全体的な解説

11Copyrightcopy2017 NTT corp All Rights Reserved

bullSpecificationやRelease Noteを読む

bull JSR 379(Java SE 9) API Specification Change Summary

bullbugzillaで検索 (labels=release-note)

より細かく見る(サポートレベル)

12Copyrightcopy2017 NTT corp All Rights Reserved

トラブルシュータは必須

13Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メリットの一部

14Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メイン新機能

15Copyrightcopy2017 NTT corp All Rights Reserved

Demonstration

16Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

次のJava

17Copyrightcopy2017 NTT corp All Rights Reserved

bullJDK Project

bull httpopenjdkjavanetprojectsjdk

どこで管理

18Copyrightcopy2017 NTT corp All Rights Reserved

スケジュールと機能

19Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

bull JEP 286 Local-Variable Type Inference

bullProject Amber

bullFuture

bullProject Panama

bullProject Valhalla

bullProject Loom (投票中)

bullProject Metropolis (投票中)

bullリポジトリやバイナリ(EA)は独立予定

bullそれぞれで試せる予定JEP286はjdk10でも

新機能(予定)

20Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

URL url = new URL(httpjavanet)URLConnection conn = urlopenConnection()Scanner scanner =

new Scanner(conngetInputStream())

21Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

var url = new URL(httpjavanet)var conn = urlopenConnection()var scanner =

new Scanner(conngetInputStream())

22Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = unknownif (obj instanceof Integer) int i = (Integer) objformatted = Stringformat(int d i)

else if (obj instanceof Byte) byte b = (Byte) inputformatted = Stringformat(byte b b)

else if (obj instanceof Long) elseformatted = Stringformat(Unknown s obj)

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 8: Java 9 and Future #jjug

8Copyrightcopy2017 NTT corp All Rights Reserved

bullMigration Guideを読む

bullhttpsdocsoraclecomjavase9migratetochtm

bullメジャーバージョンリリース時にOracle社より提供されている

bull基本的なマイグレーション手順や移行時に問題となりそうな大きな非互換性が紹介されている

移行する際に注意するポイントは

9Copyrightcopy2017 NTT corp All Rights Reserved

全体的な解説

10Copyrightcopy2017 NTT corp All Rights Reserved

全体的な解説

11Copyrightcopy2017 NTT corp All Rights Reserved

bullSpecificationやRelease Noteを読む

bull JSR 379(Java SE 9) API Specification Change Summary

bullbugzillaで検索 (labels=release-note)

より細かく見る(サポートレベル)

12Copyrightcopy2017 NTT corp All Rights Reserved

トラブルシュータは必須

13Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メリットの一部

14Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メイン新機能

15Copyrightcopy2017 NTT corp All Rights Reserved

Demonstration

16Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

次のJava

17Copyrightcopy2017 NTT corp All Rights Reserved

bullJDK Project

bull httpopenjdkjavanetprojectsjdk

どこで管理

18Copyrightcopy2017 NTT corp All Rights Reserved

スケジュールと機能

19Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

bull JEP 286 Local-Variable Type Inference

bullProject Amber

bullFuture

bullProject Panama

bullProject Valhalla

bullProject Loom (投票中)

bullProject Metropolis (投票中)

bullリポジトリやバイナリ(EA)は独立予定

bullそれぞれで試せる予定JEP286はjdk10でも

新機能(予定)

20Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

URL url = new URL(httpjavanet)URLConnection conn = urlopenConnection()Scanner scanner =

new Scanner(conngetInputStream())

21Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

var url = new URL(httpjavanet)var conn = urlopenConnection()var scanner =

new Scanner(conngetInputStream())

22Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = unknownif (obj instanceof Integer) int i = (Integer) objformatted = Stringformat(int d i)

else if (obj instanceof Byte) byte b = (Byte) inputformatted = Stringformat(byte b b)

else if (obj instanceof Long) elseformatted = Stringformat(Unknown s obj)

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 9: Java 9 and Future #jjug

9Copyrightcopy2017 NTT corp All Rights Reserved

全体的な解説

10Copyrightcopy2017 NTT corp All Rights Reserved

全体的な解説

11Copyrightcopy2017 NTT corp All Rights Reserved

bullSpecificationやRelease Noteを読む

bull JSR 379(Java SE 9) API Specification Change Summary

bullbugzillaで検索 (labels=release-note)

より細かく見る(サポートレベル)

12Copyrightcopy2017 NTT corp All Rights Reserved

トラブルシュータは必須

13Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メリットの一部

14Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メイン新機能

15Copyrightcopy2017 NTT corp All Rights Reserved

Demonstration

16Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

次のJava

17Copyrightcopy2017 NTT corp All Rights Reserved

bullJDK Project

bull httpopenjdkjavanetprojectsjdk

どこで管理

18Copyrightcopy2017 NTT corp All Rights Reserved

スケジュールと機能

19Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

bull JEP 286 Local-Variable Type Inference

bullProject Amber

bullFuture

bullProject Panama

bullProject Valhalla

bullProject Loom (投票中)

bullProject Metropolis (投票中)

bullリポジトリやバイナリ(EA)は独立予定

bullそれぞれで試せる予定JEP286はjdk10でも

新機能(予定)

20Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

URL url = new URL(httpjavanet)URLConnection conn = urlopenConnection()Scanner scanner =

new Scanner(conngetInputStream())

21Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

var url = new URL(httpjavanet)var conn = urlopenConnection()var scanner =

new Scanner(conngetInputStream())

22Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = unknownif (obj instanceof Integer) int i = (Integer) objformatted = Stringformat(int d i)

else if (obj instanceof Byte) byte b = (Byte) inputformatted = Stringformat(byte b b)

else if (obj instanceof Long) elseformatted = Stringformat(Unknown s obj)

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 10: Java 9 and Future #jjug

10Copyrightcopy2017 NTT corp All Rights Reserved

全体的な解説

11Copyrightcopy2017 NTT corp All Rights Reserved

bullSpecificationやRelease Noteを読む

bull JSR 379(Java SE 9) API Specification Change Summary

bullbugzillaで検索 (labels=release-note)

より細かく見る(サポートレベル)

12Copyrightcopy2017 NTT corp All Rights Reserved

トラブルシュータは必須

13Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メリットの一部

14Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メイン新機能

15Copyrightcopy2017 NTT corp All Rights Reserved

Demonstration

16Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

次のJava

17Copyrightcopy2017 NTT corp All Rights Reserved

bullJDK Project

bull httpopenjdkjavanetprojectsjdk

どこで管理

18Copyrightcopy2017 NTT corp All Rights Reserved

スケジュールと機能

19Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

bull JEP 286 Local-Variable Type Inference

bullProject Amber

bullFuture

bullProject Panama

bullProject Valhalla

bullProject Loom (投票中)

bullProject Metropolis (投票中)

bullリポジトリやバイナリ(EA)は独立予定

bullそれぞれで試せる予定JEP286はjdk10でも

新機能(予定)

20Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

URL url = new URL(httpjavanet)URLConnection conn = urlopenConnection()Scanner scanner =

new Scanner(conngetInputStream())

21Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

var url = new URL(httpjavanet)var conn = urlopenConnection()var scanner =

new Scanner(conngetInputStream())

22Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = unknownif (obj instanceof Integer) int i = (Integer) objformatted = Stringformat(int d i)

else if (obj instanceof Byte) byte b = (Byte) inputformatted = Stringformat(byte b b)

else if (obj instanceof Long) elseformatted = Stringformat(Unknown s obj)

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 11: Java 9 and Future #jjug

11Copyrightcopy2017 NTT corp All Rights Reserved

bullSpecificationやRelease Noteを読む

bull JSR 379(Java SE 9) API Specification Change Summary

bullbugzillaで検索 (labels=release-note)

より細かく見る(サポートレベル)

12Copyrightcopy2017 NTT corp All Rights Reserved

トラブルシュータは必須

13Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メリットの一部

14Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メイン新機能

15Copyrightcopy2017 NTT corp All Rights Reserved

Demonstration

16Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

次のJava

17Copyrightcopy2017 NTT corp All Rights Reserved

bullJDK Project

bull httpopenjdkjavanetprojectsjdk

どこで管理

18Copyrightcopy2017 NTT corp All Rights Reserved

スケジュールと機能

19Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

bull JEP 286 Local-Variable Type Inference

bullProject Amber

bullFuture

bullProject Panama

bullProject Valhalla

bullProject Loom (投票中)

bullProject Metropolis (投票中)

bullリポジトリやバイナリ(EA)は独立予定

bullそれぞれで試せる予定JEP286はjdk10でも

新機能(予定)

20Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

URL url = new URL(httpjavanet)URLConnection conn = urlopenConnection()Scanner scanner =

new Scanner(conngetInputStream())

21Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

var url = new URL(httpjavanet)var conn = urlopenConnection()var scanner =

new Scanner(conngetInputStream())

22Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = unknownif (obj instanceof Integer) int i = (Integer) objformatted = Stringformat(int d i)

else if (obj instanceof Byte) byte b = (Byte) inputformatted = Stringformat(byte b b)

else if (obj instanceof Long) elseformatted = Stringformat(Unknown s obj)

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 12: Java 9 and Future #jjug

12Copyrightcopy2017 NTT corp All Rights Reserved

トラブルシュータは必須

13Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メリットの一部

14Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メイン新機能

15Copyrightcopy2017 NTT corp All Rights Reserved

Demonstration

16Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

次のJava

17Copyrightcopy2017 NTT corp All Rights Reserved

bullJDK Project

bull httpopenjdkjavanetprojectsjdk

どこで管理

18Copyrightcopy2017 NTT corp All Rights Reserved

スケジュールと機能

19Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

bull JEP 286 Local-Variable Type Inference

bullProject Amber

bullFuture

bullProject Panama

bullProject Valhalla

bullProject Loom (投票中)

bullProject Metropolis (投票中)

bullリポジトリやバイナリ(EA)は独立予定

bullそれぞれで試せる予定JEP286はjdk10でも

新機能(予定)

20Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

URL url = new URL(httpjavanet)URLConnection conn = urlopenConnection()Scanner scanner =

new Scanner(conngetInputStream())

21Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

var url = new URL(httpjavanet)var conn = urlopenConnection()var scanner =

new Scanner(conngetInputStream())

22Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = unknownif (obj instanceof Integer) int i = (Integer) objformatted = Stringformat(int d i)

else if (obj instanceof Byte) byte b = (Byte) inputformatted = Stringformat(byte b b)

else if (obj instanceof Long) elseformatted = Stringformat(Unknown s obj)

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 13: Java 9 and Future #jjug

13Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メリットの一部

14Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メイン新機能

15Copyrightcopy2017 NTT corp All Rights Reserved

Demonstration

16Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

次のJava

17Copyrightcopy2017 NTT corp All Rights Reserved

bullJDK Project

bull httpopenjdkjavanetprojectsjdk

どこで管理

18Copyrightcopy2017 NTT corp All Rights Reserved

スケジュールと機能

19Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

bull JEP 286 Local-Variable Type Inference

bullProject Amber

bullFuture

bullProject Panama

bullProject Valhalla

bullProject Loom (投票中)

bullProject Metropolis (投票中)

bullリポジトリやバイナリ(EA)は独立予定

bullそれぞれで試せる予定JEP286はjdk10でも

新機能(予定)

20Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

URL url = new URL(httpjavanet)URLConnection conn = urlopenConnection()Scanner scanner =

new Scanner(conngetInputStream())

21Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

var url = new URL(httpjavanet)var conn = urlopenConnection()var scanner =

new Scanner(conngetInputStream())

22Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = unknownif (obj instanceof Integer) int i = (Integer) objformatted = Stringformat(int d i)

else if (obj instanceof Byte) byte b = (Byte) inputformatted = Stringformat(byte b b)

else if (obj instanceof Long) elseformatted = Stringformat(Unknown s obj)

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 14: Java 9 and Future #jjug

14Copyrightcopy2017 NTT corp All Rights Reserved

bullモジュール化(Project Jigsaw)

bull柔軟な可視性設定と依存性管理ができる

bullRPEL (JShell)

bull待望のJavaインタプリタ

bullライブラリ改善

bull Collection 初期化Stream機能拡張等

bullセキュリティ強化

bull ALPN対応DRBG追加SHA-3対応

bull付属ツールの刷新(診断とコンパイル)

bull jcmd jhsdb jaot(AoT Compilation)

bullG1 GCやコンパイラなどの性能改善

メイン新機能

15Copyrightcopy2017 NTT corp All Rights Reserved

Demonstration

16Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

次のJava

17Copyrightcopy2017 NTT corp All Rights Reserved

bullJDK Project

bull httpopenjdkjavanetprojectsjdk

どこで管理

18Copyrightcopy2017 NTT corp All Rights Reserved

スケジュールと機能

19Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

bull JEP 286 Local-Variable Type Inference

bullProject Amber

bullFuture

bullProject Panama

bullProject Valhalla

bullProject Loom (投票中)

bullProject Metropolis (投票中)

bullリポジトリやバイナリ(EA)は独立予定

bullそれぞれで試せる予定JEP286はjdk10でも

新機能(予定)

20Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

URL url = new URL(httpjavanet)URLConnection conn = urlopenConnection()Scanner scanner =

new Scanner(conngetInputStream())

21Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

var url = new URL(httpjavanet)var conn = urlopenConnection()var scanner =

new Scanner(conngetInputStream())

22Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = unknownif (obj instanceof Integer) int i = (Integer) objformatted = Stringformat(int d i)

else if (obj instanceof Byte) byte b = (Byte) inputformatted = Stringformat(byte b b)

else if (obj instanceof Long) elseformatted = Stringformat(Unknown s obj)

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 15: Java 9 and Future #jjug

15Copyrightcopy2017 NTT corp All Rights Reserved

Demonstration

16Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

次のJava

17Copyrightcopy2017 NTT corp All Rights Reserved

bullJDK Project

bull httpopenjdkjavanetprojectsjdk

どこで管理

18Copyrightcopy2017 NTT corp All Rights Reserved

スケジュールと機能

19Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

bull JEP 286 Local-Variable Type Inference

bullProject Amber

bullFuture

bullProject Panama

bullProject Valhalla

bullProject Loom (投票中)

bullProject Metropolis (投票中)

bullリポジトリやバイナリ(EA)は独立予定

bullそれぞれで試せる予定JEP286はjdk10でも

新機能(予定)

20Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

URL url = new URL(httpjavanet)URLConnection conn = urlopenConnection()Scanner scanner =

new Scanner(conngetInputStream())

21Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

var url = new URL(httpjavanet)var conn = urlopenConnection()var scanner =

new Scanner(conngetInputStream())

22Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = unknownif (obj instanceof Integer) int i = (Integer) objformatted = Stringformat(int d i)

else if (obj instanceof Byte) byte b = (Byte) inputformatted = Stringformat(byte b b)

else if (obj instanceof Long) elseformatted = Stringformat(Unknown s obj)

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 16: Java 9 and Future #jjug

16Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

次のJava

17Copyrightcopy2017 NTT corp All Rights Reserved

bullJDK Project

bull httpopenjdkjavanetprojectsjdk

どこで管理

18Copyrightcopy2017 NTT corp All Rights Reserved

スケジュールと機能

19Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

bull JEP 286 Local-Variable Type Inference

bullProject Amber

bullFuture

bullProject Panama

bullProject Valhalla

bullProject Loom (投票中)

bullProject Metropolis (投票中)

bullリポジトリやバイナリ(EA)は独立予定

bullそれぞれで試せる予定JEP286はjdk10でも

新機能(予定)

20Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

URL url = new URL(httpjavanet)URLConnection conn = urlopenConnection()Scanner scanner =

new Scanner(conngetInputStream())

21Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

var url = new URL(httpjavanet)var conn = urlopenConnection()var scanner =

new Scanner(conngetInputStream())

22Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = unknownif (obj instanceof Integer) int i = (Integer) objformatted = Stringformat(int d i)

else if (obj instanceof Byte) byte b = (Byte) inputformatted = Stringformat(byte b b)

else if (obj instanceof Long) elseformatted = Stringformat(Unknown s obj)

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 17: Java 9 and Future #jjug

17Copyrightcopy2017 NTT corp All Rights Reserved

bullJDK Project

bull httpopenjdkjavanetprojectsjdk

どこで管理

18Copyrightcopy2017 NTT corp All Rights Reserved

スケジュールと機能

19Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

bull JEP 286 Local-Variable Type Inference

bullProject Amber

bullFuture

bullProject Panama

bullProject Valhalla

bullProject Loom (投票中)

bullProject Metropolis (投票中)

bullリポジトリやバイナリ(EA)は独立予定

bullそれぞれで試せる予定JEP286はjdk10でも

新機能(予定)

20Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

URL url = new URL(httpjavanet)URLConnection conn = urlopenConnection()Scanner scanner =

new Scanner(conngetInputStream())

21Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

var url = new URL(httpjavanet)var conn = urlopenConnection()var scanner =

new Scanner(conngetInputStream())

22Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = unknownif (obj instanceof Integer) int i = (Integer) objformatted = Stringformat(int d i)

else if (obj instanceof Byte) byte b = (Byte) inputformatted = Stringformat(byte b b)

else if (obj instanceof Long) elseformatted = Stringformat(Unknown s obj)

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 18: Java 9 and Future #jjug

18Copyrightcopy2017 NTT corp All Rights Reserved

スケジュールと機能

19Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

bull JEP 286 Local-Variable Type Inference

bullProject Amber

bullFuture

bullProject Panama

bullProject Valhalla

bullProject Loom (投票中)

bullProject Metropolis (投票中)

bullリポジトリやバイナリ(EA)は独立予定

bullそれぞれで試せる予定JEP286はjdk10でも

新機能(予定)

20Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

URL url = new URL(httpjavanet)URLConnection conn = urlopenConnection()Scanner scanner =

new Scanner(conngetInputStream())

21Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

var url = new URL(httpjavanet)var conn = urlopenConnection()var scanner =

new Scanner(conngetInputStream())

22Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = unknownif (obj instanceof Integer) int i = (Integer) objformatted = Stringformat(int d i)

else if (obj instanceof Byte) byte b = (Byte) inputformatted = Stringformat(byte b b)

else if (obj instanceof Long) elseformatted = Stringformat(Unknown s obj)

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 19: Java 9 and Future #jjug

19Copyrightcopy2017 NTT corp All Rights Reserved

bullJava SE 183 (JSR 383)

bull JEP 286 Local-Variable Type Inference

bullProject Amber

bullFuture

bullProject Panama

bullProject Valhalla

bullProject Loom (投票中)

bullProject Metropolis (投票中)

bullリポジトリやバイナリ(EA)は独立予定

bullそれぞれで試せる予定JEP286はjdk10でも

新機能(予定)

20Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

URL url = new URL(httpjavanet)URLConnection conn = urlopenConnection()Scanner scanner =

new Scanner(conngetInputStream())

21Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

var url = new URL(httpjavanet)var conn = urlopenConnection()var scanner =

new Scanner(conngetInputStream())

22Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = unknownif (obj instanceof Integer) int i = (Integer) objformatted = Stringformat(int d i)

else if (obj instanceof Byte) byte b = (Byte) inputformatted = Stringformat(byte b b)

else if (obj instanceof Long) elseformatted = Stringformat(Unknown s obj)

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 20: Java 9 and Future #jjug

20Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

URL url = new URL(httpjavanet)URLConnection conn = urlopenConnection()Scanner scanner =

new Scanner(conngetInputStream())

21Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

var url = new URL(httpjavanet)var conn = urlopenConnection()var scanner =

new Scanner(conngetInputStream())

22Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = unknownif (obj instanceof Integer) int i = (Integer) objformatted = Stringformat(int d i)

else if (obj instanceof Byte) byte b = (Byte) inputformatted = Stringformat(byte b b)

else if (obj instanceof Long) elseformatted = Stringformat(Unknown s obj)

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 21: Java 9 and Future #jjug

21Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 286 Local-Variable Type Inference

Project Amber

var url = new URL(httpjavanet)var conn = urlopenConnection()var scanner =

new Scanner(conngetInputStream())

22Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = unknownif (obj instanceof Integer) int i = (Integer) objformatted = Stringformat(int d i)

else if (obj instanceof Byte) byte b = (Byte) inputformatted = Stringformat(byte b b)

else if (obj instanceof Long) elseformatted = Stringformat(Unknown s obj)

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 22: Java 9 and Future #jjug

22Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = unknownif (obj instanceof Integer) int i = (Integer) objformatted = Stringformat(int d i)

else if (obj instanceof Byte) byte b = (Byte) inputformatted = Stringformat(byte b b)

else if (obj instanceof Long) elseformatted = Stringformat(Unknown s obj)

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 23: Java 9 and Future #jjug

23Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formattedswitch (obj) case Integer iformatted = Stringformat (int d i)break

case Byte bformatted = Stringformat(byte b b)break

case Long l

defaultformatted = Stringformat(Unknown s obj)

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 24: Java 9 and Future #jjug

24Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 305 Pattern matching

Project Amber

String formatted = switch (obj) case Integer i -gt Stringformat(int d i)case Byte b -gt Stringformat(byte d b)case Long l -gt Stringformat(long d l)default -gt Stringformat(Unknown s

obj)

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 25: Java 9 and Future #jjug

25Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumber YEAR(18)FULL(183)public final Number versionJDKNumber(Number version)

thisversion = version

float jdkversion = (float)JDKNumberFULLversion

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 26: Java 9 and Future #jjug

26Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 27: Java 9 and Future #jjug

27Copyrightcopy2017 NTT corp All Rights Reserved

bullJEP 301 Enhanced Enums

Project Amber

public enum JDKNumberltT extends Numbergt YEARltIntegergt(18)FULLltFloatgt(183)public final T versionJDKNumber(T version)

thisversion = version

float jdkversion = JDKNumberFULLversion

他にも列挙型を改善予定

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 28: Java 9 and Future #jjug

28Copyrightcopy2017 NTT corp All Rights Reserved

bullその他

bull JEP 302 Lambda Leftovers

bull使ってないパラメータの記述省エネ化重複変数の利用制限撤廃メソッドのオーバーロード許容etc

bull Other future JEPs

bull情報

bull Mailing Listhttpmailopenjdkjavanetmailmanlistinfoamber-dev

bull Project Pagehttpopenjdkjavanetprojectsamber

Project Amber

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom

Page 29: Java 9 and Future #jjug

29Copyrightcopy2017 NTT corp All Rights Reserved

bullQuestion

bullsugarlife or JJUG

bullkubotayujigmailcom