狠狠撸

狠狠撸Share a Scribd company logo
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
Ad

Recommended

JavaOne2015報告会 Java EE アップデート #j1jp
JavaOne2015報告会 Java EE アップデート #j1jp
Norito Agetsuma
?
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
Hiroyuki Ohnaka
?
HeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LT
Yuji Kubota
?
Java EE ハ?フォーマンスTips #glassfish_jp
Java EE ハ?フォーマンスTips #glassfish_jp
Norito Agetsuma
?
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
Yuji Kubota
?
闯补惫补9新机能概要
闯补惫补9新机能概要
HonMarkHunt
?
JavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jp
Yuji Kubota
?
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
Norito Agetsuma
?
Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?
Yuji Kubota
?
Advanced database monitoring in modern java
Advanced database monitoring in modern java
Chihiro Ito
?
闯补惫补におけるネイティフ?コート?连携の各种手法の绍介
闯补惫补におけるネイティフ?コート?连携の各种手法の绍介
khisano
?
Nashorn in the future (Japanese)
Nashorn in the future (Japanese)
Logico
?
Java EE8 Report
Java EE8 Report
Norito Agetsuma
?
JDK:新しいリリースモデル解説 @ 熊本?福岡
JDK:新しいリリースモデル解説 @ 熊本?福岡
オラクルエンジニア通信
?
笔补苍补尘补を先取り!? 闯痴惭颁滨で闯滨罢と游ぶ
笔补苍补尘补を先取り!? 闯痴惭颁滨で闯滨罢と游ぶ
Yasumasa Suenaga
?
JDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjug
Yuji Kubota
?
Javaアプリケーションサーバ 構築?運用の勘所
Javaアプリケーションサーバ 構築?運用の勘所
Takahiro YAMADA
?
WildFly Swarm - Rightsize Your Java EE Apps
WildFly Swarm - Rightsize Your Java EE Apps
Yoshimasa Tanabe
?
Jakarta EE 9 と これから
Jakarta EE 9 と これから
Kenji Kazumura
?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
Takahiro YAMADA
?
次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて
Yoshimasa Tanabe
?
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
Takahiro YAMADA
?
Java トラブル解析支援ツール HeapStats のご紹介
Java トラブル解析支援ツール HeapStats のご紹介
Shinya Takebayashi
?
闯诲办9で変更になる(かも知れない)箩惫尘オプションの标準设定
闯诲办9で変更になる(かも知れない)箩惫尘オプションの标準设定
Kazuyuki Nakamura
?
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]
David Buck
?
Lt agetsuma 拡大するcdi
Lt agetsuma 拡大するcdi
Norito Agetsuma
?
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
NTT DATA Technology & Innovation
?
Prepare for Java 9 #jjug
Prepare for Java 9 #jjug
Yuji Kubota
?
今年は闯补惫补进化の年!今知っておくべき新しい闯补惫补
今年は闯补惫补进化の年!今知っておくべき新しい闯补惫补
Takashi Ito
?

More Related Content

