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

Prometheus at Preferred Networks
Prometheus at Preferred NetworksPrometheus at Preferred Networks
Prometheus at Preferred NetworksPreferred 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)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
 
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 sourceYoshiyuki Nakamura
 
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~
OSS 開発ってどうやっているの? ~ PostgreSQL の現場から~Masahiko Sawada
 
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)Koichi Sakata
 
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜Megagon Labs
 
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botPython × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botdcubeio
 
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
 
Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記Yoshiyuki Nakamura
 
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_c2tamtam180
 
20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructure20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructurePreferred Networks
 
Live配信のワークフロー takusuta tech conf #1
Live配信のワークフロー takusuta tech conf #1 Live配信のワークフロー takusuta tech conf #1
Live配信のワークフロー takusuta tech conf #1 yoshinori sugiyama
 
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 講演資料)NTT DATA Technology & Innovation
 
[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いている[大図解]ピグライフはこう動いている
[大図解]ピグライフはこう動いているAkihiro Kuwano
 
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 calNaoto Gohko
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む2bo 2bo
 
採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」Takayuki Fukumoto
 
Caffeインストール
CaffeインストールCaffeインストール
CaffeインストールKenta Oono
 
InnoDBのすゝめ(仮)
InnoDBのすゝめ(仮)InnoDBのすゝめ(仮)
InnoDBのすゝめ(仮)Takanori Sejima
 

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

Dockerコミュニティ近況
Dockerコミュニティ近況Dockerコミュニティ近況
Dockerコミュニティ近況Akihiro Suda
 
[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を非技術者に使わせてみる~Insight Technology, Inc.
 
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)Wataru NOGUCHI
 
デブサミ関西2011 JAZ紹介
デブサミ関西2011 JAZ紹介デブサミ関西2011 JAZ紹介
デブサミ関西2011 JAZ紹介Keiji Kamebuchi
 
Agile Japan 2017 長崎サテライト with NaITE 閉会のご挨拶
Agile Japan 2017 長崎サテライト with NaITE 閉会のご挨拶Agile Japan 2017 長崎サテライト with NaITE 閉会のご挨拶
Agile Japan 2017 長崎サテライト with NaITE 閉会のご挨拶NaITE_Official
 
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 #NoOpsJPYusuke Suzuki
 
OSC2016.Enterprise OpenStack & Cloud Native Applications
OSC2016.Enterprise OpenStack & Cloud Native ApplicationsOSC2016.Enterprise OpenStack & Cloud Native Applications
OSC2016.Enterprise OpenStack & Cloud Native Applicationsirix_jp
 
Agile Japan 2017 長崎サテライト with NaITE 開会のご挨拶
Agile Japan 2017 長崎サテライト with NaITE 開会のご挨拶Agile Japan 2017 長崎サテライト with NaITE 開会のご挨拶
Agile Japan 2017 長崎サテライト with NaITE 開会のご挨拶NaITE_Official
 
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワークElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワークHideki Takase
 
OSSコミッタの生活とその必要性
OSSコミッタの生活とその必要性OSSコミッタの生活とその必要性
OSSコミッタの生活とその必要性Hirofumi Ichihara
 
日本OpenStackユーザ会第40回勉強会 Nova最新動向
日本OpenStackユーザ会第40回勉強会 Nova最新動向日本OpenStackユーザ会第40回勉強会 Nova最新動向
日本OpenStackユーザ会第40回勉強会 Nova最新動向Takashi Natsume
 
Javaのカルチャーとグロース - MANABIYA 2018
Javaのカルチャーとグロース - MANABIYA 2018Javaのカルチャーとグロース - MANABIYA 2018
Javaのカルチャーとグロース - MANABIYA 2018Yusuke Suzuki
 
GitLabを骨までしゃぶりつくす@ゆるUniStudy#7
GitLabを骨までしゃぶりつくす@ゆるUniStudy#7GitLabを骨までしゃぶりつくす@ゆるUniStudy#7
GitLabを骨までしゃぶりつくす@ゆるUniStudy#7Wataru NOGUCHI
 
アジャイル開発を支えるアーキテクチャ設計とは
アジャイル開発を支えるアーキテクチャ設計とはアジャイル開発を支えるアーキテクチャ設計とは
アジャイル開発を支えるアーキテクチャ設計とはYusuke Suzuki
 
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 注目セッションまとめTetsutaro Watanabe
 

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

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)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
 
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
 
jcmd #javacasual
jcmd #javacasualjcmd #javacasual
jcmd #javacasualYuji Kubota
 
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 #j1jpYuji 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
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpYuji Kubota
 
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualOpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualYuji Kubota
 
HeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LTHeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LTYuji Kubota
 
JDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjugJDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjugYuji 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
 
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

論文紹介: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
 
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
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介: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
 
論文紹介: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
 
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
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 

Recently uploaded (9)

論文紹介: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
 
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
 
論文紹介: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...
 
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
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 

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