SlideShare a Scribd company logo
OpenJDK コミュニ
ティに参加してみよう
KUBOTA Yuji
@sugarlife
NTT OSSセンタ
JJUG CCC 2016 Spring
Copyright©2016 NTT corp. All Rights Reserved.
2016/05/21	
  
はじめに
•  本セッションでは個人的なコミュニ
ティ活動の経験をベースに「最初の
1歩」を紹介します
•  コーディング方法やバグの解析方法
については今回は話しません
•  質問時間を設ける予定です。気にな
る点があったらぜひ共有して下さい
– セッション後でもいつでもどうぞ!
Copyright©2016 NTT corp. All Rights Reserved. 2
(1日は欲しい)
@sugarlife
#ccc_i62
#jjug
Copyright©2016 NTT corp. All Rights Reserved. 3
OpenJDK ?
•  オープンソースの Java SE 実装
– openjdk.java.net
– GNU GPL, version 2
– Java SE Specification 準拠
– API 仕様のレベルでは Oracle JDK
と完全互換している
•  http://www.oracle.com/technetwork/jp/java/javase/
community/opensourcejdk-jsp-136417-ja.html
Copyright©2016 NTT corp. All Rights Reserved. 4
OpenJDK の流れ
•  JDK 7 が OSS 化 (Sun microsystems)
– OpenJDK 7 から OpenJDK 6 が派生
•  OpenJDK7b20 → OpenJDK6b1
– OpenJDK 8 は OpenJDK 7 から派生
•  OpenJDK 9 は OpenJDK 8 から、以後同様
•  JDK 7からコードベースはOpenJDK 7
– Oracle JDK も OpenJDK も元は同じ
•  https://blogs.oracle.com/darcy/entry/openjdk_6_genealogy
Copyright©2016 NTT corp. All Rights Reserved. 5
使い物になるの?
•  http://www.slideshare.net/hadoopxnttdata/openjdk-
nttdata-oss-day-2015-autumn
Copyright©2016 NTT corp. All Rights Reserved. 6
• バグで困ってるので直したい
– Oracle JDK のバグも直る
• 便利な機能を追加したい
– Oracle JDK にも入る
• 30 億のデバイスで自分のコード
が走るなんて素敵やん?
Copyright©2016 NTT corp. All Rights Reserved. 7
貢献するモチベーション
どうやって?
Copyright©2016 NTT corp. All Rights Reserved. 8
困ったらどこを読む?
•  OpenJDK の Contributing ページ
Copyright©2016 NTT corp. All Rights Reserved. 9
もう少し詳しい内容
最初
困ったらどこを読む?
•  OpenJDK Wiki (Adaptionの項)
Copyright©2016 NTT corp. All Rights Reserved. 10
おわり
Copyright©2016 NTT corp. All Rights Reserved. 11
と思いきや
意外に(?)書かれて
ないことも多い
Copyright©2016 NTT corp. All Rights Reserved. 12
どちらかというと最初の1歩以降が書かれてない
書かれている事もない事も含めてご紹介します
改善案の出し方は?
•  大きく分けて二通りの方法
1. メーリングリスト(ML)にパッチ投稿
• 提案・議論から始めるのもあり
2. JEP として機能提案 (JEP1参照)
•  どうすべきか?
– JEP として出すべきかの判断は
コミュニティに任せる。先ずは
ML にパッチを投稿してみよう
Copyright©2016 NTT corp. All Rights Reserved. 13
誰でも出せるの?
•  Oracle Contributor Agreement に
サインすれば誰でも OK
– 締結していないと受理されない
– PDF を印刷・サイン → メール →
2 週間後ぐらいに返事
– 個人でも可能、企業の場合は雇用
者のサインが必要
– パッチ書いた後でも一応 OK (マージはされない)
Copyright©2016 NTT corp. All Rights Reserved. 14
どこからコードを入手するの?
•  基本的には最新版の JDK に対し
てパッチを書く(今ならJDK9)
– 取り込まれたら過去バージョンに
バックポートされる
•  コード管理リポジトリは以下
– http://hg.openjdk.java.net
– OpenJDK は mercurial (hg) 管理
Copyright©2016 NTT corp. All Rights Reserved. 15
寄り道: OpenJDK のリポジトリ
http://hg.openjdk.java.net/プロジェク
ト名/リポジトリ名/サブリポジトリ名
– プロジェクト名: OpenJDK コミュ
ニティトップページの左側にある
Projects 欄から詳細が読める
– (サブ)リポジトリ名: プロジェクト
毎に異なるが、構造は大体一緒
Copyright©2016 NTT corp. All Rights Reserved. 16※正確には nested mercurial repository
(※)
寄り道: OpenJDK のリポジトリ
http://hg.openjdk.java.net/プロジェク
ト名/リポジトリ名/サブリポジトリ名
– プロジェクト名: OpenJDK コミュ
ニティトップページの左側にある
Projects 欄から詳細が読める
– (サブ)リポジトリ名: プロジェクト
毎に異なるが、構造は大体一緒
Copyright©2016 NTT corp. All Rights Reserved. 17
(※)
※正確には nested mercurial repository
どのプロジェクトを選ぶべきか?
•  51 プロジェクト
– 基本は jdkX (今は jdk9)
• jdkX = GA リリース前の
開発リポジトリ
• jdkXu = Updates
– それ以外はopenjdk.java.net
の Projects を眺めよう
Copyright©2016 NTT corp. All Rights Reserved. 18
どのリポジトリを選ぶべきか?
•  hg clone http://hg.openjdk.java.net/jdk9/XXX/
XXX は以下から選ぶ
– dev: 基本はこれ (開発用リポジトリ)
– jdk9: Master. コードを読むだけならこれ
– hs: GC や Runtime (HotSpotVM) の修正
– hs-comp: JIT compiler 等の修正
– client: AWT, Swing等のクライアントの修正
•  get_source.sh を実行してサブリポジトリ取得
– corba, hotspot, jaxp, jaws, jdk, langtools, nashorn
Copyright©2016 NTT corp. All Rights Reserved. 19※正確には nested mercurial repository と言う
どこにどんなコードがあるの?
•  サブリポジトリごとにコンポーネント分けしている
–  リポジトリ(jdk9)には主にビルドスクリプトが格納
•  common, make ディレクトリに入っている
–  各サブリポジトリには以下のようなコードが格納されている
•  hotspot: GC, Runtime, JIT Compiler 等の JVM 主要機能
•  jdk: JDK API や JDK 付属ツール ( jcmd 等)
•  corba: Common Object Request Broker Architecture
•  jaxp: Java API for XML Processing
•  jaxws: Java API for XML Web Services
•  langtools: javac や jshell といった言語関係ツール
•  nashorn: JavaScript Engine (jdk8から登場)
–  パッチを書いたら作業したリポジトリで diff を取る
•  hg diff -g または hg diff -u または hg export を実行する
•  注:テスト(再現コード)の準備や動作確認も!
Copyright©2016 NTT corp. All Rights Reserved. 20
どこにパッチ投稿すべきか?
•  ML を選んで登録し、投稿する
– http://mail.openjdk.java.net/mailman/listinfo
– プロジェクトやコンポーネントごとにある
Copyright©2016 NTT corp. All Rights Reserved. 21
151個もあった…
どこにパッチ投稿すべきか?
•  ML を選んで登録し、投稿する
– http://mail.openjdk.java.net/mailman/listinfo
– プロジェクトやコンポーネントごとにある
主な例
– core-libs-dev: 基本的なライブラリ
– hotspot-dev: HotSpot VM、Runtime周り
– hotspot-gc-dev: GC周り
– serviceability-dev: jmap や jcmd などのツール
– jdk9-dev: JDK 全体に渡る周知や議論・コミッタ
投票等の場で、個別機能の議論の場ではない
Copyright©2016 NTT corp. All Rights Reserved. 22
メール投稿で注意すべきことは?
Copyright©2016 NTT corp. All Rights Reserved. 23
•  パッチはメール本文に貼り付ける
– 添付ファイルや外部サービスは基本NG
•  パッチが採用されるには以下が必要
1.  JIRA (バグトラッカー)への登録
2.  レビュー(パッチの規模で人数が変動)
3.  リポジトリへのコミット
– これらを手伝ってくれるスポンサーが
必要(対象プロジェクトのコミッタ以上)
メール投稿で注意すべきことは?
Copyright©2016 NTT corp. All Rights Reserved. 24
• 反応がないことはザラ
– 休みだったり見てなかったり
– 1週間も反応がなかったら PING する
• 件名に PING: とか付けて送るだけ
• Could someone review this patch?
• 敬意を忘れない
– Thank you for very much!
役割ってあるの?
•  Author
2件の貢献(Contributed-byに名前が付いたコミット)
JIRA 書き込み権限、コードレビューサーバへのアク
セス権限
•  Committer
8件の貢献 + 投票
Author権限+コミット権限+スポンサー権限
•  Reviewer
32件(推奨40件)の貢献 + 投票
Committer権限+レビュー権限
Copyright©2016 NTT corp. All Rights Reserved. 25
役割ってあるの?
•  Author
2件の貢献(Contributed-byに名前が付いたコミット)
JIRA 書き込み権限、コードレビューサーバへのアク
セス権限
•  Committer
8件の貢献 + 投票
Author+コミット権限+スポンサー権限
•  Reviewer
32件(推奨40件)の貢献 + 投票
Committer権限+レビュー権限
Copyright©2016 NTT corp. All Rights Reserved. 26
役割ってあるの?
•  Author
2件の貢献(Contributed-byに名前が付いたコミット)
JIRA 書き込み権限、コードレビューサーバへのアク
セス権限
•  Committer
8件の貢献 + 投票(MLで推薦→投票→承認)
Author権限+コミット権限+スポンサー権限
•  Reviewer
32件(推奨40件)の貢献 + 投票
Committer権限+レビュー権限
Copyright©2016 NTT corp. All Rights Reserved. 27
ぜひ一緒に
やってみよう!
Copyright©2016 NTT corp. All Rights Reserved. 28
KUBOTA Yuji @sugarlife
• OpenJDK テクニカルサポート
– コア解析からGCチューニング, etc…
– OpenJDK Author (jdk9)
• 解析支援ツール HeapStats 開発
– 多数の商用で元気に稼働中 :)
Copyright©2016 NTT corp. All Rights Reserved. 29
NTT OSSセンタ
•  NTT グループの OSS 活用を支える部隊
*)OSSVERT®:OSs Suites VERified Technically(技術検証済みOSS組合せ)
事業会社
SI会社 
問合せ対応、導
入支援、保守等
技術検証、
導入推進
プロダクト/
ツール類開発
技術者育成、
人材交流
各種
OSS コ
ミュニ
ティ
設計, 開
発, 運用
グループ各社
サポー
トベン
ダ、
NTT
研究所
等お
客
様
サポー
ト連携
開発
連携
①OSSトータル
 サポート
