SlideShare una empresa de Scribd logo
1 de 18
Copyright©2018 NTT corp. All Rights Reserved.
Java 10でぼくたちの生活は
どうかわるの?
2018年3月26日
NTT OSSセンタ 久保田 祐史
2Copyright©2018 NTT corp. All Rights Reserved.
•2018/3/20 リリース予定!
•前回から半年後
•12件の新機能
Java 10
3Copyright©2018 NTT corp. All Rights Reserved.
•メリット
•開発が活発化し便利な機能がどんど
ん入る
•例: Docker対応、あれば便利なAPI
•「あれば便利」が3年後はつらかった
•デメリット
•非互換性対応などのアップデート対
応コストが高くなる
リリースサイクル高速化
e.g.) String::repeat
4Copyright©2018 NTT corp. All Rights Reserved.
•新機能
•JEP(Java Enhancement Proposal)を見る
• openjdk.java.net/projects/jdk/10/#Features
•APIの変更
•JSR(Java Specification Request)の最終仕様
書(Specification)を見る
• cr.openjdk.java.net/~iris/se/10/latestSpec/
•非互換性
•リリースノートを見る
•バグDBからも確認が可能
• https://gist.github.com/ykubota/3afcfdac5b
252bd31ae8c14b54b5d32f
Java 10の情報収集
5Copyright©2018 NTT corp. All Rights Reserved.
• JEP 286: Local-Variable Type Inference
• ローカル変数の型推論「var」の導入
Java 10の主な嬉しい新機能
6Copyright©2018 NTT corp. All Rights Reserved.
JEP 286: Local-Variable Type Inference
URL url = new URL("http://java.net");
URLConnection conn = url.openConnection();
Scanner scanner =
new Scanner(conn.getInputStream());
List<String> list = new ArrayList<String>();
Stream<String> stream = list.stream();
7Copyright©2018 NTT corp. All Rights Reserved.
var url = new URL("http://java.net");
var conn = url.openConnection();
var scanner =
new Scanner(conn.getInputStream());
var list = new ArrayList<String>();
var stream = list.stream();
JEP 286: Local-Variable Type Inference
8Copyright©2018 NTT corp. All Rights Reserved.
• JEP 286: Local-Variable Type Inference
• ローカル変数の型推論「var」の導入
• JEP 310: Application Class-Data Sharing
• JVM プロセス間でメタデータやクラス情報を
共有する仕組み
• 多数のプロセスを立ち上げるケースでのメモリ
節約と起動時間の短縮が見込める
• Oracle JDK商用機能移行の第一弾
Java 10の主な嬉しい新機能
9Copyright©2018 NTT corp. All Rights Reserved.
• AppCDS (Application Class-Data Sharing)
• プロセス間でメタデータやクラス情報を共有する仕組
• Resource Management
• プロセス間でメモリやスレッドプールを共有する仕組
• Java Flight Recorder(Flight Recorder)
• JDKに組み込まれた低オーバヘッドのランタイム情報
プロファイリング、イベント収集フレームワーク
• 本日(3/15)の朝にプロポーサルが出された
• Java Mission Control(JDK Mission Control)
• Java Flight Recorderによって収集されたデータを効
率的に分析するためのツール・セット
• 先日(3/14)、コミュニティにてオープンソース化提案
に向けた議論が呼びかけられた
Oracle JDKの商用機能
10Copyright©2018 NTT corp. All Rights Reserved.
• JEP 286: Local-Variable Type Inference
• ローカル変数の型推論「var」の導入
• JEP 310: Application Class-Data Sharing
• JVM プロセス間でメタデータやクラス情報を
共有する仕組み
• 多数のプロセスを立ち上げるケースでのメモリ
節約と起動時間の短縮が見込める
• Oracle JDK商用機能移行の第一弾
• JEP 307: Parallel Full GC for G1
• シングルスレッド実行であったG1 GCのFull
GCが並列化
Java 10の主な嬉しい新機能
11Copyright©2018 NTT corp. All Rights Reserved.
•APIの変更(※調査中の値です。件=bugチケットの数)
•追加2件以上
•非推奨化3件以上(非推奨化中止1件)
•削除6件以上
•APIの削除
•Java 9よりDeprecatedアノテーション
が強化され削除フラグが追加された
•@Deprecated(forRemoval=true)
•次バージョン以降に削除される
Java 10の非互換性チラ見
jdeprscan ツールを使おう
12Copyright©2018 NTT corp. All Rights Reserved.
•コンテナを認識せずホストのCPU数とメモリ
を基に設定や動作が行われていた問題を修正
• -XX:+UseContainerSupport (デフォルト有効)
• cpu sets, cpu shares, cpu quotasを基に設定
• -XX:ActiveProcessorCount=<count> で上書可
• cgroup filesystemの memory_limit を基に設定
•ヒープに使用するシステムメモリ量を柔軟化
• -XX:{Initial,Max,Min}RAMPercentage
• -XX:{Max,MIN}RAMFraction より便利
•ホストからコンテナ上のプロセスにアタッチ
できるように改善
Dockerコンテナに関する改善
13Copyright©2018 NTT corp. All Rights Reserved.
•Add
• java.util.Optional.orElseThrow()
• java.util.Optional::get() からの置換推奨
• java.util.{List,Set,Map}::copyOf
• 引数のコレクションが変更可能な場合はコピーし
て変更不可能なコレクションを返す。変更不可能
な場合は、そのままリファレンスを返すメソッド
• 変更不可能かどうかの確認メソッドや変更不可能
なコレクション作成を自前でやっていた場合はこ
れに置換推奨
API
14Copyright©2018 NTT corp. All Rights Reserved.
•Remove
• forRemoval=trueのAPIが消えた
• JDK内部Swing LookAndFeelsインスタンス生成API
• javax.swing.UIManager.setLookAndFeel(…)
• com.sun.security.auth.*の非推奨クラスを削除
• java.lang.SecurityManager::checkPermissionに
置換可能な非推奨クラスやフィールドを削除
• JDK 1.1から非推奨な国際化メカニズムの一部を
削除
• java.lang.Runtime::getLocalized{In,Out}putStream
• その他、JavaFX関係のAPIが一部削除
API
15Copyright©2018 NTT corp. All Rights Reserved.
•Add
• javadocに以下の追加拡張が行われた
• サマリアノテーション(@summary)
• ヘッダフッタ指定(-top, -bottom)
• オーバライドメソッド書式指定(--override-methods)
• 複数スタイルシート利用サポート
• Remove
• policytool
• javah (javac -h で代用可能)
• JDK 6-8の標準ドックレット(doclet)
• javadoc API(com.sun.javadoc)は非推奨だが存続
Tool
16Copyright©2018 NTT corp. All Rights Reserved.
•Remove
• -Xoss, -Xsqnopause, -Xoptimize,
-Xboudthreads, -Xusealtsigs
• -Xprof (FlatProfiler)
• -XX:+Trace{Young,Old}GenTime
• -Xlog:gc+heap+exit=debug に置き換わった
• -d32, -d64
• Change
• -XX:BiasedLockingStartupDelay が4000から0に
• 計算機が向上し、遅延を有効にしてVMのオーバーヘッ
ドが発生するよりは無効にした方が性能が良くなった
Option
17Copyright©2018 NTT corp. All Rights Reserved.
•盛り上がる Swing/AWT
• Windows 8以降のキーボードがないモバイル環境な
どでテキストコンポーネントにフォーカスを移した場
合、OSのソフトウェアキーボードが自動で出るよう
になった
その他
18Copyright©2018 NTT corp. All Rights Reserved.
•JShellの起動が早くなった
• コンパイラインスタンスを都度立ち上げていたので、
大量の snippet と共に起動しようとすると遅かった
• krb5 1.15 追随
• includedir <DIRNAME> で指定したディレクトリ
の .conf で終わるファイルも読むようになった
• JNLP が IE 11 on Windows 10 で動かない
• Windows 10 Creators Update適用後からJNLPリンクをクリ
ックしてもJava Web Startアプリケーションが立ち上がらな
くなった
• Oracle 社の発表通り、Java 11以降は Java Web Start が
Oracle JDKに含まれなくなる
• OpenJDK には元から含まれていない
その他

