Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Project Jigsaw #kanjava

2,129 views

Published on

JavaOne 2017 報告会 in 大阪の発表資料です。https://kanjava.connpass.com/event/69413/

Demonstration: https://github.com/ykubota/jigsaw-sample_jp

slideshareが自動的にPDFに変換するように仕様変更されていたため、ノート付きでアップロードができませんでした。お手数をおかけしますが、原稿(簡単ですが…)を読んでみたい方は筆者までTwitterでDMかメールなどでご連絡お願いします。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Project Jigsaw #kanjava

  1. 1. Copyright©2017 NTT corp. All Rights Reserved. Project Jigsaw 2017年10月28日 JavaOne 2017報告会 in 大阪 NTT OSSセンタ 久保田 祐史
  2. 2. 2Copyright©2017 NTT corp. All Rights Reserved. •本セッション内容は公開されます • 資料はダウンロードできます。ざっくりです がノートに原稿も記載しています • https://www.slideshare.net/YujiKubota/ • 再アップロードできなくなったので一覧から… • Twitterで #kanjava を付けて呟いて下さい • 難聴者の方などが理解する助けになります! 情報保障
  3. 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
  4. 4. 4Copyright©2017 NTT corp. All Rights Reserved. HeapStats
  5. 5. 5Copyright©2017 NTT corp. All Rights Reserved. Project Jigsaw
  6. 6. 6Copyright©2017 NTT corp. All Rights Reserved. •JAR HELL • 依存性が複雑怪奇 •標準ライブラリ • 巨大かつ分割不可 Project Jigsaw
  7. 7. 7Copyright©2017 NTT corp. All Rights Reserved. •紛失したライブラリはどれ? •コンフリクトはどこで発生? •依存性を定義できないのが問題 •内部 API を安全に変更できる? •Public が Public 過ぎる •公開範囲を設定できないのが問題 •解決策: Module の導入 依存性が複雑怪奇
  8. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  18. 18. 18Copyright©2017 NTT corp. All Rights Reserved. 標準ライブラリもModule化
  19. 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 イメージが作成できる
  20. 20. 20Copyright©2017 NTT corp. All Rights Reserved. Demonstration

×