What's hot (20)

Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?
Yuji Kubota
?
Advanced database monitoring in modern java
Advanced database monitoring in modern java
Chihiro Ito
?
闯补惫补におけるネイティフ?コート?连携の各种手法の绍介
闯补惫补におけるネイティフ?コート?连携の各种手法の绍介
khisano
?
Nashorn in the future (Japanese)
Nashorn in the future (Japanese)
Logico
?
Java EE8 Report
Java EE8 Report
Norito Agetsuma
?
JDK:新しいリリースモデル解説 @ 熊本?福岡
JDK:新しいリリースモデル解説 @ 熊本?福岡
オラクルエンジニア通信
?
笔补苍补尘补を先取り!? 闯痴惭颁滨で闯滨罢と游ぶ
笔补苍补尘补を先取り!? 闯痴惭颁滨で闯滨罢と游ぶ
Yasumasa Suenaga
?
JDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjug
Yuji Kubota
?
Javaアプリケーションサーバ 構築?運用の勘所
Javaアプリケーションサーバ 構築?運用の勘所
Takahiro YAMADA
?
WildFly Swarm - Rightsize Your Java EE Apps
WildFly Swarm - Rightsize Your Java EE Apps
Yoshimasa Tanabe
?
Jakarta EE 9 と これから
Jakarta EE 9 と これから
Kenji Kazumura
?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
Takahiro YAMADA
?
次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて
Yoshimasa Tanabe
?
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
Takahiro YAMADA
?
Java トラブル解析支援ツール HeapStats のご紹介
Java トラブル解析支援ツール HeapStats のご紹介
Shinya Takebayashi
?
闯诲办9で変更になる(かも知れない)箩惫尘オプションの标準设定
闯诲办9で変更になる(かも知れない)箩惫尘オプションの标準设定
Kazuyuki Nakamura
?
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]
David Buck
?
Lt agetsuma 拡大するcdi
Lt agetsuma 拡大するcdi
Norito Agetsuma
?
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
NTT DATA Technology & Innovation
?
Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?
Yuji Kubota
?
Advanced database monitoring in modern java
Advanced database monitoring in modern java
Chihiro Ito
?
闯补惫补におけるネイティフ?コート?连携の各种手法の绍介
闯补惫补におけるネイティフ?コート?连携の各种手法の绍介
khisano
?
Nashorn in the future (Japanese)
Nashorn in the future (Japanese)
Logico
?
笔补苍补尘补を先取り!? 闯痴惭颁滨で闯滨罢と游ぶ
笔补苍补尘补を先取り!? 闯痴惭颁滨で闯滨罢と游ぶ
Yasumasa Suenaga
?
JDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjug
Yuji Kubota
?
Javaアプリケーションサーバ 構築?運用の勘所
Javaアプリケーションサーバ 構築?運用の勘所
Takahiro YAMADA
?
WildFly Swarm - Rightsize Your Java EE Apps
WildFly Swarm - Rightsize Your Java EE Apps
Yoshimasa Tanabe
?
Jakarta EE 9 と これから
Jakarta EE 9 と これから
Kenji Kazumura
?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
Takahiro YAMADA
?
次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて
Yoshimasa Tanabe
?
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
Takahiro YAMADA
?
Java トラブル解析支援ツール HeapStats のご紹介
Java トラブル解析支援ツール HeapStats のご紹介
Shinya Takebayashi
?
闯诲办9で変更になる(かも知れない)箩惫尘オプションの标準设定
闯诲办9で変更になる(かも知れない)箩惫尘オプションの标準设定
Kazuyuki Nakamura
?
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]
David Buck
?
Lt agetsuma 拡大するcdi
Lt agetsuma 拡大するcdi
Norito Agetsuma
?
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
NTT DATA Technology & Innovation
?

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

Prepare for Java 9 #jjug
Prepare for Java 9 #jjug
Yuji Kubota
?
今年は闯补惫补进化の年!今知っておくべき新しい闯补惫补
今年は闯补惫补进化の年!今知っておくべき新しい闯补惫补
Takashi Ito
?
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
PE-BANK
?
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
?
20170303 java9 hadoop
20170303 java9 hadoop
NTT DATA OSS Professional Services
?
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
NTT DATA Technology & Innovation
?
Java 9 and Future #jjug
Java 9 and Future #jjug
Yuji Kubota
?
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
Yuji Kubota
?
関ジャバ JavaOne Tokyo 2012報告会
関ジャバ JavaOne Tokyo 2012報告会
Koichi Sakata
?
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
?
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
NTT DATA Technology & Innovation
?
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
David Buck
?
What is java_se_7
What is java_se_7
TakumiIINO
?
10の闯补惫补9で変わる闯补惫补8の嫌なとこ!
10の闯补惫补9で変わる闯补惫补8の嫌なとこ!
bitter_fox
?
LL2021 Java update
LL2021 Java update
torutk
?
Java SE 再入門
Java SE 再入門
minazou67
?
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要
Chihiro Ito
?
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
Yoshiro Tokumasu
?
Migration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjug
Yuji Kubota
?
JakartaOne Livestream Japan 2020
JakartaOne Livestream Japan 2020
Kenji Kazumura
?
Prepare for Java 9 #jjug
Prepare for Java 9 #jjug
Yuji Kubota
?
今年は闯补惫补进化の年!今知っておくべき新しい闯补惫补
今年は闯补惫补进化の年!今知っておくべき新しい闯补惫补
Takashi Ito
?
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
PE-BANK
?
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
?
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
NTT DATA Technology & Innovation
?
Java 9 and Future #jjug
Java 9 and Future #jjug
Yuji Kubota
?
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
Yuji Kubota
?
関ジャバ JavaOne Tokyo 2012報告会
関ジャバ JavaOne Tokyo 2012報告会
Koichi Sakata
?
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
?
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
NTT DATA Technology & Innovation
?
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
David Buck
?
What is java_se_7
What is java_se_7
TakumiIINO
?
10の闯补惫补9で変わる闯补惫补8の嫌なとこ!
10の闯补惫补9で変わる闯补惫补8の嫌なとこ!
bitter_fox
?
LL2021 Java update
LL2021 Java update
torutk
?
Java SE 再入門
Java SE 再入門
minazou67
?
Oracle code one 2018 報告会概要
Oracle code one 2018 報告会概要
Chihiro Ito
?
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
JDK 16 で導入された JEP 396 にご注意!! (JJUG CCC 2021 Spring)
Yoshiro Tokumasu
?
Migration Guide from Java 8 to Java 11 #jjug
Migration Guide from Java 8 to Java 11 #jjug
Yuji Kubota
?
JakartaOne Livestream Japan 2020
JakartaOne Livestream Japan 2020
Kenji Kazumura
?
Ad