NTT OSSセンタ
②OSS適用推進 
 (OSSVERT®*検証)
③技術開発
 (DBMS,高可用ミドル等)
④ソフトウェア
 基盤技術力向上
Copyright©2016 NTT corp. All Rights Reserved. 30
Q
Copyright©2016 NTT corp. All Rights Reserved. 31

More Related Content

PDF
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
PDF
JDK9 新機能 (日本語&ショートバージョン) #jjug
PDF
jjugccc2018 app review postmortem
PDF
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
PDF
Head toward Java 16 (Night Seminar Edition)
PDF
Migration Guide from Java 8 to Java 11 #jjug
PDF
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
PDF
Java 10でぼくたちの生活はどう変わるの?
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
JDK9 新機能 (日本語&ショートバージョン) #jjug
jjugccc2018 app review postmortem
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
Head toward Java 16 (Night Seminar Edition)
Migration Guide from Java 8 to Java 11 #jjug
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
Java 10でぼくたちの生活はどう変わるの?

What's hot (20)

PDF
WildFly Swarmではじめる「パーツとしてのJavaEE」
PDF
Prepare for Java 9 #jjug
PDF
JavaScript.Next
PDF
Head toward Java 13 and Java 14 #jjug
PDF
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4
PPTX
Java トラブル解析支援ツール HeapStats のご紹介
PDF
はじめての CircleCI
PPTX
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
PDF
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
PDF
JavaOne 2016 Java SE Feedback #jjug #j1jp
PDF
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
PDF
Javaで1から10まで書いた話(sanitized)
PPTX
実行可能JavaFXアプリケーションJAR(発表直前版)
PPTX
Guide to GraalVM (JJUG CCC 2019 Fall)
PPTX
java.lang.OutOfMemoryError #渋谷java
PDF
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
PDF
Java仮想マシンの実装技術
PPTX
Project Jigsaw #kanjava
PPTX
[社内勉強会]ELBとALBと数万スパイク負荷テスト
PDF
Keycloak で SSO #渋谷java
WildFly Swarmではじめる「パーツとしてのJavaEE」
Prepare for Java 9 #jjug
JavaScript.Next
Head toward Java 13 and Java 14 #jjug
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4
Java トラブル解析支援ツール HeapStats のご紹介
はじめての CircleCI
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
JavaOne 2016 Java SE Feedback #jjug #j1jp
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Javaで1から10まで書いた話(sanitized)
実行可能JavaFXアプリケーションJAR(発表直前版)
Guide to GraalVM (JJUG CCC 2019 Fall)
java.lang.OutOfMemoryError #渋谷java
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Java仮想マシンの実装技術
Project Jigsaw #kanjava
[社内勉強会]ELBとALBと数万スパイク負荷テスト
Keycloak で SSO #渋谷java
Ad