Más contenido relacionado

La actualidad más candente

HeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewHeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewYuji Kubota
 
Migration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjugMigration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjugYuji Kubota
 
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjugYuji Kubota
 
JDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjugJDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjugYuji Kubota
 
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Yuji Kubota
 
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualOpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualYuji Kubota
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2tamtam180
 
jcmd をさわってみよう
jcmd をさわってみようjcmd をさわってみよう
jcmd をさわってみようTsunenaga Hanyuda
 
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)NTT DATA Technology & Innovation
 
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)NTT DATA Technology & Innovation
 
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Koichi Sakata
 
Tomcatの実装から学ぶクラスローダリーク #渋谷Java
Tomcatの実装から学ぶクラスローダリーク #渋谷JavaTomcatの実装から学ぶクラスローダリーク #渋谷Java
Tomcatの実装から学ぶクラスローダリーク #渋谷JavaNorito Agetsuma
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)NTT DATA Technology & Innovation
 
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々torutk
 
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)Koichi Sakata
 
EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活Kuninobu SaSaki
 
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...Shinji Takao
 
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~Shinji Takao
 
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_cccConcurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_cccYuji Kubota
 

La actualidad más candente (20)

HeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewHeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical Preview
 
Migration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjugMigration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjug
 
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
 
JDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjugJDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjug
 
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
 
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualOpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasual
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
 
jcmd をさわってみよう
jcmd をさわってみようjcmd をさわってみよう
jcmd をさわってみよう
 
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
 
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
 
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
 
Tomcatの実装から学ぶクラスローダリーク #渋谷Java
Tomcatの実装から学ぶクラスローダリーク #渋谷JavaTomcatの実装から学ぶクラスローダリーク #渋谷Java
Tomcatの実装から学ぶクラスローダリーク #渋谷Java
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
 
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
 
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
 
EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活EnrootとPyxisで快適コンテナ生活
EnrootとPyxisで快適コンテナ生活
 
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
 
Vespa 機能紹介 #yjmu
Vespa 機能紹介 #yjmuVespa 機能紹介 #yjmu
Vespa 機能紹介 #yjmu
 
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
 
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_cccConcurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
 

Similar a Java 10でぼくたちの生活はどう変わるの?

JavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jpJavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jpYuji Kubota
 
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要Chihiro Ito
 
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)NTT DATA Technology & Innovation
 
FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化Kazunori Sato
 
Autonomous を支える技術、Oracle Database 18c デモンストレーション
Autonomous を支える技術、Oracle Database 18c デモンストレーションAutonomous を支える技術、Oracle Database 18c デモンストレーション
Autonomous を支える技術、Oracle Database 18c デモンストレーションオラクルエンジニア通信
 
Google BigQuery クエリの処理の流れ - #bq_sushi
Google BigQuery クエリの処理の流れ - #bq_sushi Google BigQuery クエリの処理の流れ - #bq_sushi
Google BigQuery クエリの処理の流れ - #bq_sushi Google Cloud Platform - Japan
 
コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!オラクルエンジニア通信
 
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-PE-BANK
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編Fixstars Corporation
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpYuji Kubota
 
今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説Masahiko Sawada
 
Rancher/k8sを利用した運用改善の取り組み(Rancher Day 2019)
Rancher/k8sを利用した運用改善の取り組み(Rancher Day 2019)Rancher/k8sを利用した運用改善の取り組み(Rancher Day 2019)
Rancher/k8sを利用した運用改善の取り組み(Rancher Day 2019)Michitaka Terada
 
