SlideShare une entreprise Scribd logo
1  sur  84
Télécharger pour lire hors ligne
Prepare for Java 9
Java 9 備え う
KUBOTA Yuji @sugarlife kubota.yuji@gmail.com
NTT OSS Center
2016/Dec/03
Copyright©2016 NTT corporation
2
•大 新機能
• 入 背景 解決 課題
•コ 影響 (可能性 )あ 変更≒非互換性
• 変更
• 非推奨化
•削除 / 廃
• 内部処理変更 / 様化 い い処理 変更
Prepare for Java 9
Copyright©2016 NTT corporation
セ ョン 話
3
• 日 話 Java 9 式
前 変わ 可能性 あ
注意点
Copyright©2016 NTT corporation
4
• JavaOne2016 (9/18-22)
• [O] Java 8 非推奨 ョン Java 9 動 い
Perm 代表例 !
• JavaOne 報告会 東京 (10/15)
• [私] (コ &動作確認 ) 通 使わ い
う 注意 !
• JDK-8167446: Add back PermSize and
MaxPermSize (10/19)
実例 1
Copyright©2016 NTT corporation
完全無視 手直 必要 変わ せ
5
• JavaOne2016 (9/18-22)
• [O] Java 8 非推奨 ョン Java 9 動 い
Perm 代表例 !
• JavaOne 報告会 東京 (10/15)
• [私] (コ &動作確認 ) 通 使わ い
う 注意 !
• JDK-8167446: Add back PermSize and
MaxPermSize (10/19)
実例 1
Copyright©2016 NTT corporation
完全無視 手直 必要 変わ せ
6
• 表示
•JavaOne 2015: java -listmods
•JavaOne 2016: java --list-modules
• 以外 ョン FB け 変わ
•
•CMS GC 非推奨, AOT Compiler, …
実例 2
Copyright©2016 NTT corporation
Feature Complete (2016/5/26) 何
7
•発表当日 深夜-朝 新 Java 9 入 新機
能 (JEP) (少 く 2 ) 追加
• JEP 11: Incubator Modules
•JEP 299: Reorganize Documentation
•大 新機能 / 非互換性 内
容 い 触 せ
実例 3
Copyright©2016 NTT corporation
直前 キ
8
Disclaimer: who I am
Copyright©2016 NTT corporation
発表時 自己紹 あ せ 本資
料 人 書い い 質問 Twitter 等 う !
KUBOTA Yuji (@sugarlife), hard-of-hearing
kubota.yuji@gmail.com
OpenJDK Technical Support Engineer in NTT
OpenJDK Author (ykubota)
IcedTea Committer
9
•新機能
•概要
• Project Jigsaw
•Project Kulla
•非互換性
• ン 周
• API 周
• 周
Agenda
Copyright©2016 NTT corporation
10
Java 9 新機能
Copyright©2016 NTT corporation
• 概要
• Project Jigsaw
• Project Kulla
11
•GA release schedule (ML 投票 決定)
• 2017/7/27 ( ← 2017/3/23 ← 2016/9/23 )
•JEP: 87 89 個 (openjdk.java.net/projects/jdk9)
• 機能 ( 様策定 参照実装)
•JSR 379: Java SE 9 Release Contents
•JCP 様承認
概要
Copyright©2016 NTT corporation
様策定 JCP 役目 , JEP ML 策定
12
JEP: Java Enhancement Proposals
Copyright©2016 NTT corporation
JEP 追う 入 機能 あ 解
openjdk.java.net/jeps/0
13
Project Jigsaw
Copyright©2016 NTT corporation
14
•JAR HELL
•標準
Project Jigsaw
Copyright©2016 NTT corporation
Project Jigsaw 解決 う い 課題 い
15
•JAR HELL
• 依 性 複雑怪奇
•標準
• 巨大 分割 可
Project Jigsaw
Copyright©2016 NTT corporation
Project Jigsaw 解決 う い 課題 い
16
•紛失 ?
•コン 発生?
•内部 API 安全 変更 ?
依 性 複雑怪奇
Copyright©2016 NTT corporation
依 性 複雑怪奇 何 問題
17
•紛失 ?
•コン 発生?
→依 性 定義 い 問題
•内部 API 安全 変更 ?
→公開制限 定義 い 問題
依 性 複雑怪奇
Copyright©2016 NTT corporation
依 性 複雑怪奇 何 問題
18
•紛失 ?
•コン 発生?
→依 性 定義 い 問題
•内部 API 安全 変更 ?
→公開制限 定義 い 問題
•解決策: Module 入
依 性 複雑怪奇
Copyright©2016 NTT corporation
依 性 複雑怪奇 何 問題
19
Module
Copyright©2016 NTT corporation
Module コン
com.foo.bar.alpha.Alpha
com.foo.bar.beta.Beta
com.foo.internal.Internal
:
JAR
20
Module
Copyright©2016 NTT corporation
明 一
JAR
com.foo.bar.alpha.Alpha
com.foo.bar.beta.Beta
com.foo.internal.Internal
:
JAR
21
Module
Copyright©2016 NTT corporation
module-info.java 定義
JAR
com.foo.bar.alpha.Alpha
com.foo.bar.beta.Beta
com.foo.internal.Internal
:
JAR
module-info.java
22
Module
Copyright©2016 NTT corporation
置く
JAR
com.foo.bar.alpha.Alpha
com.foo.bar.beta.Beta
com.foo.internal.Internal
:
JAR
module-info.java
23
Module
Copyright©2016 NTT corporation
定義
module com.foo.bar {
}
JAR
com.foo.bar.alpha.Alpha
com.foo.bar.beta.Beta
com.foo.internal.Internal
:
JAR
module-info.java
24
Module
Copyright©2016 NTT corporation
依 性 定義方法
JAR
module com.foo.bar {
//依
requires com.foo.baz;
requires java.sql;
}
com.foo.bar.alpha.Alpha
com.foo.bar.beta.Beta
com.foo.internal.Internal
:
JAR
module-info.java
依 性
25
Module
Copyright©2016 NTT corporation
公開制限 定義方法
JAR
module com.foo.bar {
//依
requires com.foo.baz;
requires java.sql;
//公開 to 公開先
exports com.foo.bar.alpha;
exports com.foo.bar.beta to
com.foo.ok;
}
com.foo.bar.alpha.Alpha
com.foo.bar.beta.Beta
com.foo.internal.Internal
:
JAR
module-info.java
依 性
公開制限
26
Module
Copyright©2016 NTT corporation
com.foo.bar
java.sql
com.foo.internalcom.foo.bar.alpha
java.logging
com.foo.baz
reads
com.foo.app
com.foo.bar.beta
com.foo.ok
:
:
:
:図 う 依 性 公開制限 定義
module com.foo.bar {
//依
requires com.foo.baz;
requires java.sql;
//公開 to 公開先
exports com.foo.bar.alpha;
exports com.foo.bar.beta to
com.foo.ok;
}
requires
27
Standard library
Copyright©2016 NTT corporation
標準 巨大 いう問題 化 解決
localhost /jdk9# ./bin/java --list-modules
java.activation (file:///jdk9/modules/java.activation/)
java.annotations.common
(file:///jdk9/modules/java.annotations.common/)
java.base (file:///jdk9/modules/java.base/)
java.compact1 (file:///jdk9/modules/java.compact1/)
java.compact2 (file:///jdk9/modules/java.compact2/)
java.compact3 (file:///jdk9/modules/java.compact3/)
java.compiler (file:///jdk9/modules/java.compiler/)
java.corba (file:///jdk9/modules/java.corba/)
:
28
Standard library
Copyright©2016 NTT corporation
標準 け 間 依 関係
29
Standard library
Copyright©2016 NTT corporation
jdeps コ ン 依 い 確認
localhost /jdk9# ./bin/jdeps /tmp/heapstats-analyzer.jar
heapstats-analyzer.jar -> java.base
heapstats-analyzer.jar -> java.datatransfer
heapstats-analyzer.jar -> java.desktop
heapstats-analyzer.jar -> java.logging
heapstats-analyzer.jar -> java.management
heapstats-analyzer.jar -> java.rmi
heapstats-analyzer.jar -> not found
jp.co.ntt.oss.heapstats -> java.io java.base
jp.co.ntt.oss.heapstats -> java.lang java.base
jp.co.ntt.oss.heapstats -> java.lang.invoke java.base
:
30
Standard library
Copyright©2016 NTT corporation
見当 い not found
localhost /jdk9# ./bin/jdeps /tmp/heapstats-analyzer.jar
heapstats-analyzer.jar -> java.base
heapstats-analyzer.jar -> java.datatransfer
heapstats-analyzer.jar -> java.desktop
heapstats-analyzer.jar -> java.logging
heapstats-analyzer.jar -> java.management
heapstats-analyzer.jar -> java.rmi
heapstats-analyzer.jar -> not found
jp.co.ntt.oss.heapstats -> java.io java.base
jp.co.ntt.oss.heapstats -> java.lang java.base
jp.co.ntt.oss.heapstats -> java.lang.invoke java.base
:
OpenJDK JavaFX
含 い い not found
jp.co.ntt.oss.heapstats -> javafx.application not found
jp.co.ntt.oss.heapstats -> javafx.collections not found
31
Standard library
Copyright©2016 NTT corporation
標準 化 一
localhost /jdk9# ./bin/jdeps /tmp/heapstats-analyzer.jar
heapstats-analyzer.jar -> java.base
heapstats-analyzer.jar -> java.datatransfer
heapstats-analyzer.jar -> java.desktop
heapstats-analyzer.jar -> java.logging
heapstats-analyzer.jar -> java.management
heapstats-analyzer.jar -> java.rmi
heapstats-analyzer.jar -> not found
jp.co.ntt.oss.heapstats -> java.io java.base
jp.co.ntt.oss.heapstats -> java.lang java.base
jp.co.ntt.oss.heapstats -> java.lang.invoke java.base
:
OpenJDK JavaFX
含 い い not found
jp.co.ntt.oss.heapstats -> javafx.application not found
jp.co.ntt.oss.heapstats -> javafx.collections not found
jlink コ ン 必要最低限 構
成 実行可能 java 作成
32
•何 嬉 い
• 足 /コン 調査 簡易化
• 柔軟 セ 制限
• 標準 縮 圧縮
•備え ?
• ビ 利用 対応 学 う
Project Jigsaw
Copyright©2016 NTT corporation
ョン 変わ 可能性 あ う暫く
33
Project Kulla (JShell)
Copyright©2016 NTT corporation
34
•REPL (Read-eval-print loop) for Java
Project Kulla (JShell)
Copyright©2016 NTT corporation
/jdk9/bin# ./jshell
| Welcome to JShell -- Version 9-internal
| For an introduction type: /help intro
jshell>
35
•REPL (Read-eval-print loop) for Java
Project Kulla (JShell)
Copyright©2016 NTT corporation
/jdk9/bin# ./jshell
| Welcome to JShell -- Version 9-internal
| For an introduction type: /help intro
jshell> import java.time.*
jshell>
36
•REPL (Read-eval-print loop) for Java
Project Kulla (JShell)
Copyright©2016 NTT corporation
/jdk9/bin# ./jshell
| Welcome to JShell -- Version 9-internal
| For an introduction type: /help intro
jshell> import java.time.*
jshell> public class Java9 {
...> public void releaseDate() {
...> LocalDateTime d = LocalDateTime.of(2016,9,23,0,0);
...> System.out.println(d.plusMonths(6+4).plusDays(4));
...> }
...> }
37
•REPL (Read-eval-print loop) for Java
Project Kulla (JShell)
Copyright©2016 NTT corporation
/jdk9/bin# ./jshell
| Welcome to JShell -- Version 9-internal
| For an introduction type: /help intro
jshell> import java.time.*
jshell> public class Java9 {
...> public void releaseDate() {
...> LocalDateTime d = LocalDateTime.of(2016,9,23,0,0);
...> System.out.println(d.plusMonths(6+4).plusDays(4));
...> }
...> }
| created class Java9
38
•REPL (Read-eval-print loop) for Java
Project Kulla (JShell)
Copyright©2016 NTT corporation
jshell> public class Java9 {
...> public void releaseDate() {
...> LocalDateTime d = LocalDateTime.of(2016,9,23,0,0);
...> System.out.println(d.plusMonths(6+4).plusDays(4));
...> }
...> }
| created class Java9
jshell>
39
•REPL (Read-eval-print loop) for Java
Project Kulla (JShell)
Copyright©2016 NTT corporation
jshell> public class Java9 {
...> public void releaseDate() {
...> LocalDateTime d = LocalDateTime.of(2016,9,23,0,0);
...> System.out.println(d.plusMonths(6+4).plusDays(4));
...> }
...> }
| created class Java9
jshell> new Java9()
40
•REPL (Read-eval-print loop) for Java
Project Kulla (JShell)
Copyright©2016 NTT corporation
jshell> public class Java9 {
...> public void releaseDate() {
...> LocalDateTime d = LocalDateTime.of(2016,9,23,0,0);
...> System.out.println(d.plusMonths(6+4).plusDays(4));
...> }
...> }
| created class Java9
jshell> new Java9()
$3 ==> Java9@56235b8e
jshell>
41
•REPL (Read-eval-print loop) for Java
Project Kulla (JShell)
Copyright©2016 NTT corporation
jshell> public class Java9 {
...> public void releaseDate() {
...> LocalDateTime d = LocalDateTime.of(2016,9,23,0,0);
...> System.out.println(d.plusMonths(6+4).plusDays(4));
...> }
...> }
| created class Java9
jshell> new Java9()
$3 ==> Java9@56235b8e
jshell> $3.releaseDate()
42
•REPL (Read-eval-print loop) for Java
Project Kulla (JShell)
Copyright©2016 NTT corporation
jshell> public class Java9 {
...> public void releaseDate() {
...> LocalDateTime d = LocalDateTime.of(2016,9,23,0,0);
...> System.out.println(d.plusMonths(6+4).plusDays(4));
...> }
...> }
| created class Java9
jshell> new Java9()
$3 ==> Java9@56235b8e
jshell> $3.releaseDate()
2017-07-27T00:00
43
•何 嬉 い
• く API 試せ
•教育用 役立
• CLI framework
• https://github.com/YaSuenag/jmxclient
•備え ?
• 簡単 検討 CLI 利用
Project Kulla (JShell)
Copyright©2016 NTT corporation
jshell 色々 う ?
44
新機能
Copyright©2016 NTT corporation
45
•JavaDoc.Next
•HTML 5
•Doclint, Doclet API 改善
•検索機能 追加
•JDK release
• javac --release コン
•Multi-release jar files (META-INF/version/{9,10,…})
新機能
Copyright©2016 NTT corporation
二 Project 以外 新機能 あ
46
•JavaDoc.Next
•HTML 5
•Doclint, Doclet API 改善
•検索機能 追加
•JDK release
• javac --release コン
•Multi-release jar files (META-INF/version/{9,10,…})
新機能
Copyright©2016 NTT corporation
二 Project 以外 新機能 あ
javac --release N = javac -target N -source N .
-bootclasspath=/path/to/N/rt.jar
47
•HTTP 2.0 / The Flow API / …
•性能改善
• Re-engineering javac (Tiered Attribution)
• “String” + “String” (invokedynamic 利用)
•Stream / Collection 改善
• 匿 ン 演算子
• Static 追加 ({List,Set,Map}#of)
新機能
Copyright©2016 NTT corporation
新機能 改善 く一部 紹
48
非互換性
Copyright©2016 NTT corporation
• ン 変更
• API 周 変更
• 周 変更
49
OpenJDK Developers’ Guide
•Don’t break binary compatibility (言語 様)
•Avoid introducing source incompatibilities
•Manage behavioral compatibility changes
http://cr.openjdk.java.net/~darcy/OpenJdkDevGuide/
互換性
Copyright©2016 NTT corporation
Binary > Source > Behavioral
50
•JEP 227: Enhanced Deprecation
•@Deprecated
• 将来削除 (forRemoval)
• ョン 非推奨 (since)
•jdeprscan
•非推奨 API 利用
@Deprecated
Copyright©2016 NTT corporation
消え 消え 詐欺
51
ン 変更
Copyright©2016 NTT corporation
JVM 挙動周
52
•大半 内部 API セ 化(隠蔽)
•JDK 9 コ ン ョン 回避 可能
•広く使わ い 物(Critical APIs) 代替 用
意 公開
•jdeps 使 影響あ 確認 推奨
• 特 Multi-Release JAR files (JEP 238)
JEP 260: Encapsulate most internal APIs
Copyright©2016 NTT corporation
特 利用 影響 け い 確認
53
•Critical APIs (keep public)
• sun.misc.Unsafe
•sun.misc.{Signal,SignalHandler}
• sun.misc.Cleaner
•sun.reflect.Reflection::getCallerClass
• sun.reflect.ReflectionFactory
• 以外 削除(隠蔽) 例: sun.misc.Base64
JEP 260: Encapsulate most internal APIs
Copyright©2016 NTT corporation
Critical APIs JDK 10 以降 削除 可能性あ
54
• 変更 以 組 廃
• Endorsed-standards override
•Extension mechanism
• -Xbootclasspath, -Xbootclasspath/p,
-Dsun.boot.class.path 削除
• AppClassLoader URLClassLoader ン ン
無く ( 承 い)等 影響
Change class loaders mechanism in JEP
261: Module System
Copyright©2016 NTT corporation
Module 化 配置 推奨 いう流
55
•-source / -target 3 世代前 サ
•JDK 9 場合 1.6 1.5 drop
•drop 前 ョン 非推奨
•JDK 9 場合 1.6 非推奨 警告 出
JEP 182: Policy for Retiring javac –
source and –target options
Copyright©2016 NTT corporation
JDK 9 ビ JDK 5 動 人 居 い ?
56
•-version: コ ン ン ョン削除
•-version く : 付く方
•JAR Manifest JRE-Version 削除
JEP 231: Remove Launch-Time JRE
Version Selection
Copyright©2016 NTT corporation
起動時 ョン指定 く
57
•JDK 構造 変更
JEP 220: Modular Run-Time Images
Copyright©2016 NTT corporation
等 決 打 込 影響
58
•javac --release Multi-Release JAR
• 自体 新機能
•前述 非互換性 合わせ ビ 多
大 影響 え
• Java 9 ン ビ 最新
化 必要
JEP 247: Compile for Older Platform Versions
JEP 238: Multi-Release JAR Files
Copyright©2016 NTT corporation
Maven:https://cwiki.apache.org/confluence/display/MAVEN/Java+9+-+Jigsaw
59
•JDK 8 削除済 or 非推奨 ョン
使 場合 警告 セ 出 け
(無視 起動 )
•JDK 9 殆 場合起動 く
• JDK 8 非推奨 ョン 削除
• Perm 領域関係 残 無視 起動
Unrecognized VM options fail to start
Copyright©2016 NTT corporation
warning: ignoring option XXX; support was removed in 8.0
60
•Property File UTF-8 利用可能
•ResourceBundle API UTF-8
込
•native2ascii 削除
•設定 込 ワ 工
夫 隠蔽 い 影響 現 う
JEP 226: UTF-8 Property Files
Copyright©2016 NTT corporation
う く UTF-8 対応 思い 動作等 変更
61
•1.8.0_101-b14
• 1.$MAJOR.0_$MINOR-b$BUILD
•9.1.2+62
• $MAJOR.$MINOR.$SECURITY+$BUILD
•java.version, java.specification.version
•1.8 9
•version.split(“.”)[1] い …
JEP 223: New Version String Scheme
Copyright©2016 NTT corporation
ョン表記 決 打 込 影響
62
•従来 JVM 廃 ョン
変更
•-Xlog:[<selection>]:[<output>]:[<decorators>]
•-Xlog:[出力内容]:[出力先]:[各行 装飾]
JEP 158: Unified JVM Logging
JEP 271: Unified GC Logging
Copyright©2016 NTT corporation
Parser 系 い い全滅
63
•従来 JVM 廃 ョン
変更
•-Xlog:[<selection>]:[<output>]:[<decorators>]
•-Xlog:[出力内容]:[出力先]:[各行 装飾]
• -XX:+PrintGCDetails -Xloggc:gc.log.`date +%Y-
%m-%d_%H-%M-%S` -XX:+PrintGCTimeStamps
JEP 158: Unified JVM Logging
JEP 271: Unified GC Logging
Copyright©2016 NTT corporation
Parser 系 い い全滅
64
•従来 JVM 廃 ョン
変更
•-Xlog:[<selection>]:[<output>]:[<decorators>]
•-Xlog:[出力内容]:[出力先]:[各行 装飾]
• -XX:+PrintGCDetails -Xloggc:gc.log.`date +%Y-
%m-%d_%H-%M-%S` -XX:+PrintGCTimeStamps
• -Xlog:gc*=debug:gc.log.%t:time,level
JEP 158: Unified JVM Logging
JEP 271: Unified GC Logging
Copyright©2016 NTT corporation
Parser 系 い い全滅
65
• 以 組合せ
• DefNew + CMS / iCMS
•ParNew + SerialOld / iCMS
• CMS foreground(s)
• -XX:+UseCMSCompactAtFullCollection
• -XX:+CMSFullGCsBeforeCompaction
• -XX:+UseCMSCollectionPassing
JEP 214: Remove GC Combinations
Deprecated in JDK 8
Copyright©2016 NTT corporation
JDK 8 時点 非推奨 非サ
66
• Parallel GC G1 GC
•-XX:+UseParallel(Old)GC 従来通
•CMS GC 非推奨化 議論 ML 進
い (JEP 291)
JEP 248: Make G1 the Default Garbage
Collector
Copyright©2016 NTT corporation
各 GC JJUG CCC {2014,2015} Fall 資料 参考
67
•JEP 229: Create PKCS12 Keystores by Default
•keystore type JKS PKCS12 変更
•JEP 288: Disable SHA-1 Certificates
• X.509 証明書 ン SHA-1 署 利用 い
場合 注意
Improve encryption for security
Copyright©2016 NTT corporation
コ いう 利用 証明書 問題
68
API 周 変更
Copyright©2016 NTT corporation
Java API 削除 挙動変更
69
•JEP 289: Deprecate the Applet API
• java.applet.{AppletStub,Applet,AudioClip,Apple
tContext}
• javax.swing.JApplet
•Fix insecure issues
•Remove support for serialized applets (JDK-8074161)
• No longer allow non-strict JNLP Parsing (JDK-8075605)
Follow the evolution of WEB
Copyright©2016 NTT corporation
Web 動向(NPAPI) セキ 面 非推奨化 流
70
• java.util.logging.LogManager
#{add|remove}PropertyChangeListener
• java.util.jar.Pack200.{Packer|Unpacker}#
{add|remove}PropertyChangeListener
• com.sun.security.auth.callback.DialogCal
lbackHandle
Remove deprecated APIs in JEP 162:
Prepare for Modularization
Copyright©2016 NTT corporation
JDK 8 非推奨 い API 削除
71
• Toolkit implementers (JDK-8037739)
• java.awt.peer package
• java.awt.dnd.peer package
• Unsupported Apple APIs
• com.apple.eawt, com.apple.eio (JEP 272)
• com.apple.concurrent (JDK-8148187)
• AppleScript scripting engine (JDK-8143404)
• com.sun.codec.jpeg (JDK-8038838)
Removed APIs
Copyright©2016 NTT corporation
関係 多い
72
•UnsupportedOperationException 返
• JDK-7059085 (非公開)
•Java SE 1.2 時代 非推奨
•Thread.stop() 残
• いえ inconsistent state
留 せ 処理 危険 伴う 注意
Thread.stop(Throwable) throw UOE
Copyright©2016 NTT corporation
前 ョン い
73
• Arrays.asList(x).toArrays() returns Object[]
(JDK-6260652)
• 配列 ン(clone) 返 い
• JDK 9 Object[] 返
Behavior changed API
Copyright©2016 NTT corporation
JEP 関係 い API 挙動変更
74
• _ 1文 禁 (JDK-8061549)
• 排除 い
• JLS §15.27.1. Lambda Parameters (Java 8)
Disallow _ as a one-character identifier
by JEP 213: Milling Project Coin
Copyright©2016 NTT corporation
いい 前 授け う
75
•String 化 一環 内部 (value)
型 char[] byte[] 変更
•1文 毎 2byte(UTF-16) 1byte 扱
え 1byte 以外 従来通
• 回避 内部 直接
け渡 意外 多い 注意
The value field of String is no longer
char[] by JEP 254: Compact Strings
Copyright©2016 NTT corporation
文 列 性能 永遠 課題
76
•RMI HTTP proxy
•RMI/JRMP HTTP tunneling
実装 削除 (JDK-8155978)
The entire HTTP proxying mechanism of RMI
deprecated in JDK 8 will be removed
Copyright©2016 NTT corporation
前 ョン 非推奨化 削除 一環
77
Deprecate com.sun.jarsigner package by
JDK-8076535
Copyright©2016 NTT corporation
jarsigner コ ン 自体 変更
•独自 JAR 署 方法 実装
•jarsigner コ ン -altsigner 利用
•低 且 利用者 居 い 非推奨
78
周 変更
Copyright©2016 NTT corporation
Serviceability tool
79
Good bye hprof by JEP 240
Copyright©2016 NTT corporation
[PR] heap profiler & visualizer HeapStats !
•hprof 提供 く
• 元々 JVM TI BCI コ あ 非公式扱
い
•コ HeapDump 機能 残
•HeapDump jcmd 等 代替 可能
80
Good bye jhat by JEP 241
Copyright©2016 NTT corporation
[PR] heap profiler & visualizer HeapStats !
•jhat 提供停
•hprof 様 コ 残
• experimental あ 利用 少
• Eclipse MAT 代用可能
81
•native2ascii
• JEP 226 UTF-8
利用可能
•VisualVM
•JDK 梱 く 公式サ
得 必要 あ (blogs.oracle.com/nbprofiler)
• https://blogs.oracle.com/java-platform-
group/entry/visual_vm_in_jdk_9
Good bye tools
Copyright©2016 NTT corporation
[PR] heap profiler & visualizer HeapStats !
82
JEP 228: Add More Diagnostic Commands
Copyright©2016 NTT corporation
Domain Num. Abstract
PerfCounter 1 - Performance Counter
ManagementAgent 4 +1 JMX agent
Thread 1 - Thread dump
GC 8 +2
-1
Heap / GC / Finalization
VM 15 +8 Runtime info. (log/native mem/flag/etc.)
Compiler 7 - JIT Compiler
JVMTI 2 - JVMTI agent
Removed GC.rotate_log to VM domain
jcmd 機能 強化 (基本的 新機能)
83
影響 あ う 変更
Copyright©2016 NTT corporation
影響度合い 掴 い
• Windows 32 Client VM 廃
• Unicode CLDR (JEP 252)
• -Djava.locale.providers=JRE,SPI 従来通
• JavaDB (Apache Derby) 廃 (JDK-8004716)
• Derby 自体 Apache 開発 け い
• StringBuilder::append 生成 コ 変更 (JEP 280)
• invokedynamic 利用 JDK library function ぶ う
• 新機能 紹 性能改善 コ 関わ う 処理
あ い 思わ …
84
い
@sugarlife
kubota.yuji@gmail.com
Copyright©2016 NTT corporation

Contenu connexe

Tendances

ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
Yuuki Fukuda
 
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうGraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
Koichi Sakata
 
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めたJJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
Koichi Sakata
 
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
 
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4
Yusuke Yamamoto
 

Tendances (20)

Java 9 and Future #jjug
Java 9 and Future #jjugJava 9 and Future #jjug
Java 9 and Future #jjug
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
 
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
ほんとうに便利だった業務で使えるJava SE8新機能(JJUG CCC 2015 Spring)
 
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)
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
 
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうGraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
 
Javaにおけるネイティブコード連携の各種手法の紹介
Javaにおけるネイティブコード連携の各種手法の紹介Javaにおけるネイティブコード連携の各種手法の紹介
Javaにおけるネイティブコード連携の各種手法の紹介
 
Hello Java
Hello JavaHello Java
Hello Java
 
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
 
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めたJJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
Advanced database monitoring in modern java
Advanced database monitoring in modern javaAdvanced database monitoring in modern java
Advanced database monitoring in modern java
 
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)
 
Java EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 FallJava EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 Fall
 
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4cCDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
 
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4
 
JVM上でのストリーム処理エンジンの変遷
JVM上でのストリーム処理エンジンの変遷JVM上でのストリーム処理エンジンの変遷
JVM上でのストリーム処理エンジンの変遷
 
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
 
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
Java8移行から始めた技術的負債との戦い(jjug ccc 2015 fall)
 

En vedette

Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
 
Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354
Taku Miyakawa
 
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based languageKink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
 
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on JavaQuasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on Java
Taku Miyakawa
 

En vedette (20)

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
 
jcmd #javacasual
jcmd #javacasualjcmd #javacasual
jcmd #javacasual
 
Migration from Swing to JavaFX
Migration from Swing to JavaFXMigration from Swing to JavaFX
Migration from Swing to JavaFX
 
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
 
Kink の宣伝
Kink の宣伝Kink の宣伝
Kink の宣伝
 
Hadoop jobbuilder
Hadoop jobbuilderHadoop jobbuilder
Hadoop jobbuilder
 
Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354
 
Matrix Multiplication in Strassen Algorithm
Matrix Multiplication in Strassen AlgorithmMatrix Multiplication in Strassen Algorithm
Matrix Multiplication in Strassen Algorithm
 
擬似乱数生成器の評価
擬似乱数生成器の評価擬似乱数生成器の評価
擬似乱数生成器の評価
 
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based languageKink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
 
コルーチンの実装について
コルーチンの実装についてコルーチンの実装について
コルーチンの実装について
 
JDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjugJDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjug
 
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on JavaQuasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on Java
 
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
 
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
 
Java を今すぐダウンロードしてみたお話
Java を今すぐダウンロードしてみたお話Java を今すぐダウンロードしてみたお話
Java を今すぐダウンロードしてみたお話
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
プロダクトオーナーは育成できるのか? - プロダクトオーナー祭り2016
プロダクトオーナーは育成できるのか? - プロダクトオーナー祭り2016プロダクトオーナーは育成できるのか? - プロダクトオーナー祭り2016
プロダクトオーナーは育成できるのか? - プロダクトオーナー祭り2016
 
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
 
Graph Algorithms Part 1
Graph Algorithms Part 1Graph Algorithms Part 1
Graph Algorithms Part 1
 

Similaire à Prepare for Java 9 #jjug

Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Takashi Someda
 
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_DataSpider のソーシャルとの融合、手組との融合dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn
 

Similaire à Prepare for Java 9 #jjug (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
 
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
 
JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方
 
今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava
 
Oracle GoldenGate Studio概要
Oracle GoldenGate Studio概要Oracle GoldenGate Studio概要
Oracle GoldenGate Studio概要
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
 
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
 
Sbtのマルチプロジェクトはいいぞ
SbtのマルチプロジェクトはいいぞSbtのマルチプロジェクトはいいぞ
Sbtのマルチプロジェクトはいいぞ
 
20190202 jdk new_release_model_sendai
20190202 jdk new_release_model_sendai20190202 jdk new_release_model_sendai
20190202 jdk new_release_model_sendai
 
JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209
JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209
JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209
 
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要Oracle code one 2018 報告会概要
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 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
 
RapidMinerのインストール【CentOS 6.5】
RapidMinerのインストール【CentOS 6.5】RapidMinerのインストール【CentOS 6.5】
RapidMinerのインストール【CentOS 6.5】
 
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
 
RapidMinerのインストール【Ubuntu 14.04 LTS】
RapidMinerのインストール【Ubuntu 14.04 LTS】RapidMinerのインストール【Ubuntu 14.04 LTS】
RapidMinerのインストール【Ubuntu 14.04 LTS】
 
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_DataSpider のソーシャルとの融合、手組との融合dstn交流会_DataSpider のソーシャルとの融合、手組との融合
dstn交流会_DataSpider のソーシャルとの融合、手組との融合
 
JDK:新しいリリースモデル解説 @ 富山 BuriKaigi 2019
JDK:新しいリリースモデル解説 @ 富山 BuriKaigi 2019JDK:新しいリリースモデル解説 @ 富山 BuriKaigi 2019
JDK:新しいリリースモデル解説 @ 富山 BuriKaigi 2019
 
JDK:新しいリリースモデル解説 @ 岡山・広島
JDK:新しいリリースモデル解説 @ 岡山・広島JDK:新しいリリースモデル解説 @ 岡山・広島
JDK:新しいリリースモデル解説 @ 岡山・広島
 
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #SeleniumjpSeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
 

Plus de Yuji 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
 

Plus de Yuji Kubota (16)

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...
 
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualOpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasual
 
HeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LTHeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LT
 
HeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewHeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical Preview
 
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...
 
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
 
java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷javajava.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷java
 
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
 

Dernier

Dernier (11)

知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

Prepare for Java 9 #jjug

  • 1. Prepare for Java 9 Java 9 備え う KUBOTA Yuji @sugarlife kubota.yuji@gmail.com NTT OSS Center 2016/Dec/03 Copyright©2016 NTT corporation
  • 2. 2 •大 新機能 • 入 背景 解決 課題 •コ 影響 (可能性 )あ 変更≒非互換性 • 変更 • 非推奨化 •削除 / 廃 • 内部処理変更 / 様化 い い処理 変更 Prepare for Java 9 Copyright©2016 NTT corporation セ ョン 話
  • 3. 3 • 日 話 Java 9 式 前 変わ 可能性 あ 注意点 Copyright©2016 NTT corporation
  • 4. 4 • JavaOne2016 (9/18-22) • [O] Java 8 非推奨 ョン Java 9 動 い Perm 代表例 ! • JavaOne 報告会 東京 (10/15) • [私] (コ &動作確認 ) 通 使わ い う 注意 ! • JDK-8167446: Add back PermSize and MaxPermSize (10/19) 実例 1 Copyright©2016 NTT corporation 完全無視 手直 必要 変わ せ
  • 5. 5 • JavaOne2016 (9/18-22) • [O] Java 8 非推奨 ョン Java 9 動 い Perm 代表例 ! • JavaOne 報告会 東京 (10/15) • [私] (コ &動作確認 ) 通 使わ い う 注意 ! • JDK-8167446: Add back PermSize and MaxPermSize (10/19) 実例 1 Copyright©2016 NTT corporation 完全無視 手直 必要 変わ せ
  • 6. 6 • 表示 •JavaOne 2015: java -listmods •JavaOne 2016: java --list-modules • 以外 ョン FB け 変わ • •CMS GC 非推奨, AOT Compiler, … 実例 2 Copyright©2016 NTT corporation Feature Complete (2016/5/26) 何
  • 7. 7 •発表当日 深夜-朝 新 Java 9 入 新機 能 (JEP) (少 く 2 ) 追加 • JEP 11: Incubator Modules •JEP 299: Reorganize Documentation •大 新機能 / 非互換性 内 容 い 触 せ 実例 3 Copyright©2016 NTT corporation 直前 キ
  • 8. 8 Disclaimer: who I am Copyright©2016 NTT corporation 発表時 自己紹 あ せ 本資 料 人 書い い 質問 Twitter 等 う ! KUBOTA Yuji (@sugarlife), hard-of-hearing kubota.yuji@gmail.com OpenJDK Technical Support Engineer in NTT OpenJDK Author (ykubota) IcedTea Committer
  • 9. 9 •新機能 •概要 • Project Jigsaw •Project Kulla •非互換性 • ン 周 • API 周 • 周 Agenda Copyright©2016 NTT corporation
  • 10. 10 Java 9 新機能 Copyright©2016 NTT corporation • 概要 • Project Jigsaw • Project Kulla
  • 11. 11 •GA release schedule (ML 投票 決定) • 2017/7/27 ( ← 2017/3/23 ← 2016/9/23 ) •JEP: 87 89 個 (openjdk.java.net/projects/jdk9) • 機能 ( 様策定 参照実装) •JSR 379: Java SE 9 Release Contents •JCP 様承認 概要 Copyright©2016 NTT corporation 様策定 JCP 役目 , JEP ML 策定
  • 12. 12 JEP: Java Enhancement Proposals Copyright©2016 NTT corporation JEP 追う 入 機能 あ 解 openjdk.java.net/jeps/0
  • 14. 14 •JAR HELL •標準 Project Jigsaw Copyright©2016 NTT corporation Project Jigsaw 解決 う い 課題 い
  • 15. 15 •JAR HELL • 依 性 複雑怪奇 •標準 • 巨大 分割 可 Project Jigsaw Copyright©2016 NTT corporation Project Jigsaw 解決 う い 課題 い
  • 16. 16 •紛失 ? •コン 発生? •内部 API 安全 変更 ? 依 性 複雑怪奇 Copyright©2016 NTT corporation 依 性 複雑怪奇 何 問題
  • 17. 17 •紛失 ? •コン 発生? →依 性 定義 い 問題 •内部 API 安全 変更 ? →公開制限 定義 い 問題 依 性 複雑怪奇 Copyright©2016 NTT corporation 依 性 複雑怪奇 何 問題
  • 18. 18 •紛失 ? •コン 発生? →依 性 定義 い 問題 •内部 API 安全 変更 ? →公開制限 定義 い 問題 •解決策: Module 入 依 性 複雑怪奇 Copyright©2016 NTT corporation 依 性 複雑怪奇 何 問題
  • 19. 19 Module Copyright©2016 NTT corporation Module コン com.foo.bar.alpha.Alpha com.foo.bar.beta.Beta com.foo.internal.Internal : JAR
  • 20. 20 Module Copyright©2016 NTT corporation 明 一 JAR com.foo.bar.alpha.Alpha com.foo.bar.beta.Beta com.foo.internal.Internal : JAR
  • 21. 21 Module Copyright©2016 NTT corporation module-info.java 定義 JAR com.foo.bar.alpha.Alpha com.foo.bar.beta.Beta com.foo.internal.Internal : JAR module-info.java
  • 23. 23 Module Copyright©2016 NTT corporation 定義 module com.foo.bar { } JAR com.foo.bar.alpha.Alpha com.foo.bar.beta.Beta com.foo.internal.Internal : JAR module-info.java
  • 24. 24 Module Copyright©2016 NTT corporation 依 性 定義方法 JAR module com.foo.bar { //依 requires com.foo.baz; requires java.sql; } com.foo.bar.alpha.Alpha com.foo.bar.beta.Beta com.foo.internal.Internal : JAR module-info.java 依 性
  • 25. 25 Module Copyright©2016 NTT corporation 公開制限 定義方法 JAR module com.foo.bar { //依 requires com.foo.baz; requires java.sql; //公開 to 公開先 exports com.foo.bar.alpha; exports com.foo.bar.beta to com.foo.ok; } com.foo.bar.alpha.Alpha com.foo.bar.beta.Beta com.foo.internal.Internal : JAR module-info.java 依 性 公開制限
  • 26. 26 Module Copyright©2016 NTT corporation com.foo.bar java.sql com.foo.internalcom.foo.bar.alpha java.logging com.foo.baz reads com.foo.app com.foo.bar.beta com.foo.ok : : : :図 う 依 性 公開制限 定義 module com.foo.bar { //依 requires com.foo.baz; requires java.sql; //公開 to 公開先 exports com.foo.bar.alpha; exports com.foo.bar.beta to com.foo.ok; } requires
  • 27. 27 Standard library Copyright©2016 NTT corporation 標準 巨大 いう問題 化 解決 localhost /jdk9# ./bin/java --list-modules java.activation (file:///jdk9/modules/java.activation/) java.annotations.common (file:///jdk9/modules/java.annotations.common/) java.base (file:///jdk9/modules/java.base/) java.compact1 (file:///jdk9/modules/java.compact1/) java.compact2 (file:///jdk9/modules/java.compact2/) java.compact3 (file:///jdk9/modules/java.compact3/) java.compiler (file:///jdk9/modules/java.compiler/) java.corba (file:///jdk9/modules/java.corba/) :
  • 28. 28 Standard library Copyright©2016 NTT corporation 標準 け 間 依 関係
  • 29. 29 Standard library Copyright©2016 NTT corporation jdeps コ ン 依 い 確認 localhost /jdk9# ./bin/jdeps /tmp/heapstats-analyzer.jar heapstats-analyzer.jar -> java.base heapstats-analyzer.jar -> java.datatransfer heapstats-analyzer.jar -> java.desktop heapstats-analyzer.jar -> java.logging heapstats-analyzer.jar -> java.management heapstats-analyzer.jar -> java.rmi heapstats-analyzer.jar -> not found jp.co.ntt.oss.heapstats -> java.io java.base jp.co.ntt.oss.heapstats -> java.lang java.base jp.co.ntt.oss.heapstats -> java.lang.invoke java.base :
  • 30. 30 Standard library Copyright©2016 NTT corporation 見当 い not found localhost /jdk9# ./bin/jdeps /tmp/heapstats-analyzer.jar heapstats-analyzer.jar -> java.base heapstats-analyzer.jar -> java.datatransfer heapstats-analyzer.jar -> java.desktop heapstats-analyzer.jar -> java.logging heapstats-analyzer.jar -> java.management heapstats-analyzer.jar -> java.rmi heapstats-analyzer.jar -> not found jp.co.ntt.oss.heapstats -> java.io java.base jp.co.ntt.oss.heapstats -> java.lang java.base jp.co.ntt.oss.heapstats -> java.lang.invoke java.base : OpenJDK JavaFX 含 い い not found jp.co.ntt.oss.heapstats -> javafx.application not found jp.co.ntt.oss.heapstats -> javafx.collections not found
  • 31. 31 Standard library Copyright©2016 NTT corporation 標準 化 一 localhost /jdk9# ./bin/jdeps /tmp/heapstats-analyzer.jar heapstats-analyzer.jar -> java.base heapstats-analyzer.jar -> java.datatransfer heapstats-analyzer.jar -> java.desktop heapstats-analyzer.jar -> java.logging heapstats-analyzer.jar -> java.management heapstats-analyzer.jar -> java.rmi heapstats-analyzer.jar -> not found jp.co.ntt.oss.heapstats -> java.io java.base jp.co.ntt.oss.heapstats -> java.lang java.base jp.co.ntt.oss.heapstats -> java.lang.invoke java.base : OpenJDK JavaFX 含 い い not found jp.co.ntt.oss.heapstats -> javafx.application not found jp.co.ntt.oss.heapstats -> javafx.collections not found jlink コ ン 必要最低限 構 成 実行可能 java 作成
  • 32. 32 •何 嬉 い • 足 /コン 調査 簡易化 • 柔軟 セ 制限 • 標準 縮 圧縮 •備え ? • ビ 利用 対応 学 う Project Jigsaw Copyright©2016 NTT corporation ョン 変わ 可能性 あ う暫く
  • 34. 34 •REPL (Read-eval-print loop) for Java Project Kulla (JShell) Copyright©2016 NTT corporation /jdk9/bin# ./jshell | Welcome to JShell -- Version 9-internal | For an introduction type: /help intro jshell>
  • 35. 35 •REPL (Read-eval-print loop) for Java Project Kulla (JShell) Copyright©2016 NTT corporation /jdk9/bin# ./jshell | Welcome to JShell -- Version 9-internal | For an introduction type: /help intro jshell> import java.time.* jshell>
  • 36. 36 •REPL (Read-eval-print loop) for Java Project Kulla (JShell) Copyright©2016 NTT corporation /jdk9/bin# ./jshell | Welcome to JShell -- Version 9-internal | For an introduction type: /help intro jshell> import java.time.* jshell> public class Java9 { ...> public void releaseDate() { ...> LocalDateTime d = LocalDateTime.of(2016,9,23,0,0); ...> System.out.println(d.plusMonths(6+4).plusDays(4)); ...> } ...> }
  • 37. 37 •REPL (Read-eval-print loop) for Java Project Kulla (JShell) Copyright©2016 NTT corporation /jdk9/bin# ./jshell | Welcome to JShell -- Version 9-internal | For an introduction type: /help intro jshell> import java.time.* jshell> public class Java9 { ...> public void releaseDate() { ...> LocalDateTime d = LocalDateTime.of(2016,9,23,0,0); ...> System.out.println(d.plusMonths(6+4).plusDays(4)); ...> } ...> } | created class Java9
  • 38. 38 •REPL (Read-eval-print loop) for Java Project Kulla (JShell) Copyright©2016 NTT corporation jshell> public class Java9 { ...> public void releaseDate() { ...> LocalDateTime d = LocalDateTime.of(2016,9,23,0,0); ...> System.out.println(d.plusMonths(6+4).plusDays(4)); ...> } ...> } | created class Java9 jshell>
  • 39. 39 •REPL (Read-eval-print loop) for Java Project Kulla (JShell) Copyright©2016 NTT corporation jshell> public class Java9 { ...> public void releaseDate() { ...> LocalDateTime d = LocalDateTime.of(2016,9,23,0,0); ...> System.out.println(d.plusMonths(6+4).plusDays(4)); ...> } ...> } | created class Java9 jshell> new Java9()
  • 40. 40 •REPL (Read-eval-print loop) for Java Project Kulla (JShell) Copyright©2016 NTT corporation jshell> public class Java9 { ...> public void releaseDate() { ...> LocalDateTime d = LocalDateTime.of(2016,9,23,0,0); ...> System.out.println(d.plusMonths(6+4).plusDays(4)); ...> } ...> } | created class Java9 jshell> new Java9() $3 ==> Java9@56235b8e jshell>
  • 41. 41 •REPL (Read-eval-print loop) for Java Project Kulla (JShell) Copyright©2016 NTT corporation jshell> public class Java9 { ...> public void releaseDate() { ...> LocalDateTime d = LocalDateTime.of(2016,9,23,0,0); ...> System.out.println(d.plusMonths(6+4).plusDays(4)); ...> } ...> } | created class Java9 jshell> new Java9() $3 ==> Java9@56235b8e jshell> $3.releaseDate()
  • 42. 42 •REPL (Read-eval-print loop) for Java Project Kulla (JShell) Copyright©2016 NTT corporation jshell> public class Java9 { ...> public void releaseDate() { ...> LocalDateTime d = LocalDateTime.of(2016,9,23,0,0); ...> System.out.println(d.plusMonths(6+4).plusDays(4)); ...> } ...> } | created class Java9 jshell> new Java9() $3 ==> Java9@56235b8e jshell> $3.releaseDate() 2017-07-27T00:00
  • 43. 43 •何 嬉 い • く API 試せ •教育用 役立 • CLI framework • https://github.com/YaSuenag/jmxclient •備え ? • 簡単 検討 CLI 利用 Project Kulla (JShell) Copyright©2016 NTT corporation jshell 色々 う ?
  • 45. 45 •JavaDoc.Next •HTML 5 •Doclint, Doclet API 改善 •検索機能 追加 •JDK release • javac --release コン •Multi-release jar files (META-INF/version/{9,10,…}) 新機能 Copyright©2016 NTT corporation 二 Project 以外 新機能 あ
  • 46. 46 •JavaDoc.Next •HTML 5 •Doclint, Doclet API 改善 •検索機能 追加 •JDK release • javac --release コン •Multi-release jar files (META-INF/version/{9,10,…}) 新機能 Copyright©2016 NTT corporation 二 Project 以外 新機能 あ javac --release N = javac -target N -source N . -bootclasspath=/path/to/N/rt.jar
  • 47. 47 •HTTP 2.0 / The Flow API / … •性能改善 • Re-engineering javac (Tiered Attribution) • “String” + “String” (invokedynamic 利用) •Stream / Collection 改善 • 匿 ン 演算子 • Static 追加 ({List,Set,Map}#of) 新機能 Copyright©2016 NTT corporation 新機能 改善 く一部 紹
  • 48. 48 非互換性 Copyright©2016 NTT corporation • ン 変更 • API 周 変更 • 周 変更
  • 49. 49 OpenJDK Developers’ Guide •Don’t break binary compatibility (言語 様) •Avoid introducing source incompatibilities •Manage behavioral compatibility changes http://cr.openjdk.java.net/~darcy/OpenJdkDevGuide/ 互換性 Copyright©2016 NTT corporation Binary > Source > Behavioral
  • 50. 50 •JEP 227: Enhanced Deprecation •@Deprecated • 将来削除 (forRemoval) • ョン 非推奨 (since) •jdeprscan •非推奨 API 利用 @Deprecated Copyright©2016 NTT corporation 消え 消え 詐欺
  • 51. 51 ン 変更 Copyright©2016 NTT corporation JVM 挙動周
  • 52. 52 •大半 内部 API セ 化(隠蔽) •JDK 9 コ ン ョン 回避 可能 •広く使わ い 物(Critical APIs) 代替 用 意 公開 •jdeps 使 影響あ 確認 推奨 • 特 Multi-Release JAR files (JEP 238) JEP 260: Encapsulate most internal APIs Copyright©2016 NTT corporation 特 利用 影響 け い 確認
  • 53. 53 •Critical APIs (keep public) • sun.misc.Unsafe •sun.misc.{Signal,SignalHandler} • sun.misc.Cleaner •sun.reflect.Reflection::getCallerClass • sun.reflect.ReflectionFactory • 以外 削除(隠蔽) 例: sun.misc.Base64 JEP 260: Encapsulate most internal APIs Copyright©2016 NTT corporation Critical APIs JDK 10 以降 削除 可能性あ
  • 54. 54 • 変更 以 組 廃 • Endorsed-standards override •Extension mechanism • -Xbootclasspath, -Xbootclasspath/p, -Dsun.boot.class.path 削除 • AppClassLoader URLClassLoader ン ン 無く ( 承 い)等 影響 Change class loaders mechanism in JEP 261: Module System Copyright©2016 NTT corporation Module 化 配置 推奨 いう流
  • 55. 55 •-source / -target 3 世代前 サ •JDK 9 場合 1.6 1.5 drop •drop 前 ョン 非推奨 •JDK 9 場合 1.6 非推奨 警告 出 JEP 182: Policy for Retiring javac – source and –target options Copyright©2016 NTT corporation JDK 9 ビ JDK 5 動 人 居 い ?
  • 56. 56 •-version: コ ン ン ョン削除 •-version く : 付く方 •JAR Manifest JRE-Version 削除 JEP 231: Remove Launch-Time JRE Version Selection Copyright©2016 NTT corporation 起動時 ョン指定 く
  • 57. 57 •JDK 構造 変更 JEP 220: Modular Run-Time Images Copyright©2016 NTT corporation 等 決 打 込 影響
  • 58. 58 •javac --release Multi-Release JAR • 自体 新機能 •前述 非互換性 合わせ ビ 多 大 影響 え • Java 9 ン ビ 最新 化 必要 JEP 247: Compile for Older Platform Versions JEP 238: Multi-Release JAR Files Copyright©2016 NTT corporation Maven:https://cwiki.apache.org/confluence/display/MAVEN/Java+9+-+Jigsaw
  • 59. 59 •JDK 8 削除済 or 非推奨 ョン 使 場合 警告 セ 出 け (無視 起動 ) •JDK 9 殆 場合起動 く • JDK 8 非推奨 ョン 削除 • Perm 領域関係 残 無視 起動 Unrecognized VM options fail to start Copyright©2016 NTT corporation warning: ignoring option XXX; support was removed in 8.0
  • 60. 60 •Property File UTF-8 利用可能 •ResourceBundle API UTF-8 込 •native2ascii 削除 •設定 込 ワ 工 夫 隠蔽 い 影響 現 う JEP 226: UTF-8 Property Files Copyright©2016 NTT corporation う く UTF-8 対応 思い 動作等 変更
  • 61. 61 •1.8.0_101-b14 • 1.$MAJOR.0_$MINOR-b$BUILD •9.1.2+62 • $MAJOR.$MINOR.$SECURITY+$BUILD •java.version, java.specification.version •1.8 9 •version.split(“.”)[1] い … JEP 223: New Version String Scheme Copyright©2016 NTT corporation ョン表記 決 打 込 影響
  • 62. 62 •従来 JVM 廃 ョン 変更 •-Xlog:[<selection>]:[<output>]:[<decorators>] •-Xlog:[出力内容]:[出力先]:[各行 装飾] JEP 158: Unified JVM Logging JEP 271: Unified GC Logging Copyright©2016 NTT corporation Parser 系 い い全滅
  • 63. 63 •従来 JVM 廃 ョン 変更 •-Xlog:[<selection>]:[<output>]:[<decorators>] •-Xlog:[出力内容]:[出力先]:[各行 装飾] • -XX:+PrintGCDetails -Xloggc:gc.log.`date +%Y- %m-%d_%H-%M-%S` -XX:+PrintGCTimeStamps JEP 158: Unified JVM Logging JEP 271: Unified GC Logging Copyright©2016 NTT corporation Parser 系 い い全滅
  • 64. 64 •従来 JVM 廃 ョン 変更 •-Xlog:[<selection>]:[<output>]:[<decorators>] •-Xlog:[出力内容]:[出力先]:[各行 装飾] • -XX:+PrintGCDetails -Xloggc:gc.log.`date +%Y- %m-%d_%H-%M-%S` -XX:+PrintGCTimeStamps • -Xlog:gc*=debug:gc.log.%t:time,level JEP 158: Unified JVM Logging JEP 271: Unified GC Logging Copyright©2016 NTT corporation Parser 系 い い全滅
  • 65. 65 • 以 組合せ • DefNew + CMS / iCMS •ParNew + SerialOld / iCMS • CMS foreground(s) • -XX:+UseCMSCompactAtFullCollection • -XX:+CMSFullGCsBeforeCompaction • -XX:+UseCMSCollectionPassing JEP 214: Remove GC Combinations Deprecated in JDK 8 Copyright©2016 NTT corporation JDK 8 時点 非推奨 非サ
  • 66. 66 • Parallel GC G1 GC •-XX:+UseParallel(Old)GC 従来通 •CMS GC 非推奨化 議論 ML 進 い (JEP 291) JEP 248: Make G1 the Default Garbage Collector Copyright©2016 NTT corporation 各 GC JJUG CCC {2014,2015} Fall 資料 参考
  • 67. 67 •JEP 229: Create PKCS12 Keystores by Default •keystore type JKS PKCS12 変更 •JEP 288: Disable SHA-1 Certificates • X.509 証明書 ン SHA-1 署 利用 い 場合 注意 Improve encryption for security Copyright©2016 NTT corporation コ いう 利用 証明書 問題
  • 68. 68 API 周 変更 Copyright©2016 NTT corporation Java API 削除 挙動変更
  • 69. 69 •JEP 289: Deprecate the Applet API • java.applet.{AppletStub,Applet,AudioClip,Apple tContext} • javax.swing.JApplet •Fix insecure issues •Remove support for serialized applets (JDK-8074161) • No longer allow non-strict JNLP Parsing (JDK-8075605) Follow the evolution of WEB Copyright©2016 NTT corporation Web 動向(NPAPI) セキ 面 非推奨化 流
  • 70. 70 • java.util.logging.LogManager #{add|remove}PropertyChangeListener • java.util.jar.Pack200.{Packer|Unpacker}# {add|remove}PropertyChangeListener • com.sun.security.auth.callback.DialogCal lbackHandle Remove deprecated APIs in JEP 162: Prepare for Modularization Copyright©2016 NTT corporation JDK 8 非推奨 い API 削除
  • 71. 71 • Toolkit implementers (JDK-8037739) • java.awt.peer package • java.awt.dnd.peer package • Unsupported Apple APIs • com.apple.eawt, com.apple.eio (JEP 272) • com.apple.concurrent (JDK-8148187) • AppleScript scripting engine (JDK-8143404) • com.sun.codec.jpeg (JDK-8038838) Removed APIs Copyright©2016 NTT corporation 関係 多い
  • 72. 72 •UnsupportedOperationException 返 • JDK-7059085 (非公開) •Java SE 1.2 時代 非推奨 •Thread.stop() 残 • いえ inconsistent state 留 せ 処理 危険 伴う 注意 Thread.stop(Throwable) throw UOE Copyright©2016 NTT corporation 前 ョン い
  • 73. 73 • Arrays.asList(x).toArrays() returns Object[] (JDK-6260652) • 配列 ン(clone) 返 い • JDK 9 Object[] 返 Behavior changed API Copyright©2016 NTT corporation JEP 関係 い API 挙動変更
  • 74. 74 • _ 1文 禁 (JDK-8061549) • 排除 い • JLS §15.27.1. Lambda Parameters (Java 8) Disallow _ as a one-character identifier by JEP 213: Milling Project Coin Copyright©2016 NTT corporation いい 前 授け う
  • 75. 75 •String 化 一環 内部 (value) 型 char[] byte[] 変更 •1文 毎 2byte(UTF-16) 1byte 扱 え 1byte 以外 従来通 • 回避 内部 直接 け渡 意外 多い 注意 The value field of String is no longer char[] by JEP 254: Compact Strings Copyright©2016 NTT corporation 文 列 性能 永遠 課題
  • 76. 76 •RMI HTTP proxy •RMI/JRMP HTTP tunneling 実装 削除 (JDK-8155978) The entire HTTP proxying mechanism of RMI deprecated in JDK 8 will be removed Copyright©2016 NTT corporation 前 ョン 非推奨化 削除 一環
  • 77. 77 Deprecate com.sun.jarsigner package by JDK-8076535 Copyright©2016 NTT corporation jarsigner コ ン 自体 変更 •独自 JAR 署 方法 実装 •jarsigner コ ン -altsigner 利用 •低 且 利用者 居 い 非推奨
  • 78. 78 周 変更 Copyright©2016 NTT corporation Serviceability tool
  • 79. 79 Good bye hprof by JEP 240 Copyright©2016 NTT corporation [PR] heap profiler & visualizer HeapStats ! •hprof 提供 く • 元々 JVM TI BCI コ あ 非公式扱 い •コ HeapDump 機能 残 •HeapDump jcmd 等 代替 可能
  • 80. 80 Good bye jhat by JEP 241 Copyright©2016 NTT corporation [PR] heap profiler & visualizer HeapStats ! •jhat 提供停 •hprof 様 コ 残 • experimental あ 利用 少 • Eclipse MAT 代用可能
  • 81. 81 •native2ascii • JEP 226 UTF-8 利用可能 •VisualVM •JDK 梱 く 公式サ 得 必要 あ (blogs.oracle.com/nbprofiler) • https://blogs.oracle.com/java-platform- group/entry/visual_vm_in_jdk_9 Good bye tools Copyright©2016 NTT corporation [PR] heap profiler & visualizer HeapStats !
  • 82. 82 JEP 228: Add More Diagnostic Commands Copyright©2016 NTT corporation Domain Num. Abstract PerfCounter 1 - Performance Counter ManagementAgent 4 +1 JMX agent Thread 1 - Thread dump GC 8 +2 -1 Heap / GC / Finalization VM 15 +8 Runtime info. (log/native mem/flag/etc.) Compiler 7 - JIT Compiler JVMTI 2 - JVMTI agent Removed GC.rotate_log to VM domain jcmd 機能 強化 (基本的 新機能)
  • 83. 83 影響 あ う 変更 Copyright©2016 NTT corporation 影響度合い 掴 い • Windows 32 Client VM 廃 • Unicode CLDR (JEP 252) • -Djava.locale.providers=JRE,SPI 従来通 • JavaDB (Apache Derby) 廃 (JDK-8004716) • Derby 自体 Apache 開発 け い • StringBuilder::append 生成 コ 変更 (JEP 280) • invokedynamic 利用 JDK library function ぶ う • 新機能 紹 性能改善 コ 関わ う 処理 あ い 思わ …