Similar to OpenJDK コミュニティに参加してみよう #jjug (20)

PPTX
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
PPTX
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
PPTX
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
PDF
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
PDF
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
PDF
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
PDF
これからのJDK/JVM 何を選ぶ?どう選ぶ?
PDF
JDK: 新しいリリースモデル解説(ver.2.1)
PDF
JavaOne 2015 JDK Update (Jigsaw) #j1jp
PDF
Oracle code one 2018 報告会概要
PDF
JDK:新しいリリースモデル解説 @ 熊本・福岡
PDF
20190202 jdk new_release_model_sendai
PDF
JDK: 新しいリリースモデル解説(ver.2.0)
PDF
JavaとOSSとAndroid - JavaAPI訴訟問題を考える
PDF
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
PDF
今年はJava進化の年!今知っておくべき新しいJava
PDF
JDKの選択肢とサーバーサイドでの選び方
PDF
JDK:新しいリリースモデル解説 @ 岡山・広島
PDF
JDK: 新しいリリースモデル解説
PPTX
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
これからのJDK/JVM 何を選ぶ?どう選ぶ?
JDK: 新しいリリースモデル解説(ver.2.1)
JavaOne 2015 JDK Update (Jigsaw) #j1jp
Oracle code one 2018 報告会概要
JDK:新しいリリースモデル解説 @ 熊本・福岡
20190202 jdk new_release_model_sendai
JDK: 新しいリリースモデル解説(ver.2.0)
JavaとOSSとAndroid - JavaAPI訴訟問題を考える
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
今年はJava進化の年!今知っておくべき新しいJava
JDKの選択肢とサーバーサイドでの選び方
JDK:新しいリリースモデル解説 @ 岡山・広島
JDK: 新しいリリースモデル解説
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
Ad