多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介
多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介
多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介Tamakoshi Hironori
 

Similar a Java 10でぼくたちの生活はどう変わるの? (20)

JavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jpJavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jp
 
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要
 
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
 
FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化FPGAによる大規模データ処理の高速化
FPGAによる大規模データ処理の高速化
 
Kubernetes Cluster Adminやってました #con_rider
Kubernetes Cluster Adminやってました #con_riderKubernetes Cluster Adminやってました #con_rider
Kubernetes Cluster Adminやってました #con_rider
 
Autonomous を支える技術、Oracle Database 18c デモンストレーション
Autonomous を支える技術、Oracle Database 18c デモンストレーションAutonomous を支える技術、Oracle Database 18c デモンストレーション
Autonomous を支える技術、Oracle Database 18c デモンストレーション
 
Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)
 
Google BigQuery クエリの処理の流れ - #bq_sushi
Google BigQuery クエリの処理の流れ - #bq_sushi Google BigQuery クエリの処理の流れ - #bq_sushi
Google BigQuery クエリの処理の流れ - #bq_sushi
 
10
1010
10
 
コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!コンテナ環境でJavaイメージを小さくする方法!
コンテナ環境でJavaイメージを小さくする方法!
 
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_cccSpring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
 
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
CPU / GPU高速化セミナー!性能モデルの理論と実践:理論編
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jp
 
JDK:新しいリリースモデル解説 @ 岡山・広島
JDK:新しいリリースモデル解説 @ 岡山・広島JDK:新しいリリースモデル解説 @ 岡山・広島
JDK:新しいリリースモデル解説 @ 岡山・広島
 
今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説今秋リリース予定のPostgreSQL11を徹底解説
今秋リリース予定のPostgreSQL11を徹底解説
 
Rancher/k8sを利用した運用改善の取り組み(Rancher Day 2019)
Rancher/k8sを利用した運用改善の取り組み(Rancher Day 2019)Rancher/k8sを利用した運用改善の取り組み(Rancher Day 2019)
Rancher/k8sを利用した運用改善の取り組み(Rancher Day 2019)
 
JDK: 新しいリリースモデル解説
JDK: 新しいリリースモデル解説JDK: 新しいリリースモデル解説
JDK: 新しいリリースモデル解説
 
多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介
多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介
多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介
 
JDK: 新しいリリースモデル解説(ver.2.0)
JDK: 新しいリリースモデル解説(ver.2.0)JDK: 新しいリリースモデル解説(ver.2.0)
JDK: 新しいリリースモデル解説(ver.2.0)
 

Más de Yuji Kubota

Head toward Java 15 and Java 16
Head toward Java 15 and Java 16Head toward Java 15 and Java 16
Head toward Java 15 and Java 16Yuji Kubota
 
Head toward Java 14 and Java 15 #LINE_DM
Head toward Java 14 and Java 15 #LINE_DMHead toward Java 14 and Java 15 #LINE_DM
Head toward Java 14 and Java 15 #LINE_DMYuji Kubota
 
Head toward Java 14 and Java 15
Head toward Java 14 and Java 15Head toward Java 14 and Java 15
Head toward Java 14 and Java 15Yuji Kubota
 
オンライン会議と音声認識
オンライン会議と音声認識オンライン会議と音声認識
オンライン会議と音声認識Yuji Kubota
 
Head toward Java 13 and Java 14 #jjug
Head toward Java 13 and Java 14 #jjugHead toward Java 13 and Java 14 #jjug
Head toward Java 13 and Java 14 #jjugYuji Kubota
 
Catch up Java 12 and Java 13
Catch up Java 12 and Java 13Catch up Java 12 and Java 13
Catch up Java 12 and Java 13Yuji Kubota
 