More from Yuji Kubota (20)

Head toward Java 15 and Java 16
Head toward Java 15 and Java 16
Yuji Kubota
?
Head toward Java 14 and Java 15 #LINE_DM
Head toward Java 14 and Java 15 #LINE_DM
Yuji Kubota
?
Head toward Java 14 and Java 15
Head toward Java 14 and Java 15
Yuji Kubota
?
オンライン会议と音声认识
オンライン会议と音声认识
Yuji Kubota
?
Head toward Java 13 and Java 14 #jjug
Head toward Java 13 and Java 14 #jjug
Yuji Kubota
?
Catch up Java 12 and Java 13
Catch up Java 12 and Java 13
Yuji Kubota
?
Introduction to Java 11: Support and JVM Features #jjug
Introduction to Java 11: Support and JVM Features #jjug
Yuji Kubota
?
Project Jigsaw #kanjava
Project Jigsaw #kanjava
Yuji 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...
Yuji Kubota
?
Unified JVM Logging
Unified JVM Logging
Yuji Kubota
?
jcmd #javacasual
jcmd #javacasual
Yuji Kubota
?
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Yuji Kubota
?
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasual
Yuji Kubota
?
JDK9 Features (Summary, 31/Jul/2015) #JJUG
JDK9 Features (Summary, 31/Jul/2015) #JJUG
Yuji Kubota
?
HeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical Preview
Yuji Kubota
?
JVM のいろはにほ #javajo
JVM のいろはにほ #javajo
Yuji Kubota
?
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_ccc
Yuji Kubota
?
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
Yuji Kubota
?
java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷java
Yuji Kubota
?
Head toward Java 15 and Java 16
Head toward Java 15 and Java 16
Yuji Kubota
?
Head toward Java 14 and Java 15 #LINE_DM
Head toward Java 14 and Java 15 #LINE_DM
Yuji Kubota
?
Head toward Java 14 and Java 15
Head toward Java 14 and Java 15
Yuji Kubota
?
オンライン会议と音声认识
オンライン会议と音声认识
Yuji Kubota
?
Head toward Java 13 and Java 14 #jjug
Head toward Java 13 and Java 14 #jjug
Yuji Kubota
?
Catch up Java 12 and Java 13
Catch up Java 12 and Java 13
Yuji Kubota
?
Introduction to Java 11: Support and JVM Features #jjug
Introduction to Java 11: Support and JVM Features #jjug
Yuji Kubota
?
Project Jigsaw #kanjava
Project Jigsaw #kanjava
Yuji 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...
Yuji Kubota
?
Unified JVM Logging
Unified JVM Logging
Yuji Kubota
?
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Yuji Kubota
?
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasual
Yuji Kubota
?
JDK9 Features (Summary, 31/Jul/2015) #JJUG
JDK9 Features (Summary, 31/Jul/2015) #JJUG
Yuji Kubota
?
HeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical Preview
Yuji Kubota
?
JVM のいろはにほ #javajo
JVM のいろはにほ #javajo
Yuji Kubota
?
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_ccc
Yuji Kubota
?
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
Yuji Kubota
?
java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷java
Yuji Kubota
?
Ad

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