More from Yuji Kubota (20)

PDF
Head toward Java 15 and Java 16
PDF
Head toward Java 14 and Java 15 #LINE_DM
PDF
Head toward Java 14 and Java 15
PDF
オンライン会議と音声認識
PDF
Catch up Java 12 and Java 13
PDF
Introduction to Java 11: Support and JVM Features #jjug
PPTX
Java 9 and Future #jjug
PPTX
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
PDF
Unified JVM Logging
PDF
jcmd #javacasual
PDF
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
PDF
OpenJDK トラブルシューティング #javacasual
PDF
HeapStats @ Seasar Conference 2015 LT
PDF
JDK9 Features (Summary, 31/Jul/2015) #JJUG
PDF
HeapStats: Introduction and Technical Preview
PDF
JVM のいろはにほ #javajo
PDF
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
PDF
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
PDF
楽して JVM を学びたい #jjug
PDF
29 Tips in 40 Minitues for GlassFish Fans #glassfishjp
Head toward Java 15 and Java 16
Head toward Java 14 and Java 15 #LINE_DM
Head toward Java 14 and Java 15
オンライン会議と音声認識
Catch up Java 12 and Java 13
Introduction to Java 11: Support and JVM Features #jjug
Java 9 and Future #jjug
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Unified JVM Logging
jcmd #javacasual
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
OpenJDK トラブルシューティング #javacasual
HeapStats @ Seasar Conference 2015 LT
JDK9 Features (Summary, 31/Jul/2015) #JJUG
HeapStats: Introduction and Technical Preview
JVM のいろはにほ #javajo
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
楽して JVM を学びたい #jjug
29 Tips in 40 Minitues for GlassFish Fans #glassfishjp

OpenJDK コミュニティに参加してみよう #jjug