Introduction to Java 11: Support and JVM Features #jjug
Introduction to Java 11: Support and JVM Features #jjugIntroduction to Java 11: Support and JVM Features #jjug
Introduction to Java 11: Support and JVM Features #jjugYuji Kubota
 
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...Yuji Kubota
 
jcmd #javacasual
jcmd #javacasualjcmd #javacasual
jcmd #javacasualYuji Kubota
 
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6Yuji Kubota
 
HeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LTHeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LTYuji Kubota
 
JDK9 Features (Summary, 31/Jul/2015) #JJUG
JDK9 Features (Summary, 31/Jul/2015) #JJUGJDK9 Features (Summary, 31/Jul/2015) #JJUG
JDK9 Features (Summary, 31/Jul/2015) #JJUGYuji Kubota
 
JVM のいろはにほ #javajo
JVM のいろはにほ #javajoJVM のいろはにほ #javajo
JVM のいろはにほ #javajoYuji Kubota
 
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...Yuji Kubota
 
29 Tips in 40 Minitues for GlassFish Fans #glassfishjp
29 Tips in 40 Minitues for GlassFish Fans #glassfishjp29 Tips in 40 Minitues for GlassFish Fans #glassfishjp
29 Tips in 40 Minitues for GlassFish Fans #glassfishjpYuji Kubota
 

Más de Yuji Kubota (15)

Head toward Java 15 and Java 16
Head toward Java 15 and Java 16Head toward Java 15 and Java 16
Head toward Java 15 and Java 16
 
Head toward Java 14 and Java 15 #LINE_DM
Head toward Java 14 and Java 15 #LINE_DMHead toward Java 14 and Java 15 #LINE_DM
Head toward Java 14 and Java 15 #LINE_DM
 
Head toward Java 14 and Java 15
Head toward Java 14 and Java 15Head toward Java 14 and Java 15
Head toward Java 14 and Java 15
 
オンライン会議と音声認識
オンライン会議と音声認識オンライン会議と音声認識
オンライン会議と音声認識
 
Head toward Java 13 and Java 14 #jjug
Head toward Java 13 and Java 14 #jjugHead toward Java 13 and Java 14 #jjug
Head toward Java 13 and Java 14 #jjug
 
Catch up Java 12 and Java 13
Catch up Java 12 and Java 13Catch up Java 12 and Java 13
Catch up Java 12 and Java 13
 
Introduction to Java 11: Support and JVM Features #jjug
Introduction to Java 11: Support and JVM Features #jjugIntroduction to Java 11: Support and JVM Features #jjug
Introduction to Java 11: Support and JVM Features #jjug
 
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
 
jcmd #javacasual
jcmd #javacasualjcmd #javacasual
jcmd #javacasual
 
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
 
HeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LTHeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LT
 
JDK9 Features (Summary, 31/Jul/2015) #JJUG
JDK9 Features (Summary, 31/Jul/2015) #JJUGJDK9 Features (Summary, 31/Jul/2015) #JJUG
JDK9 Features (Summary, 31/Jul/2015) #JJUG
 
JVM のいろはにほ #javajo
JVM のいろはにほ #javajoJVM のいろはにほ #javajo
JVM のいろはにほ #javajo
 
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
 
29 Tips in 40 Minitues for GlassFish Fans #glassfishjp
29 Tips in 40 Minitues for GlassFish Fans #glassfishjp29 Tips in 40 Minitues for GlassFish Fans #glassfishjp
29 Tips in 40 Minitues for GlassFish Fans #glassfishjp
 

