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

More Related Content

What's hot

Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
Koichi Sakata
 
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
torutk
 
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めたJJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
Koichi Sakata
 
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている
Akihiro Kuwano
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
2bo 2bo
 
Caffeインストール
CaffeインストールCaffeインストール
Caffeインストール
Kenta Oono
 

What's hot (20)

Prometheus at Preferred Networks
Prometheus at Preferred NetworksPrometheus at Preferred Networks
Prometheus at Preferred Networks
 
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
 
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
 
2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source2006-04-22 CLR/H #14 .NET and open source
2006-04-22 CLR/H #14 .NET and open source
 
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
 
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
 
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
 
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botPython × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack bot
 
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めたJJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
 
Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
 
20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructure20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructure
 
Live配信のワークフロー takusuta tech conf #1
Live配信のワークフロー takusuta tech conf #1 Live配信のワークフロー takusuta tech conf #1
Live配信のワークフロー takusuta tech conf #1
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
 
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている
 
Open stack swift is too Enterprise? 2014/12/01 advent cal
Open stack swift is too Enterprise?  2014/12/01 advent calOpen stack swift is too Enterprise?  2014/12/01 advent cal
Open stack swift is too Enterprise? 2014/12/01 advent cal
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 
採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」
 
Caffeインストール
CaffeインストールCaffeインストール
Caffeインストール
 
InnoDBのすゝめ(仮)
InnoDBのすゝめ(仮)InnoDBのすゝめ(仮)
InnoDBのすゝめ(仮)
 

Similar to Project Jigsaw #kanjava

Similar to Project Jigsaw #kanjava (20)

Dockerコミュニティ近況
Dockerコミュニティ近況Dockerコミュニティ近況
Dockerコミュニティ近況
 
[db analytics showcase Sapporo 2018] A33 AI社内実装の試み~ソニーNNCを非技術者に使わせてみる~
[db analytics showcase Sapporo 2018] A33 AI社内実装の試み~ソニーNNCを非技術者に使わせてみる~[db analytics showcase Sapporo 2018] A33 AI社内実装の試み~ソニーNNCを非技術者に使わせてみる~
[db analytics showcase Sapporo 2018] A33 AI社内実装の試み~ソニーNNCを非技術者に使わせてみる~
 
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
 
デブサミ関西2011 JAZ紹介
デブサミ関西2011 JAZ紹介デブサミ関西2011 JAZ紹介
デブサミ関西2011 JAZ紹介
 
Agile Japan 2017 長崎サテライト with NaITE 閉会のご挨拶
Agile Japan 2017 長崎サテライト with NaITE 閉会のご挨拶Agile Japan 2017 長崎サテライト with NaITE 閉会のご挨拶
Agile Japan 2017 長崎サテライト with NaITE 閉会のご挨拶
 
MicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJP
MicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJPMicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJP
MicroserviceでのNoOps戦略 - NoOps Meetup Tokyo #2 #NoOpsJP
 
C#への招待
C#への招待C#への招待
C#への招待
 
Nuxtjs my friend
Nuxtjs my friendNuxtjs my friend
Nuxtjs my friend
 
OSC2016.Enterprise OpenStack & Cloud Native Applications
OSC2016.Enterprise OpenStack & Cloud Native ApplicationsOSC2016.Enterprise OpenStack & Cloud Native Applications
OSC2016.Enterprise OpenStack & Cloud Native Applications
 
Agile Japan 2017 長崎サテライト with NaITE 開会のご挨拶
Agile Japan 2017 長崎サテライト with NaITE 開会のご挨拶Agile Japan 2017 長崎サテライト with NaITE 開会のご挨拶
Agile Japan 2017 長崎サテライト with NaITE 開会のご挨拶
 
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワークElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
 
OSSコミッタの生活とその必要性
OSSコミッタの生活とその必要性OSSコミッタの生活とその必要性
OSSコミッタの生活とその必要性
 
日本OpenStackユーザ会第40回勉強会 Nova最新動向
日本OpenStackユーザ会第40回勉強会 Nova最新動向日本OpenStackユーザ会第40回勉強会 Nova最新動向
日本OpenStackユーザ会第40回勉強会 Nova最新動向
 
Javaのカルチャーとグロース - MANABIYA 2018
Javaのカルチャーとグロース - MANABIYA 2018Javaのカルチャーとグロース - MANABIYA 2018
Javaのカルチャーとグロース - MANABIYA 2018
 
GitLabを骨までしゃぶりつくす@ゆるUniStudy#7
GitLabを骨までしゃぶりつくす@ゆるUniStudy#7GitLabを骨までしゃぶりつくす@ゆるUniStudy#7
GitLabを骨までしゃぶりつくす@ゆるUniStudy#7
 
Osc tokyo20141019
Osc tokyo20141019Osc tokyo20141019
Osc tokyo20141019
 
アジャイル開発を支えるアーキテクチャ設計とは
アジャイル開発を支えるアーキテクチャ設計とはアジャイル開発を支えるアーキテクチャ設計とは
アジャイル開発を支えるアーキテクチャ設計とは
 
ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめ
ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめ
ML Ops NYC 19 & Strata Data Conference 2019 NewYork 注目セッションまとめ
 
今すぐ始める!Ubuntu入門
今すぐ始める!Ubuntu入門今すぐ始める!Ubuntu入門
今すぐ始める!Ubuntu入門
 
今すぐ始める!Ubuntu入門
今すぐ始める!Ubuntu入門今すぐ始める!Ubuntu入門
今すぐ始める!Ubuntu入門
 

More from Yuji Kubota

HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
Yuji Kubota
 

More from Yuji Kubota (20)

Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
 
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
 
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...
 
jcmd #javacasual
jcmd #javacasualjcmd #javacasual
jcmd #javacasual
 
JavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jpJavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jp
 
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
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jp
 
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualOpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasual
 
HeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LTHeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LT
 
JDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjugJDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjug
 
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
 
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...
 

Recently uploaded

Recently uploaded (10)

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

Project Jigsaw #kanjava

  • 1. Copyright©2017 NTT corp. All Rights Reserved. Project Jigsaw 2017年10月28日 JavaOne 2017報告会 in 大阪 NTT OSSセンタ 久保田 祐史
  • 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
  • 4. 4Copyright©2017 NTT corp. All Rights Reserved. HeapStats
  • 5. 5Copyright©2017 NTT corp. All Rights Reserved. Project Jigsaw
  • 6. 6Copyright©2017 NTT corp. All Rights Reserved. •JAR HELL • 依存性が複雑怪奇 •標準ライブラリ • 巨大かつ分割不可 Project Jigsaw
  • 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
  • 18. 18Copyright©2017 NTT corp. All Rights Reserved. 標準ライブラリもModule化
  • 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. 20Copyright©2017 NTT corp. All Rights Reserved. Demonstration