SlideShare a Scribd company logo
1 of 82
Download to read offline
JDK Update
KUBOTA Yuji
@sugarlife
NTT OSSセン
JavaOne 2015 報告会@東京
Copyright©2015 NTT corp. All Rights Reserved.
Glossary
• Java SE
–Oracle 提供 い JRE, JDK
• JDK
–Java Developer Kit
– Oracle 提供 い
限 い (例:OpenJDK)
本 JDK 表現
Copyright©2015 NTT corp. All Rights Reserved. 2
KUBOTA Yuji @sugarlife
• OpenJDK ー
–コ 解析 GC ー ン , etc…
• 解析支援 ー HeapStats 開
–多数 商用 元気 稼働中 :)
• 難聴者
–資料的 多用
写真 人 セン 凄い 実感中
Copyright©2015 NTT corp. All Rights Reserved. 3
NTT OSSセン
• NTT ー OSS 活用 支え 部隊
*)OSSVERT®:OSs Suites VERified Technically 技術検証済 OSS組合せ
事業会社
SI会社
問合せ対応 導
入支援 保 等
技術検証
導入推進
/
ー 類開
技術者育成
人材交流
各種
OSS コ
設計, 開
, 運用
ー 各社
ー
ベン
NTT
研究所
等
様
ー
連携
開
連携
OSS ー
ー
NTT OSSセン
OSS適用推進
(OSSVERT®*検証)
技術開
(DBMS,高可用 等)
ソ
基盤技術力向
Kernel, PostgreSQL, Pacemaker, Tomcat, etc
Copyright©2015 NTT corp. All Rights Reserved. 4
Why JavaOne ?
結婚式 ー 活躍
Copyright©2015 NTT corp. All Rights Reserved. 5
•課題:Java 進化方向
•人物:誰 何 担当
•詳細:技術内容や事例
JavaOne 行 何 見聞
個人的 重要 ン
Copyright©2015 NTT corp. All Rights Reserved. 6
現在 JDK 状況
• JDK 8 最新版
–Oracle JDK JDK 7 以前 公開
ー 停 (有償版 続い )
–OpenJDK RedHat ン ン
• JDK 9 来年 ー 予定
–2015/12/10: Feature Complete
–2016/09/22: General Availability
次 JavaOne 最終日 合わせ
Copyright©2015 NTT corp. All Rights Reserved. 7
何 大 く変わ ?
• JDK 9
–Module 導入 (Project Jigsaw)
• Mark Reinhold
• JDK 10+
–HW, OS へ 最適化 (Project Valhalla,
Project Panama)
• Brian Goetz, John Rose, Charles Nutter
10+ 殆 Update (去年 報告会)
Copyright©2015 NTT corp. All Rights Reserved. 8
JDK 9 =
Project
Jigsaw
Project Jigsaw JVM 変更(影響)範
多岐 渡 得 い面 あ
そ 以外
+
Copyright©2015 NTT corp. All Rights Reserved. 9
Project Jigsaw
以外 変更
Project Jigsaw 長い 後回
Copyright©2015 NTT corp. All Rights Reserved. 10
Language and Tooling
• User-facing features
–jshell
–Java.Doc.Next
–Cross compiling and the javac –release
–Milling Project Coin
–Deprecation and imports
• Re-engineering javac
ー 関わ 言語や ー 変更点
Copyright©2015 NTT corp. All Rights Reserved. 11
Language and Tooling
• User-facing features
–jshell
–Java.Doc.Next
–Cross compiling and the javac –release
–Milling Project Coin
–Deprecation and imports
• Re-engineering javacRead-Eval-Print-Loop Java 場
Good-bye {Sample,Example,Test}.java
Copyright©2015 NTT corp. All Rights Reserved. 12
Language and Tooling
• User-facing features
–jshell
–Java.Doc.Next
–Cross compiling and the javac –release
–Milling Project Coin
–Deprecation and imports
• Re-engineering javac
検索機能追加, HTML5対応, Doclet 改善, 等
Copyright©2015 NTT corp. All Rights Reserved. 13
Language and Tooling
• User-facing features
–jshell
–Java.Doc.Next
–Cross compiling and the javac –release
–Milling Project Coin
–Deprecation and imports
• Re-engineering javac
javac 古い ー ン N 合わせ 場合
-source N -target N 他
-bootclasspath jdkN/lib/rt.jar 必要
-release N
後 過去 3 ー ン 対応(9 6)
Copyright©2015 NTT corp. All Rights Reserved. 14
Language and Tooling
• User-facing features
–jshell
–Java.Doc.Next
–Cross compiling and the javac –release
–Milling Project Coin
–Deprecation and imports
• Re-engineering javac“_” 命 禁 , private interface methods,
匿 ン 対応, 等
Copyright©2015 NTT corp. All Rights Reserved. 15
Language and Tooling
• User-facing features
–jshell
–Java.Doc.Next
–Cross compiling and the javac –release
–Milling Project Coin
–Deprecation and imports
• Re-engineering javac
jdk javac lint warnings 0
Copyright©2015 NTT corp. All Rights Reserved. 16
Language and Tooling
• User-facing features
–jshell
–Java.Doc.Next
–Cross compiling and the javac –release
–Milling Project Coin
–Deprecation and imports
• Re-engineering javac
超要約 Diamond Nest祭 く
Copyright©2015 NTT corp. All Rights Reserved. 17
Language and Tooling
• User-facing features
–jshell
–Java.Doc.Next
–Cross compiling and the javac –release
–Milling Project Coin
–Deprecation and imports
• Re-engineering javac
出展:https://blogs.oracle.com/darcy/resource/JavaOne/J1_2015-jdk9-
langtools.pdf P.99
Copyright©2015 NTT corp. All Rights Reserved. 18
非互換 変更点
• New version-string format, “_” 1文 命 禁
• 6 非推奨 ソ 削除 (JEP 162)
• JDK 内部 API セ 化 (削除 い)
• JDK / JRE ン ー 変更 (JEP 220)
– JDK jre 削除
– ー 編集可能 構成 lib conf へ, 等
– rt.jar, tools.jar 等 内部 削除 (再構築)
• ー 変え 以 削除 (JEP 261)
– Endorsed-standards override and extension mechanisms
– -Xbootclasspath, -Xbootclasspath/p, sun.boot.class.path
詳細や代替方法 各 JEP 確認 う
Copyright©2015 NTT corp. All Rights Reserved. 19
非互換 変更点
• New version-string format, “_” 1文 命 禁
• 6 非推奨 ソ 削除 (JEP 162)
• JDK 内部 API セ 化 (削除 い)
• JDK / JRE ン ー 変更 (JEP 220)
– JDK jre 削除
– ー 編集可能 構成 lib conf へ, 等
– rt.jar, tools.jar 等 内部 削除 (再構築)
• ー 変え 以 削除 (JEP 261)
– Endorsed-standards override and extension mechanisms
– -Xbootclasspath, -Xbootclasspath/p, sun.boot.class.path
Jigsaw 影響 大 さ 窺え
Copyright©2015 NTT corp. All Rights Reserved. 20
Project Jigsaw 変更
Project Jigsaw
長い
Copyright©2015 NTT corp. All Rights Reserved. 21
Backgrounds
• JAR Hell
Hadoop 様子
Copyright©2015 NTT corp. All Rights Reserved. 22
Backgrounds
• JAR Hell
会場:(笑) 某Hadoopコ :(戦慄)
Copyright©2015 NTT corp. All Rights Reserved. 23
Backgrounds
• JAR Hell 課題
–紛失 ?
–コン 生?
–内部 API 全 変更 ?
• JAR 抽象化機構 必要
–Module 導入
化 JDK 解決
Copyright©2015 NTT corp. All Rights Reserved. 24
Module
• Package コン
–Module
•Package(s)
–Class(es) & Interface(s)
»Field(s) & Method(s)
ー ー ン 作
Copyright©2015 NTT corp. All Rights Reserved. 25
Module
• 新 コン
各コン ( ー )
•依 関係 明確化
•他コン 妨 い
•特定 ー 公開
風 い い
Copyright©2015 NTT corp. All Rights Reserved. 26
大雑把 ー
• Before
依 関係 明確
Copyright©2015 NTT corp. All Rights Reserved. 27
a.jar
d.jarc.jar
b.jar
?
• After
mod a
mod dmod c
mod b
$ java –mp mod_dir 
mymod.Main
$ java –cp a.jar:
b.jar:c.jar:d.jar 
myapp.Main
実際 ー 作成方法 追 行 う
Copyright©2015 NTT corp. All Rights Reserved. 28
ー 作成
ー 作
Copyright©2015 NTT corp. All Rights Reserved. 29
com.foo.bar
ー い い
Copyright©2015 NTT corp. All Rights Reserved. 30
com.foo.bar
com.foo.bar.alpha.Alpha
com.foo.bar.beta.Beta
com.foo.internal.Internal
:
ー い い
Copyright©2015 NTT corp. All Rights Reserved. 31
com.foo.bar
com.foo.bar.alpha.Alpha
com.foo.bar.beta.Beta
com.foo.internal.Internal
:
module-info.java src ベ
Copyright©2015 NTT corp. All Rights Reserved. 32
com.foo.bar
com.foo.bar.alpha.Alpha
com.foo.bar.beta.Beta
com.foo.internal.Internal
:
ー 情報 言
Copyright©2015 NTT corp. All Rights Reserved. 33
com.foo.bar
module com.foo.bar {
}
com.foo.bar.alpha.Alpha
com.foo.bar.beta.Beta
com.foo.internal.Internal
:
ー 簡易 表現
Copyright©2015 NTT corp. All Rights Reserved. 34
module com.foo.bar {
}
com.foo.bar
実装 依 ー 2 追加
※ java.* JDK ー 表
Copyright©2015 NTT corp. All Rights Reserved. 35
module com.foo.bar {
}
java.sql
com.foo.bar
com.foo.baz
依 ー う 定義
Copyright©2015 NTT corp. All Rights Reserved. 36
module com.foo.bar {
requires com.foo.baz;
requires java.sql;
}
java.sql
com.foo.bar
com.foo.baz
Copyright©2015 NTT corp. All Rights Reserved. 37
うい 依 関係 場合
module com.foo.bar {
requires java.sql;
requires java.logging;
:
} com.foo.bar
java.sql
java.logging
module java.sql {
:
requires java.logging;
:
}
Copyright©2015 NTT corp. All Rights Reserved. 38
module java.sql {
:
requires public java.logging;
:
}
う 定義 requires
依 可能 (暗黙 可読性)
module com.foo.bar {
requires java.sql;
:
}
reads
com.foo.bar
java.sql
java.logging
※: java.sql 通 定義さ
依 ー 定義
Copyright©2015 NTT corp. All Rights Reserved. 39
module com.foo.bar {
requires com.foo.baz;
requires java.sql;
}
com.foo.baz java.sql
java.logging
com.foo.bar
Copyright©2015 NTT corp. All Rights Reserved. 40
com.foo.bar
次 ー 内 あ ー 注目
com.foo.internal
com.foo.bar.alpha
com.foo.bar.beta
module com.foo.bar {
requires com.foo.baz;
requires java.sql;
}
java.logging
com.foo.baz java.sql
Copyright©2015 NTT corp. All Rights Reserved. 41
com.foo.bar
com.foo.internal
com.foo.bar.alpha
com.foo.bar.beta
内部 API 変更時 影響 抑え
他 ー 公開 くあ せ
module com.foo.bar {
requires com.foo.baz;
requires java.sql;
}
java.logging
com.foo.baz java.sql
Copyright©2015 NTT corp. All Rights Reserved. 42
com.foo.bar
java.sql
com.foo.internal
com.foo.bar.alpha
com.foo.bar.beta
module com.foo.bar {
requires com.foo.baz;
requires java.sql;
exports com.foo.bar.alpha;
exports com.foo.bar.beta;
}
他 ー 公開 ー
(exports) そ 情報 定義
java.logging
com.foo.baz
Copyright©2015 NTT corp. All Rights Reserved. 43
module com.foo.bar {
requires com.foo.baz;
requires java.sql;
exports com.foo.bar.alpha;
exports com.foo.bar.beta;
}
exports 含 い い場合 public
あ 他 ー 参照 せ
com.foo.internal
com.foo.bar.alpha
com.foo.bar.beta
reads reads
com.foo.bar
com.foo.app
Copyright©2015 NTT corp. All Rights Reserved. 44
module com.foo.bar {
requires com.foo.baz;
requires java.sql;
exports com.foo.bar.alpha to
com.foo.app,
com.foo.xxx;
exports com.foo.bar.beta to
com.foo.app,
com.foo.xxx;
}
com.foo.internal
com.foo.bar.alpha
com.foo.bar.beta
reads
com.foo.zzz
reads
com.foo.bar
exports 先 ー 限定
com.foo.app
Accessibility
–public
–protected
–<package>
–private
従来 セ 制限 考え方 う
Copyright©2015 NTT corp. All Rights Reserved. 45
Accessibility
–public to everyone
–public but only to specific modules
–public only within a module
–protected
–<package>
–private
JDK9 public 範 指定可能 !
Copyright©2015 NTT corp. All Rights Reserved. 46
exports p;
exports p to m;
exports
Services
• java.util.ServiceLoader
META-INF/services/* 変更 形
Copyright©2015 NTT corp. All Rights Reserved. 47
module com.mysql.jdbc {
requires java.sql;
exports com.mysql.jdbc;
provides java.sql.Driver with com.mysql.jdbc.Driver;
}
module java.sql {
:
exports javax.transaction.xa;
uses java.sql.Driver;
}
JDK Module 化
JDK ー 化 脱
Copyright©2015 NTT corp. All Rights Reserved. 48
http://openjdk.java.net/jeps/200
JDK (API) Module 化
ー ー 化 完了
Copyright©2015 NTT corp. All Rights Reserved. 49
http://openjdk.java.net/projects/jigsaw/j1/intro-
modular-dev-j1-2015.pdf P.19
ー ン情報
• -listmods
全部 9.0
Copyright©2015 NTT corp. All Rights Reserved. 50
$ jdk1.9.0-ea/bin/java -listmods
java.activation@9.0
java.annotations.common@9.0
java.base@9.0
java.compact1@9.0
:
Java 界 的
Copyright©2015 NTT corp. All Rights Reserved. 51
ー 世代
実行方法
コン
• -d <Directory>
com.foo.app ー さえ
Copyright©2015 NTT corp. All Rights Reserved. 52
$ javac –d mods/com.foo.app 
src/com.foo.app/module-info.java 
src/com.foo.app/com/foo/app/Main.java 
:
src
`-- com.foo.app
|-- com
| `-- foo
| `-- app
| `-- Main.java
`-- module-info.java
mods
`-- com.foo.app
|-- com
| `-- foo
| `-- app
| `-- Main.class
`-- module-info.class
依 module 参照
• -modulepath mod1:mod2 …
classpath 使用感 -mp OK
Copyright©2015 NTT corp. All Rights Reserved. 53
$ java(c) –modulepath dir :dir :dir …
依 付 コン
• -mp <mods> -d <Directory>
-d 依 有無関係 く必要
Copyright©2015 NTT corp. All Rights Reserved. 54
$ javac –mp mods –d mods/com.foo.bar 
src/com.foo.bar/module-info.java 
src/com.foo.bar/com/foo/bar/alpha/…
:
src/com.foo.bar/module-info.java
src/com.foo.bar/com/foo/bar/alpha/Alpha.java
:
mods/com.foo.bar/module-info.class
mods/com.foo.bar/com/foo/bar/alpha/Alpha.class
:
複数 ー 時コン
• -modulesourcepath <src>
-d 指定先 自動生成
Copyright©2015 NTT corp. All Rights Reserved. 55
$ javac -modulesourcepath src -d mods 
src/com.foo.bar/module-info.java 
src/com.foo.bar/com/foo/bar/alpha/…
:
mods/com.foo.bar/module-info.class
mods/com.foo.bar/com/foo/bar/alpha/Alpha.class
:
mods/com.foo.othermodule/module-info.class
mods/com.foo.othermodule/com/foo/othermodule/…
:
実行
• -m <module>/<main-class>
そ 実行 -m 新 く必要
Copyright©2015 NTT corp. All Rights Reserved. 56
$ java –mp mods 
–m com.foo.app/com.foo.app.Main
Hello world from module com.foo.app!
module name main class
依 ー 確認
• -Xdiag:resolver
各 ー 間 依 関係 解
Copyright©2015 NTT corp. All Rights Reserved. 57
$ java –Xdiag:resolver –mp mods 
–m com.foo.app/com.foo.app.Main
[Resolve] Root module com.foo.app located
[Resolve] (file:///ykubota/mods/com.foo.app/)
[Resolve] Module java.base located, required by com.foo.app
[Resolve] (jrt:/java.base)
: (依 ー 全部読込 要求 ー 共 出力)
[Resolve] Resolve completed
[Resolve] com.foo.app
[Resolve] java.base
: (読込 ー )
Hello world from module com.foo.app!
modular JAR 作 方
• -C <path/to/module>
--module-version ー ン 入力可能
Copyright©2015 NTT corp. All Rights Reserved. 58
$ jar –-create –-file mlib/app.jar 
--main-class com.foo.app.Main 
-C mods/com.foo.app .
module-info.class
com/foo/app/Main.class
:
app.jar
modular JAR 確認
• --print-module-descriptor (-p)
java.base 基底 ー = MANDATED
Copyright©2015 NTT corp. All Rights Reserved. 59
$ jar -p –-file mlib/app.jar
Name:
com.foo.app
Requires:
java.base [ MANDATED ]
:
Main class:
com.foo.app.Main
modular JAR 実行
• -mp <path/to/jar>
Copyright©2015 NTT corp. All Rights Reserved. 60
$ java –mp mlib –m com.foo.app
Hello world from module com.foo.app!
jar 生成時 ン 指定
-m ン 不要
classpath modular jar
• -cp <path/to/jar>
Copyright©2015 NTT corp. All Rights Reserved. 61
$ java -cp mlib/app.jar com.foo.app.Main
Hello world from module com.foo.app!
後方互換性 あ java -jar app.jar OK
別 jar 依 あ 場合
• bar.jar 必要 ー 想定
bar.jar 含 必要 ー
Copyright©2015 NTT corp. All Rights Reserved. 62
Exception in thread "main" java.lang.NoClassDefFoundError: com/foo/bar/Something
at com.foo.app.Main.main(Main.java:8)
Caused by: java.lang.ClassNotFoundException: com.foo.bar.Something
at jdk.internal.misc.BuiltinClassLoader.loadClass(java.base@9.0/BuiltinClassLoader.java:368)
at
jdk.internal.misc.ClassLoaders$AppClassLoader.loadClass(java.base@9.0/ClassLoaders.java:167)
at java.lang.ClassLoader.loadClass(java.base@9.0/ClassLoader.java:373)
... 1 more
$ java -cp mlib/app.jar com.foo.app.Main
別 jar 依 あ 場合
• ー 非対応 JAR 場合
Copyright©2015 NTT corp. All Rights Reserved. 63
$ java -cp /path/to/bar.jar:mlib/app.jar 
com.foo.app.Main
Hello world from module com.foo.app!
後方互換性 あ ー 対応 JAR
場合 方法 利用可能
別 jar 依 あ 場合
• ー 対応 JAR 場合
Copyright©2015 NTT corp. All Rights Reserved. 64
$ java -mp /directory/of/bar.jar/ 
–addmods com.foo.bar 
-cp mlib/app.jar com.foo.app.Main
Hello world from module com.foo.app!
-mp 指定 場合 addmods 必要
-mp く 指定
別 jar 依 あ 場合
•
Copyright©2015 NTT corp. All Rights Reserved. 65
$ java -mp <Modular JAR > 
-cp <Modular 非対応 JAR 列挙> 
-m com.foo.app
Hello world from module com.foo.app!
個人的
実行可能 ー 作成
• Linking
組 込 やセキ 活躍 ?
Copyright©2015 NTT corp. All Rights Reserved. 66
$ jlink --modulepath $JDKMODS 
--addmods java.base --output myimage
$ myimage/bin/java –listmods
java.base@9.0
※:JDKMODS = $JAVA_HOME(jdk9)/jmods/
Linking
• jlink
時代 java ー 乱立 恐怖
Copyright©2015 NTT corp. All Rights Reserved. 67
$ jlink --modulepath $JDKMODS:mlib 
--addmods com.foo.app --output myimage
$ myimage/bin/java –listmods
java.base@9.0
java.logging@9.0
:
com.foo.bar
com.foo.app
Linking (実行)
• jlink
組 込 -mp 不要
Copyright©2015 NTT corp. All Rights Reserved. 68
$ myimage/bin/java -m com.foo.app
$ myimage/bin/com.foo.app
Hello world from module com.foo.app!
myimage/
|-- bin
| |-- com.foo.app
| |-- java
: `-- keytool
一例 紹
Copyright©2015 NTT corp. All Rights Reserved. 69
自作
ー 対応
ン ーン
• ン
更 橙=普通 jar, 青=module
Copyright©2015 NTT corp. All Rights Reserved. 70
myapp.jar mylib.jar
external-core-1.2.3.jar external-lib-1.2.3.jar
java.base java.logging java.sql
依 確認
• jdeps
依 置い 実行
Copyright©2015 NTT corp. All Rights Reserved. 71
$ jdeps –s lib/myapp.jar lib/mylib.jar
myapp.jar -> lib/external-core-1.2.3.jar
myapp.jar -> lib/external-lib-1.2.3.jar
myapp.jar -> mylib.jar
myapp.jar -> java.base
mylib.jar -> java.base
自作 ー 化
• mylib
mylib myapp 限定 変更 容易
Copyright©2015 NTT corp. All Rights Reserved. 72
module mylib {
requires java.base;
exports com.myapp.lib to myapp;
}
自作 ー 化
• myapp
外部 ー 様 定義
Copyright©2015 NTT corp. All Rights Reserved. 73
module myapp {
requires mylib;
requires java.base;
requires external.core;
requires external.lib;
}
Automatic modules
–JAR 変更 必要
–JAR ー
生成さ
–全 ー exports
–他 全 ー requires
可能性 あ 全部舐 う
Copyright©2015 NTT corp. All Rights Reserved. 74
requires external.core;
requires external.lib;
情報 自動生成
• jdeps -genmoduleinfo
全 ー exports 要修
Copyright©2015 NTT corp. All Rights Reserved. 75
Writing to src/mylib/module-info.java
Writing to src/myapp/module-info.java
Writing to src/external-core/module-…
Writing to src/external-lib/module-…
$ jdeps –genmoduleinfo src libs/*.jar
最終的 結果
作成 部分
Copyright©2015 NTT corp. All Rights Reserved. 76
external.core external.lib
java.base java.logging java.se
myapp mylib
最終的 結果
外部 依 関係 必要過多状態
Copyright©2015 NTT corp. All Rights Reserved. 77
external.core external.lib
java.base java.logging java.se
myapp mylib
コン
• 配置
• コン
や 集大成
Copyright©2015 NTT corp. All Rights Reserved. 78
./lib/external*.jar
./src/myapp/module-info.java
./src/myapp/… <Java files>
./src/mylib/… <Java files>
$ javac -modulesourcepath src –mp lib –d mods ./src/…
$ jar --create --file mlib/mylib.jar –C mods/mylib .
$ jar --create --file mlib/myapp.jar –C mods/myapp . 
--main-class myapp.Main
実行 before/after
• Before
• After
Copyright©2015 NTT corp. All Rights Reserved. 79
$ java –cp lib/myapp.jar:lib/mylib.jar:
lib/external-core-1.2.3.jar:
lib/external-lib-1.2.3.jar 
myapp.Main
$ java –mp mlib:lib –m myapp
End
Copyright©2015 NTT corp. All Rights Reserved. 80
Jigsaw 考え方
出展: http://openjdk.java.net/projects/jigsaw/j1/jigsaw-under-
the-hood-j1-2015.pdf P.58
End
Copyright©2015 NTT corp. All Rights Reserved. 81
Reference
openjdk.java.net/
projects/jigsaw/
End
い
Copyright©2015 NTT corp. All Rights Reserved. 82

More Related Content

What's hot

Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?Yuji Kubota
 
Advanced database monitoring in modern java
Advanced database monitoring in modern javaAdvanced database monitoring in modern java
Advanced database monitoring in modern javaChihiro Ito
 
Javaにおけるネイティブコード連携の各種手法の紹介
Javaにおけるネイティブコード連携の各種手法の紹介Javaにおけるネイティブコード連携の各種手法の紹介
Javaにおけるネイティブコード連携の各種手法の紹介khisano
 
Nashorn in the future (Japanese)
Nashorn in the future (Japanese)Nashorn in the future (Japanese)
Nashorn in the future (Japanese)Logico
 
Panamaを先取り!? JVMCIでJITと遊ぶ
Panamaを先取り!? JVMCIでJITと遊ぶPanamaを先取り!? JVMCIでJITと遊ぶ
Panamaを先取り!? JVMCIでJITと遊ぶYasumasa Suenaga
 
JDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjugJDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjugYuji Kubota
 
Javaアプリケーションサーバ 構築・運用の勘所
Javaアプリケーションサーバ 構築・運用の勘所Javaアプリケーションサーバ 構築・運用の勘所
Javaアプリケーションサーバ 構築・運用の勘所Takahiro YAMADA
 
WildFly Swarm - Rightsize Your Java EE Apps
WildFly Swarm - Rightsize Your Java EE AppsWildFly Swarm - Rightsize Your Java EE Apps
WildFly Swarm - Rightsize Your Java EE AppsYoshimasa Tanabe
 
Jakarta EE 9 と これから
Jakarta EE 9 と これからJakarta EE 9 と これから
Jakarta EE 9 と これからKenji Kazumura
 
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?Takahiro YAMADA
 
次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて次世代Webコンテナ Undertowについて
次世代Webコンテナ UndertowについてYoshimasa Tanabe
 
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5Takahiro YAMADA
 
Java トラブル解析支援ツール HeapStats のご紹介
Java トラブル解析支援ツール HeapStats のご紹介Java トラブル解析支援ツール HeapStats のご紹介
Java トラブル解析支援ツール HeapStats のご紹介Shinya Takebayashi
 
Jdk9で変更になる(かも知れない)jvmオプションの標準設定
Jdk9で変更になる(かも知れない)jvmオプションの標準設定Jdk9で変更になる(かも知れない)jvmオプションの標準設定
Jdk9で変更になる(かも知れない)jvmオプションの標準設定Kazuyuki Nakamura
 
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
 
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]David Buck
 
Lt agetsuma 拡大するcdi
Lt agetsuma 拡大するcdiLt agetsuma 拡大するcdi
Lt agetsuma 拡大するcdiNorito Agetsuma
 
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)NTT DATA Technology & Innovation
 

What's hot (20)

Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?
 
Advanced database monitoring in modern java
Advanced database monitoring in modern javaAdvanced database monitoring in modern java
Advanced database monitoring in modern java
 
Javaにおけるネイティブコード連携の各種手法の紹介
Javaにおけるネイティブコード連携の各種手法の紹介Javaにおけるネイティブコード連携の各種手法の紹介
Javaにおけるネイティブコード連携の各種手法の紹介
 
Nashorn in the future (Japanese)
Nashorn in the future (Japanese)Nashorn in the future (Japanese)
Nashorn in the future (Japanese)
 
Java EE8 Report
Java EE8 ReportJava EE8 Report
Java EE8 Report
 
JDK:新しいリリースモデル解説 @ 熊本・福岡
JDK:新しいリリースモデル解説 @ 熊本・福岡JDK:新しいリリースモデル解説 @ 熊本・福岡
JDK:新しいリリースモデル解説 @ 熊本・福岡
 
Panamaを先取り!? JVMCIでJITと遊ぶ
Panamaを先取り!? JVMCIでJITと遊ぶPanamaを先取り!? JVMCIでJITと遊ぶ
Panamaを先取り!? JVMCIでJITと遊ぶ
 
JDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjugJDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjug
 
Javaアプリケーションサーバ 構築・運用の勘所
Javaアプリケーションサーバ 構築・運用の勘所Javaアプリケーションサーバ 構築・運用の勘所
Javaアプリケーションサーバ 構築・運用の勘所
 
WildFly Swarm - Rightsize Your Java EE Apps
WildFly Swarm - Rightsize Your Java EE AppsWildFly Swarm - Rightsize Your Java EE Apps
WildFly Swarm - Rightsize Your Java EE Apps
 
Jakarta EE 9 と これから
Jakarta EE 9 と これからJakarta EE 9 と これから
Jakarta EE 9 と これから
 
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
 
次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて
 
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
 
Java トラブル解析支援ツール HeapStats のご紹介
Java トラブル解析支援ツール HeapStats のご紹介Java トラブル解析支援ツール HeapStats のご紹介
Java トラブル解析支援ツール HeapStats のご紹介
 
Jdk9で変更になる(かも知れない)jvmオプションの標準設定
Jdk9で変更になる(かも知れない)jvmオプションの標準設定Jdk9で変更になる(かも知れない)jvmオプションの標準設定
Jdk9で変更になる(かも知れない)jvmオプションの標準設定
 
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
 
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
 
Lt agetsuma 拡大するcdi
Lt agetsuma 拡大するcdiLt agetsuma 拡大するcdi
Lt agetsuma 拡大するcdi
 
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
 

Similar to JavaOne 2015 JDK Update (Jigsaw) #j1jp

Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要Chihiro Ito
 
Prepare for Java 9 #jjug
Prepare for Java 9 #jjugPrepare for Java 9 #jjug
Prepare for Java 9 #jjugYuji Kubota
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)NTT DATA Technology & Innovation
 
JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方Takahiro YAMADA
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決オラクルエンジニア通信
 
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugOpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugYuji Kubota
 
OSSで作るOpenStack監視システム
OSSで作るOpenStack監視システムOSSで作るOpenStack監視システム
OSSで作るOpenStack監視システムsatsuki fukazu
 
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020Hirofumi Iwasaki
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)NTT DATA Technology & Innovation
 
デモとディスカッションで体験するOracle DBトラブル対応
デモとディスカッションで体験するOracle DBトラブル対応デモとディスカッションで体験するOracle DBトラブル対応
デモとディスカッションで体験するOracle DBトラブル対応歩 柴田
 
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)TIS Inc.
 
Start of a New era: Apache YARN 3.1 and Apache HBase 2.0
Start of a New era: Apache YARN 3.1 and Apache HBase 2.0Start of a New era: Apache YARN 3.1 and Apache HBase 2.0
Start of a New era: Apache YARN 3.1 and Apache HBase 2.0DataWorks Summit
 
JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209
JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209
JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209オラクルエンジニア通信
 
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)NTT DATA OSS Professional Services
 
Eclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストEclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストAtsuhiro Kubo
 
openstack_neutron-dvr_os5thaniv_20150713
openstack_neutron-dvr_os5thaniv_20150713openstack_neutron-dvr_os5thaniv_20150713
openstack_neutron-dvr_os5thaniv_20150713Takehiro Kudou
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)NTT DATA Technology & Innovation
 

Similar to JavaOne 2015 JDK Update (Jigsaw) #j1jp (20)

Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要
 
Prepare for Java 9 #jjug
Prepare for Java 9 #jjugPrepare for Java 9 #jjug
Prepare for Java 9 #jjug
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
 
JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
 
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjugOpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
 
OSSで作るOpenStack監視システム
OSSで作るOpenStack監視システムOSSで作るOpenStack監視システム
OSSで作るOpenStack監視システム
 
第9回しゃちほこオラクル倶楽部
第9回しゃちほこオラクル倶楽部第9回しゃちほこオラクル倶楽部
第9回しゃちほこオラクル倶楽部
 
20190202 jdk new_release_model_sendai
20190202 jdk new_release_model_sendai20190202 jdk new_release_model_sendai
20190202 jdk new_release_model_sendai
 
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
Jakarta EEとMicroprofileの上手な付き合い方と使い方 - JakartaOne Livestream Japan 2020
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
デモとディスカッションで体験するOracle DBトラブル対応
デモとディスカッションで体験するOracle DBトラブル対応デモとディスカッションで体験するOracle DBトラブル対応
デモとディスカッションで体験するOracle DBトラブル対応
 
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
 
Start of a New era: Apache YARN 3.1 and Apache HBase 2.0
Start of a New era: Apache YARN 3.1 and Apache HBase 2.0Start of a New era: Apache YARN 3.1 and Apache HBase 2.0
Start of a New era: Apache YARN 3.1 and Apache HBase 2.0
 
JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209
JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209
JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209
 
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
 
JDK:新しいリリースモデル解説 @ 岡山・広島
JDK:新しいリリースモデル解説 @ 岡山・広島JDK:新しいリリースモデル解説 @ 岡山・広島
JDK:新しいリリースモデル解説 @ 岡山・広島
 
Eclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストEclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテスト
 
openstack_neutron-dvr_os5thaniv_20150713
openstack_neutron-dvr_os5thaniv_20150713openstack_neutron-dvr_os5thaniv_20150713
openstack_neutron-dvr_os5thaniv_20150713
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
 

More from 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
 
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
 
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
 
Project Jigsaw #kanjava
Project Jigsaw #kanjavaProject Jigsaw #kanjava
Project Jigsaw #kanjavaYuji Kubota
 
Java 9 and Future #jjug
Java 9 and Future #jjugJava 9 and Future #jjug
Java 9 and Future #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
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM LoggingYuji 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
 
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualOpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualYuji 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
 
HeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewHeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewYuji 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
 
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
 

More from Yuji Kubota (20)

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
 
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
 
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
 
Project Jigsaw #kanjava
Project Jigsaw #kanjavaProject Jigsaw #kanjava
Project Jigsaw #kanjava
 
Java 9 and Future #jjug
Java 9 and Future #jjugJava 9 and Future #jjug
Java 9 and Future #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...
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM Logging
 
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
 
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualOpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasual
 
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
 
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
 

Recently uploaded

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 

Recently uploaded (9)

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 

JavaOne 2015 JDK Update (Jigsaw) #j1jp

  • 1. JDK Update KUBOTA Yuji @sugarlife NTT OSSセン JavaOne 2015 報告会@東京 Copyright©2015 NTT corp. All Rights Reserved.
  • 2. Glossary • Java SE –Oracle 提供 い JRE, JDK • JDK –Java Developer Kit – Oracle 提供 い 限 い (例:OpenJDK) 本 JDK 表現 Copyright©2015 NTT corp. All Rights Reserved. 2
  • 3. KUBOTA Yuji @sugarlife • OpenJDK ー –コ 解析 GC ー ン , etc… • 解析支援 ー HeapStats 開 –多数 商用 元気 稼働中 :) • 難聴者 –資料的 多用 写真 人 セン 凄い 実感中 Copyright©2015 NTT corp. All Rights Reserved. 3
  • 4. NTT OSSセン • NTT ー OSS 活用 支え 部隊 *)OSSVERT®:OSs Suites VERified Technically 技術検証済 OSS組合せ 事業会社 SI会社 問合せ対応 導 入支援 保 等 技術検証 導入推進 / ー 類開 技術者育成 人材交流 各種 OSS コ 設計, 開 , 運用 ー 各社 ー ベン NTT 研究所 等 様 ー 連携 開 連携 OSS ー ー NTT OSSセン OSS適用推進 (OSSVERT®*検証) 技術開 (DBMS,高可用 等) ソ 基盤技術力向 Kernel, PostgreSQL, Pacemaker, Tomcat, etc Copyright©2015 NTT corp. All Rights Reserved. 4
  • 5. Why JavaOne ? 結婚式 ー 活躍 Copyright©2015 NTT corp. All Rights Reserved. 5
  • 6. •課題:Java 進化方向 •人物:誰 何 担当 •詳細:技術内容や事例 JavaOne 行 何 見聞 個人的 重要 ン Copyright©2015 NTT corp. All Rights Reserved. 6
  • 7. 現在 JDK 状況 • JDK 8 最新版 –Oracle JDK JDK 7 以前 公開 ー 停 (有償版 続い ) –OpenJDK RedHat ン ン • JDK 9 来年 ー 予定 –2015/12/10: Feature Complete –2016/09/22: General Availability 次 JavaOne 最終日 合わせ Copyright©2015 NTT corp. All Rights Reserved. 7
  • 8. 何 大 く変わ ? • JDK 9 –Module 導入 (Project Jigsaw) • Mark Reinhold • JDK 10+ –HW, OS へ 最適化 (Project Valhalla, Project Panama) • Brian Goetz, John Rose, Charles Nutter 10+ 殆 Update (去年 報告会) Copyright©2015 NTT corp. All Rights Reserved. 8
  • 9. JDK 9 = Project Jigsaw Project Jigsaw JVM 変更(影響)範 多岐 渡 得 い面 あ そ 以外 + Copyright©2015 NTT corp. All Rights Reserved. 9
  • 10. Project Jigsaw 以外 変更 Project Jigsaw 長い 後回 Copyright©2015 NTT corp. All Rights Reserved. 10
  • 11. Language and Tooling • User-facing features –jshell –Java.Doc.Next –Cross compiling and the javac –release –Milling Project Coin –Deprecation and imports • Re-engineering javac ー 関わ 言語や ー 変更点 Copyright©2015 NTT corp. All Rights Reserved. 11
  • 12. Language and Tooling • User-facing features –jshell –Java.Doc.Next –Cross compiling and the javac –release –Milling Project Coin –Deprecation and imports • Re-engineering javacRead-Eval-Print-Loop Java 場 Good-bye {Sample,Example,Test}.java Copyright©2015 NTT corp. All Rights Reserved. 12
  • 13. Language and Tooling • User-facing features –jshell –Java.Doc.Next –Cross compiling and the javac –release –Milling Project Coin –Deprecation and imports • Re-engineering javac 検索機能追加, HTML5対応, Doclet 改善, 等 Copyright©2015 NTT corp. All Rights Reserved. 13
  • 14. Language and Tooling • User-facing features –jshell –Java.Doc.Next –Cross compiling and the javac –release –Milling Project Coin –Deprecation and imports • Re-engineering javac javac 古い ー ン N 合わせ 場合 -source N -target N 他 -bootclasspath jdkN/lib/rt.jar 必要 -release N 後 過去 3 ー ン 対応(9 6) Copyright©2015 NTT corp. All Rights Reserved. 14
  • 15. Language and Tooling • User-facing features –jshell –Java.Doc.Next –Cross compiling and the javac –release –Milling Project Coin –Deprecation and imports • Re-engineering javac“_” 命 禁 , private interface methods, 匿 ン 対応, 等 Copyright©2015 NTT corp. All Rights Reserved. 15
  • 16. Language and Tooling • User-facing features –jshell –Java.Doc.Next –Cross compiling and the javac –release –Milling Project Coin –Deprecation and imports • Re-engineering javac jdk javac lint warnings 0 Copyright©2015 NTT corp. All Rights Reserved. 16
  • 17. Language and Tooling • User-facing features –jshell –Java.Doc.Next –Cross compiling and the javac –release –Milling Project Coin –Deprecation and imports • Re-engineering javac 超要約 Diamond Nest祭 く Copyright©2015 NTT corp. All Rights Reserved. 17
  • 18. Language and Tooling • User-facing features –jshell –Java.Doc.Next –Cross compiling and the javac –release –Milling Project Coin –Deprecation and imports • Re-engineering javac 出展:https://blogs.oracle.com/darcy/resource/JavaOne/J1_2015-jdk9- langtools.pdf P.99 Copyright©2015 NTT corp. All Rights Reserved. 18
  • 19. 非互換 変更点 • New version-string format, “_” 1文 命 禁 • 6 非推奨 ソ 削除 (JEP 162) • JDK 内部 API セ 化 (削除 い) • JDK / JRE ン ー 変更 (JEP 220) – JDK jre 削除 – ー 編集可能 構成 lib conf へ, 等 – rt.jar, tools.jar 等 内部 削除 (再構築) • ー 変え 以 削除 (JEP 261) – Endorsed-standards override and extension mechanisms – -Xbootclasspath, -Xbootclasspath/p, sun.boot.class.path 詳細や代替方法 各 JEP 確認 う Copyright©2015 NTT corp. All Rights Reserved. 19
  • 20. 非互換 変更点 • New version-string format, “_” 1文 命 禁 • 6 非推奨 ソ 削除 (JEP 162) • JDK 内部 API セ 化 (削除 い) • JDK / JRE ン ー 変更 (JEP 220) – JDK jre 削除 – ー 編集可能 構成 lib conf へ, 等 – rt.jar, tools.jar 等 内部 削除 (再構築) • ー 変え 以 削除 (JEP 261) – Endorsed-standards override and extension mechanisms – -Xbootclasspath, -Xbootclasspath/p, sun.boot.class.path Jigsaw 影響 大 さ 窺え Copyright©2015 NTT corp. All Rights Reserved. 20 Project Jigsaw 変更
  • 21. Project Jigsaw 長い Copyright©2015 NTT corp. All Rights Reserved. 21
  • 22. Backgrounds • JAR Hell Hadoop 様子 Copyright©2015 NTT corp. All Rights Reserved. 22
  • 23. Backgrounds • JAR Hell 会場:(笑) 某Hadoopコ :(戦慄) Copyright©2015 NTT corp. All Rights Reserved. 23
  • 24. Backgrounds • JAR Hell 課題 –紛失 ? –コン 生? –内部 API 全 変更 ? • JAR 抽象化機構 必要 –Module 導入 化 JDK 解決 Copyright©2015 NTT corp. All Rights Reserved. 24
  • 25. Module • Package コン –Module •Package(s) –Class(es) & Interface(s) »Field(s) & Method(s) ー ー ン 作 Copyright©2015 NTT corp. All Rights Reserved. 25
  • 26. Module • 新 コン 各コン ( ー ) •依 関係 明確化 •他コン 妨 い •特定 ー 公開 風 い い Copyright©2015 NTT corp. All Rights Reserved. 26
  • 27. 大雑把 ー • Before 依 関係 明確 Copyright©2015 NTT corp. All Rights Reserved. 27 a.jar d.jarc.jar b.jar ? • After mod a mod dmod c mod b $ java –mp mod_dir mymod.Main $ java –cp a.jar: b.jar:c.jar:d.jar myapp.Main
  • 28. 実際 ー 作成方法 追 行 う Copyright©2015 NTT corp. All Rights Reserved. 28 ー 作成
  • 29. ー 作 Copyright©2015 NTT corp. All Rights Reserved. 29 com.foo.bar
  • 30. ー い い Copyright©2015 NTT corp. All Rights Reserved. 30 com.foo.bar com.foo.bar.alpha.Alpha com.foo.bar.beta.Beta com.foo.internal.Internal :
  • 31. ー い い Copyright©2015 NTT corp. All Rights Reserved. 31 com.foo.bar com.foo.bar.alpha.Alpha com.foo.bar.beta.Beta com.foo.internal.Internal :
  • 32. module-info.java src ベ Copyright©2015 NTT corp. All Rights Reserved. 32 com.foo.bar com.foo.bar.alpha.Alpha com.foo.bar.beta.Beta com.foo.internal.Internal :
  • 33. ー 情報 言 Copyright©2015 NTT corp. All Rights Reserved. 33 com.foo.bar module com.foo.bar { } com.foo.bar.alpha.Alpha com.foo.bar.beta.Beta com.foo.internal.Internal :
  • 34. ー 簡易 表現 Copyright©2015 NTT corp. All Rights Reserved. 34 module com.foo.bar { } com.foo.bar
  • 35. 実装 依 ー 2 追加 ※ java.* JDK ー 表 Copyright©2015 NTT corp. All Rights Reserved. 35 module com.foo.bar { } java.sql com.foo.bar com.foo.baz
  • 36. 依 ー う 定義 Copyright©2015 NTT corp. All Rights Reserved. 36 module com.foo.bar { requires com.foo.baz; requires java.sql; } java.sql com.foo.bar com.foo.baz
  • 37. Copyright©2015 NTT corp. All Rights Reserved. 37 うい 依 関係 場合 module com.foo.bar { requires java.sql; requires java.logging; : } com.foo.bar java.sql java.logging module java.sql { : requires java.logging; : }
  • 38. Copyright©2015 NTT corp. All Rights Reserved. 38 module java.sql { : requires public java.logging; : } う 定義 requires 依 可能 (暗黙 可読性) module com.foo.bar { requires java.sql; : } reads com.foo.bar java.sql java.logging ※: java.sql 通 定義さ
  • 39. 依 ー 定義 Copyright©2015 NTT corp. All Rights Reserved. 39 module com.foo.bar { requires com.foo.baz; requires java.sql; } com.foo.baz java.sql java.logging com.foo.bar
  • 40. Copyright©2015 NTT corp. All Rights Reserved. 40 com.foo.bar 次 ー 内 あ ー 注目 com.foo.internal com.foo.bar.alpha com.foo.bar.beta module com.foo.bar { requires com.foo.baz; requires java.sql; } java.logging com.foo.baz java.sql
  • 41. Copyright©2015 NTT corp. All Rights Reserved. 41 com.foo.bar com.foo.internal com.foo.bar.alpha com.foo.bar.beta 内部 API 変更時 影響 抑え 他 ー 公開 くあ せ module com.foo.bar { requires com.foo.baz; requires java.sql; } java.logging com.foo.baz java.sql
  • 42. Copyright©2015 NTT corp. All Rights Reserved. 42 com.foo.bar java.sql com.foo.internal com.foo.bar.alpha com.foo.bar.beta module com.foo.bar { requires com.foo.baz; requires java.sql; exports com.foo.bar.alpha; exports com.foo.bar.beta; } 他 ー 公開 ー (exports) そ 情報 定義 java.logging com.foo.baz
  • 43. Copyright©2015 NTT corp. All Rights Reserved. 43 module com.foo.bar { requires com.foo.baz; requires java.sql; exports com.foo.bar.alpha; exports com.foo.bar.beta; } exports 含 い い場合 public あ 他 ー 参照 せ com.foo.internal com.foo.bar.alpha com.foo.bar.beta reads reads com.foo.bar com.foo.app
  • 44. Copyright©2015 NTT corp. All Rights Reserved. 44 module com.foo.bar { requires com.foo.baz; requires java.sql; exports com.foo.bar.alpha to com.foo.app, com.foo.xxx; exports com.foo.bar.beta to com.foo.app, com.foo.xxx; } com.foo.internal com.foo.bar.alpha com.foo.bar.beta reads com.foo.zzz reads com.foo.bar exports 先 ー 限定 com.foo.app
  • 45. Accessibility –public –protected –<package> –private 従来 セ 制限 考え方 う Copyright©2015 NTT corp. All Rights Reserved. 45
  • 46. Accessibility –public to everyone –public but only to specific modules –public only within a module –protected –<package> –private JDK9 public 範 指定可能 ! Copyright©2015 NTT corp. All Rights Reserved. 46 exports p; exports p to m; exports
  • 47. Services • java.util.ServiceLoader META-INF/services/* 変更 形 Copyright©2015 NTT corp. All Rights Reserved. 47 module com.mysql.jdbc { requires java.sql; exports com.mysql.jdbc; provides java.sql.Driver with com.mysql.jdbc.Driver; } module java.sql { : exports javax.transaction.xa; uses java.sql.Driver; }
  • 48. JDK Module 化 JDK ー 化 脱 Copyright©2015 NTT corp. All Rights Reserved. 48 http://openjdk.java.net/jeps/200
  • 49. JDK (API) Module 化 ー ー 化 完了 Copyright©2015 NTT corp. All Rights Reserved. 49 http://openjdk.java.net/projects/jigsaw/j1/intro- modular-dev-j1-2015.pdf P.19
  • 50. ー ン情報 • -listmods 全部 9.0 Copyright©2015 NTT corp. All Rights Reserved. 50 $ jdk1.9.0-ea/bin/java -listmods java.activation@9.0 java.annotations.common@9.0 java.base@9.0 java.compact1@9.0 :
  • 51. Java 界 的 Copyright©2015 NTT corp. All Rights Reserved. 51 ー 世代 実行方法
  • 52. コン • -d <Directory> com.foo.app ー さえ Copyright©2015 NTT corp. All Rights Reserved. 52 $ javac –d mods/com.foo.app src/com.foo.app/module-info.java src/com.foo.app/com/foo/app/Main.java : src `-- com.foo.app |-- com | `-- foo | `-- app | `-- Main.java `-- module-info.java mods `-- com.foo.app |-- com | `-- foo | `-- app | `-- Main.class `-- module-info.class
  • 53. 依 module 参照 • -modulepath mod1:mod2 … classpath 使用感 -mp OK Copyright©2015 NTT corp. All Rights Reserved. 53 $ java(c) –modulepath dir :dir :dir …
  • 54. 依 付 コン • -mp <mods> -d <Directory> -d 依 有無関係 く必要 Copyright©2015 NTT corp. All Rights Reserved. 54 $ javac –mp mods –d mods/com.foo.bar src/com.foo.bar/module-info.java src/com.foo.bar/com/foo/bar/alpha/… : src/com.foo.bar/module-info.java src/com.foo.bar/com/foo/bar/alpha/Alpha.java : mods/com.foo.bar/module-info.class mods/com.foo.bar/com/foo/bar/alpha/Alpha.class :
  • 55. 複数 ー 時コン • -modulesourcepath <src> -d 指定先 自動生成 Copyright©2015 NTT corp. All Rights Reserved. 55 $ javac -modulesourcepath src -d mods src/com.foo.bar/module-info.java src/com.foo.bar/com/foo/bar/alpha/… : mods/com.foo.bar/module-info.class mods/com.foo.bar/com/foo/bar/alpha/Alpha.class : mods/com.foo.othermodule/module-info.class mods/com.foo.othermodule/com/foo/othermodule/… :
  • 56. 実行 • -m <module>/<main-class> そ 実行 -m 新 く必要 Copyright©2015 NTT corp. All Rights Reserved. 56 $ java –mp mods –m com.foo.app/com.foo.app.Main Hello world from module com.foo.app! module name main class
  • 57. 依 ー 確認 • -Xdiag:resolver 各 ー 間 依 関係 解 Copyright©2015 NTT corp. All Rights Reserved. 57 $ java –Xdiag:resolver –mp mods –m com.foo.app/com.foo.app.Main [Resolve] Root module com.foo.app located [Resolve] (file:///ykubota/mods/com.foo.app/) [Resolve] Module java.base located, required by com.foo.app [Resolve] (jrt:/java.base) : (依 ー 全部読込 要求 ー 共 出力) [Resolve] Resolve completed [Resolve] com.foo.app [Resolve] java.base : (読込 ー ) Hello world from module com.foo.app!
  • 58. modular JAR 作 方 • -C <path/to/module> --module-version ー ン 入力可能 Copyright©2015 NTT corp. All Rights Reserved. 58 $ jar –-create –-file mlib/app.jar --main-class com.foo.app.Main -C mods/com.foo.app . module-info.class com/foo/app/Main.class : app.jar
  • 59. modular JAR 確認 • --print-module-descriptor (-p) java.base 基底 ー = MANDATED Copyright©2015 NTT corp. All Rights Reserved. 59 $ jar -p –-file mlib/app.jar Name: com.foo.app Requires: java.base [ MANDATED ] : Main class: com.foo.app.Main
  • 60. modular JAR 実行 • -mp <path/to/jar> Copyright©2015 NTT corp. All Rights Reserved. 60 $ java –mp mlib –m com.foo.app Hello world from module com.foo.app! jar 生成時 ン 指定 -m ン 不要
  • 61. classpath modular jar • -cp <path/to/jar> Copyright©2015 NTT corp. All Rights Reserved. 61 $ java -cp mlib/app.jar com.foo.app.Main Hello world from module com.foo.app! 後方互換性 あ java -jar app.jar OK
  • 62. 別 jar 依 あ 場合 • bar.jar 必要 ー 想定 bar.jar 含 必要 ー Copyright©2015 NTT corp. All Rights Reserved. 62 Exception in thread "main" java.lang.NoClassDefFoundError: com/foo/bar/Something at com.foo.app.Main.main(Main.java:8) Caused by: java.lang.ClassNotFoundException: com.foo.bar.Something at jdk.internal.misc.BuiltinClassLoader.loadClass(java.base@9.0/BuiltinClassLoader.java:368) at jdk.internal.misc.ClassLoaders$AppClassLoader.loadClass(java.base@9.0/ClassLoaders.java:167) at java.lang.ClassLoader.loadClass(java.base@9.0/ClassLoader.java:373) ... 1 more $ java -cp mlib/app.jar com.foo.app.Main
  • 63. 別 jar 依 あ 場合 • ー 非対応 JAR 場合 Copyright©2015 NTT corp. All Rights Reserved. 63 $ java -cp /path/to/bar.jar:mlib/app.jar com.foo.app.Main Hello world from module com.foo.app! 後方互換性 あ ー 対応 JAR 場合 方法 利用可能
  • 64. 別 jar 依 あ 場合 • ー 対応 JAR 場合 Copyright©2015 NTT corp. All Rights Reserved. 64 $ java -mp /directory/of/bar.jar/ –addmods com.foo.bar -cp mlib/app.jar com.foo.app.Main Hello world from module com.foo.app! -mp 指定 場合 addmods 必要 -mp く 指定
  • 65. 別 jar 依 あ 場合 • Copyright©2015 NTT corp. All Rights Reserved. 65 $ java -mp <Modular JAR > -cp <Modular 非対応 JAR 列挙> -m com.foo.app Hello world from module com.foo.app! 個人的
  • 66. 実行可能 ー 作成 • Linking 組 込 やセキ 活躍 ? Copyright©2015 NTT corp. All Rights Reserved. 66 $ jlink --modulepath $JDKMODS --addmods java.base --output myimage $ myimage/bin/java –listmods java.base@9.0 ※:JDKMODS = $JAVA_HOME(jdk9)/jmods/
  • 67. Linking • jlink 時代 java ー 乱立 恐怖 Copyright©2015 NTT corp. All Rights Reserved. 67 $ jlink --modulepath $JDKMODS:mlib --addmods com.foo.app --output myimage $ myimage/bin/java –listmods java.base@9.0 java.logging@9.0 : com.foo.bar com.foo.app
  • 68. Linking (実行) • jlink 組 込 -mp 不要 Copyright©2015 NTT corp. All Rights Reserved. 68 $ myimage/bin/java -m com.foo.app $ myimage/bin/com.foo.app Hello world from module com.foo.app! myimage/ |-- bin | |-- com.foo.app | |-- java : `-- keytool
  • 69. 一例 紹 Copyright©2015 NTT corp. All Rights Reserved. 69 自作 ー 対応
  • 70. ン ーン • ン 更 橙=普通 jar, 青=module Copyright©2015 NTT corp. All Rights Reserved. 70 myapp.jar mylib.jar external-core-1.2.3.jar external-lib-1.2.3.jar java.base java.logging java.sql
  • 71. 依 確認 • jdeps 依 置い 実行 Copyright©2015 NTT corp. All Rights Reserved. 71 $ jdeps –s lib/myapp.jar lib/mylib.jar myapp.jar -> lib/external-core-1.2.3.jar myapp.jar -> lib/external-lib-1.2.3.jar myapp.jar -> mylib.jar myapp.jar -> java.base mylib.jar -> java.base
  • 72. 自作 ー 化 • mylib mylib myapp 限定 変更 容易 Copyright©2015 NTT corp. All Rights Reserved. 72 module mylib { requires java.base; exports com.myapp.lib to myapp; }
  • 73. 自作 ー 化 • myapp 外部 ー 様 定義 Copyright©2015 NTT corp. All Rights Reserved. 73 module myapp { requires mylib; requires java.base; requires external.core; requires external.lib; }
  • 74. Automatic modules –JAR 変更 必要 –JAR ー 生成さ –全 ー exports –他 全 ー requires 可能性 あ 全部舐 う Copyright©2015 NTT corp. All Rights Reserved. 74 requires external.core; requires external.lib;
  • 75. 情報 自動生成 • jdeps -genmoduleinfo 全 ー exports 要修 Copyright©2015 NTT corp. All Rights Reserved. 75 Writing to src/mylib/module-info.java Writing to src/myapp/module-info.java Writing to src/external-core/module-… Writing to src/external-lib/module-… $ jdeps –genmoduleinfo src libs/*.jar
  • 76. 最終的 結果 作成 部分 Copyright©2015 NTT corp. All Rights Reserved. 76 external.core external.lib java.base java.logging java.se myapp mylib
  • 77. 最終的 結果 外部 依 関係 必要過多状態 Copyright©2015 NTT corp. All Rights Reserved. 77 external.core external.lib java.base java.logging java.se myapp mylib
  • 78. コン • 配置 • コン や 集大成 Copyright©2015 NTT corp. All Rights Reserved. 78 ./lib/external*.jar ./src/myapp/module-info.java ./src/myapp/… <Java files> ./src/mylib/… <Java files> $ javac -modulesourcepath src –mp lib –d mods ./src/… $ jar --create --file mlib/mylib.jar –C mods/mylib . $ jar --create --file mlib/myapp.jar –C mods/myapp . --main-class myapp.Main
  • 79. 実行 before/after • Before • After Copyright©2015 NTT corp. All Rights Reserved. 79 $ java –cp lib/myapp.jar:lib/mylib.jar: lib/external-core-1.2.3.jar: lib/external-lib-1.2.3.jar myapp.Main $ java –mp mlib:lib –m myapp
  • 80. End Copyright©2015 NTT corp. All Rights Reserved. 80 Jigsaw 考え方 出展: http://openjdk.java.net/projects/jigsaw/j1/jigsaw-under- the-hood-j1-2015.pdf P.58
  • 81. End Copyright©2015 NTT corp. All Rights Reserved. 81 Reference openjdk.java.net/ projects/jigsaw/
  • 82. End い Copyright©2015 NTT corp. All Rights Reserved. 82