More Related Content
Similar to Project Jigsaw #kanjava (20)
More from Yuji Kubota (20)
Project Jigsaw #kanjava
- 2. 2Copyright©2017 NTT corp. All Rights Reserved.
•本セッション内容は公開されます
• 資料はダウンロードできます。ざっくりです
がノートに原稿も記載しています
• https://www.slideshare.net/YujiKubota/
• 再アップロードできなくなったので一覧から…
• Twitterで #kanjava を付けて呟いて下さい
• 難聴者の方などが理解する助けになります!
情報保障
- 3. 3Copyright©2017 NTT corp. All Rights Reserved.
•KUBOTA Yuji (@sugarlife)
• Java (OpenJDK) サポート担当
• OpenJDKバリバリ利用中
• OpenJDKコントリビュートしたり
JavaOneやJJUGで喋ったり
• WEB+DB v101で記事書きました
•NTT OSSセンタ
• NTTグループのOSS活用を支える部隊
• Kernel, PostgreSQL, Pacemaker, Tomcat,
OpenJDK, and so on.
• 各種コントリビューター揃えております
Who I am
- 7. 7Copyright©2017 NTT corp. All Rights Reserved.
•紛失したライブラリはどれ?
•コンフリクトはどこで発生?
•依存性を定義できないのが問題
•内部 API を安全に変更できる?
•Public が Public 過ぎる
•公開範囲を設定できないのが問題
•解決策: Module の導入
依存性が複雑怪奇
- 8. 8Copyright©2017 NTT corp. All Rights Reserved.
:
com.foo.driver….
com.foo.controller…
:
com.hoge.dog…
com.hoge.cat …
JAR
:
com.foo.driver….
com.foo.controller…
:
com.hoge.dog…
com.hoge.cat …
JAR
Module
com.foo.bar.alpha.Alpha
com.foo.bar.beta.Beta
com.foo.internal.Internal
:
com.hoge.inu…
com.hoge.neko…
:
com.moge.dog…
com.moge.cat…
JAR
- 9. 9Copyright©2017 NTT corp. All Rights Reserved.
Module
com.moge.dog…
com.moge.cat…
: Module
com.hoge.inu…
com.hoge.neko…
: Module
com.foo.bar.alpha.Alpha
com.foo.bar.beta.Beta
com.foo.internal.Internal
Module
- 10. 10Copyright©2017 NTT corp. All Rights Reserved.
Module
com.foo.bar.alpha.Alpha
com.foo.bar.beta.Beta
com.foo.internal.Internal
Module
- 11. 11Copyright©2017 NTT corp. All Rights Reserved.
Module
com.foo.bar.alpha.Alpha
com.foo.bar.beta.Beta
com.foo.internal.Internal
Module
- 12. 12Copyright©2017 NTT corp. All Rights Reserved.
Module
com.foo.bar.alpha.Alpha
com.foo.bar.beta.Beta
com.foo.internal.Internal
Module
module-info.java
- 13. 13Copyright©2017 NTT corp. All Rights Reserved.
Module
com.foo.bar.alpha.Alpha
com.foo.bar.beta.Beta
com.foo.internal.Internal
Module
module-info.java
- 14. 14Copyright©2017 NTT corp. All Rights Reserved.
Module
module com.foo.bar {
}
com.foo.bar.alpha.Alpha
com.foo.bar.beta.Beta
com.foo.internal.Internal
Module
module-info.java
- 15. 15Copyright©2017 NTT corp. All Rights Reserved.
Module
module com.foo.bar {
//依存するモジュール
requires com.foo.baz;
requires java.sql;
}
com.foo.bar.alpha.Alpha
com.foo.bar.beta.Beta
com.foo.internal.Internal
Module
module-info.java
依存性
- 16. 16Copyright©2017 NTT corp. All Rights Reserved.
Module
module com.foo.bar {
//依存するモジュール
requires com.foo.baz;
requires java.sql;
//公開するパッケージ to 公開先
exports com.foo.bar.alpha;
exports com.foo.bar.beta to
com.foo.ok;
}
com.foo.bar.alpha.Alpha
com.foo.bar.beta.Beta
com.foo.internal.Internal
Module
module-info.java
依存性
可視性
- 17. 17Copyright©2017 NTT corp. All Rights Reserved.
Module
com.foo.bar
java.sql
com.foo.
internal
com.foo.bar.
alpha
java.logging
com.foo.baz
reads
com.foo.app
com.foo.bar.
beta
com.foo.ok
:
:
:
:
module com.foo.bar {
//依存するモジュール
requires com.foo.baz;
requires java.sql;
//公開するパッケージ to 公開先
exports com.foo.bar.alpha;
exports com.foo.bar.beta to
com.foo.ok;
}
requires
- 19. 19Copyright©2017 NTT corp. All Rights Reserved.
依存性の確認
# jdeps -s heapstats-core.jar
heapstats-core.jar -> java.base
heapstats-core.jar -> java.logging
heapstats-core.jar -> java.xml.bind
:
heapstats-core.jar -> javafx.graphics
# jdeps –-generate-module-info . heapstats-core.jar
writing to ./heapstats.core/module-info.java
# cat ./heapstats.core/module-info.java
module heapstats.core {
requires java.logging;
requires java.xml.bind;
:
exports jp.co.ntt.oss.heapstats;
:
}
jlink コマンドで最低モジュール構成の
実行可能 java イメージが作成できる