Java 10でぼくたちの生活はどう変わるの?

  • 1. Copyright©2018 NTT corp. All Rights Reserved. Java 10でぼくたちの生活は どうかわるの? 2018年3月26日 NTT OSSセンタ 久保田 祐史
  • 2. 2Copyright©2018 NTT corp. All Rights Reserved. •2018/3/20 リリース予定! •前回から半年後 •12件の新機能 Java 10
  • 3. 3Copyright©2018 NTT corp. All Rights Reserved. •メリット •開発が活発化し便利な機能がどんど ん入る •例: Docker対応、あれば便利なAPI •「あれば便利」が3年後はつらかった •デメリット •非互換性対応などのアップデート対 応コストが高くなる リリースサイクル高速化 e.g.) String::repeat
  • 4. 4Copyright©2018 NTT corp. All Rights Reserved. •新機能 •JEP(Java Enhancement Proposal)を見る • openjdk.java.net/projects/jdk/10/#Features •APIの変更 •JSR(Java Specification Request)の最終仕様 書(Specification)を見る • cr.openjdk.java.net/~iris/se/10/latestSpec/ •非互換性 •リリースノートを見る •バグDBからも確認が可能 • https://gist.github.com/ykubota/3afcfdac5b 252bd31ae8c14b54b5d32f Java 10の情報収集
  • 5. 5Copyright©2018 NTT corp. All Rights Reserved. • JEP 286: Local-Variable Type Inference • ローカル変数の型推論「var」の導入 Java 10の主な嬉しい新機能
  • 6. 6Copyright©2018 NTT corp. All Rights Reserved. JEP 286: Local-Variable Type Inference URL url = new URL("http://java.net"); URLConnection conn = url.openConnection(); Scanner scanner = new Scanner(conn.getInputStream()); List<String> list = new ArrayList<String>(); Stream<String> stream = list.stream();
  • 7. 7Copyright©2018 NTT corp. All Rights Reserved. var url = new URL("http://java.net"); var conn = url.openConnection(); var scanner = new Scanner(conn.getInputStream()); var list = new ArrayList<String>(); var stream = list.stream(); JEP 286: Local-Variable Type Inference
  • 8. 8Copyright©2018 NTT corp. All Rights Reserved. • JEP 286: Local-Variable Type Inference • ローカル変数の型推論「var」の導入 • JEP 310: Application Class-Data Sharing • JVM プロセス間でメタデータやクラス情報を 共有する仕組み • 多数のプロセスを立ち上げるケースでのメモリ 節約と起動時間の短縮が見込める • Oracle JDK商用機能移行の第一弾 Java 10の主な嬉しい新機能
  • 9. 9Copyright©2018 NTT corp. All Rights Reserved. • AppCDS (Application Class-Data Sharing) • プロセス間でメタデータやクラス情報を共有する仕組 • Resource Management • プロセス間でメモリやスレッドプールを共有する仕組 • Java Flight Recorder(Flight Recorder) • JDKに組み込まれた低オーバヘッドのランタイム情報 プロファイリング、イベント収集フレームワーク • 本日(3/15)の朝にプロポーサルが出された • Java Mission Control(JDK Mission Control) • Java Flight Recorderによって収集されたデータを効 率的に分析するためのツール・セット • 先日(3/14)、コミュニティにてオープンソース化提案 に向けた議論が呼びかけられた Oracle JDKの商用機能
  • 10. 10Copyright©2018 NTT corp. All Rights Reserved. • JEP 286: Local-Variable Type Inference • ローカル変数の型推論「var」の導入 • JEP 310: Application Class-Data Sharing • JVM プロセス間でメタデータやクラス情報を 共有する仕組み • 多数のプロセスを立ち上げるケースでのメモリ 節約と起動時間の短縮が見込める • Oracle JDK商用機能移行の第一弾 • JEP 307: Parallel Full GC for G1 • シングルスレッド実行であったG1 GCのFull GCが並列化 Java 10の主な嬉しい新機能
  • 11. 11Copyright©2018 NTT corp. All Rights Reserved. •APIの変更(※調査中の値です。件=bugチケットの数) •追加2件以上 •非推奨化3件以上(非推奨化中止1件) •削除6件以上 •APIの削除 •Java 9よりDeprecatedアノテーション が強化され削除フラグが追加された •@Deprecated(forRemoval=true) •次バージョン以降に削除される Java 10の非互換性チラ見 jdeprscan ツールを使おう
  • 12. 12Copyright©2018 NTT corp. All Rights Reserved. •コンテナを認識せずホストのCPU数とメモリ を基に設定や動作が行われていた問題を修正 • -XX:+UseContainerSupport (デフォルト有効) • cpu sets, cpu shares, cpu quotasを基に設定 • -XX:ActiveProcessorCount=<count> で上書可 • cgroup filesystemの memory_limit を基に設定 •ヒープに使用するシステムメモリ量を柔軟化 • -XX:{Initial,Max,Min}RAMPercentage • -XX:{Max,MIN}RAMFraction より便利 •ホストからコンテナ上のプロセスにアタッチ できるように改善 Dockerコンテナに関する改善
  • 13. 13Copyright©2018 NTT corp. All Rights Reserved. •Add • java.util.Optional.orElseThrow() • java.util.Optional::get() からの置換推奨 • java.util.{List,Set,Map}::copyOf • 引数のコレクションが変更可能な場合はコピーし て変更不可能なコレクションを返す。変更不可能 な場合は、そのままリファレンスを返すメソッド • 変更不可能かどうかの確認メソッドや変更不可能 なコレクション作成を自前でやっていた場合はこ れに置換推奨 API
  • 14. 14Copyright©2018 NTT corp. All Rights Reserved. •Remove • forRemoval=trueのAPIが消えた • JDK内部Swing LookAndFeelsインスタンス生成API • javax.swing.UIManager.setLookAndFeel(…) • com.sun.security.auth.*の非推奨クラスを削除 • java.lang.SecurityManager::checkPermissionに 置換可能な非推奨クラスやフィールドを削除 • JDK 1.1から非推奨な国際化メカニズムの一部を 削除 • java.lang.Runtime::getLocalized{In,Out}putStream • その他、JavaFX関係のAPIが一部削除 API
  • 15. 15Copyright©2018 NTT corp. All Rights Reserved. •Add • javadocに以下の追加拡張が行われた • サマリアノテーション(@summary) • ヘッダフッタ指定(-top, -bottom) • オーバライドメソッド書式指定(--override-methods) • 複数スタイルシート利用サポート • Remove • policytool • javah (javac -h で代用可能) • JDK 6-8の標準ドックレット(doclet) • javadoc API(com.sun.javadoc)は非推奨だが存続 Tool
  • 16. 16Copyright©2018 NTT corp. All Rights Reserved. •Remove • -Xoss, -Xsqnopause, -Xoptimize, -Xboudthreads, -Xusealtsigs • -Xprof (FlatProfiler) • -XX:+Trace{Young,Old}GenTime • -Xlog:gc+heap+exit=debug に置き換わった • -d32, -d64 • Change • -XX:BiasedLockingStartupDelay が4000から0に • 計算機が向上し、遅延を有効にしてVMのオーバーヘッ ドが発生するよりは無効にした方が性能が良くなった Option
  • 17. 17Copyright©2018 NTT corp. All Rights Reserved. •盛り上がる Swing/AWT • Windows 8以降のキーボードがないモバイル環境な どでテキストコンポーネントにフォーカスを移した場 合、OSのソフトウェアキーボードが自動で出るよう になった その他
  • 18. 18Copyright©2018 NTT corp. All Rights Reserved. •JShellの起動が早くなった • コンパイラインスタンスを都度立ち上げていたので、 大量の snippet と共に起動しようとすると遅かった • krb5 1.15 追随 • includedir <DIRNAME> で指定したディレクトリ の .conf で終わるファイルも読むようになった • JNLP が IE 11 on Windows 10 で動かない • Windows 10 Creators Update適用後からJNLPリンクをクリ ックしてもJava Web Startアプリケーションが立ち上がらな くなった • Oracle 社の発表通り、Java 11以降は Java Web Start が Oracle JDKに含まれなくなる • OpenJDK には元から含まれていない その他