SlideShare a Scribd company logo
© 2019 NTT DATA Corporation 1 © 2019 NTT DATA Corporation
OpenJDKの開発環境
2019年11月23日
株式会社NTTデータ 末永 恭正
#jjug_ccc #ccc_a6b
© 2019 NTT DATA Corporation 2 #jjug_ccc #ccc_a6b
https://www.oracle.com/technetwork/jp/articles/java/ja-topics/jdk-release-model-4487660-ja.html
© 2019 NTT DATA Corporation 3 #jjug_ccc #ccc_a6b
Java使いたいんだって?
もちろん(Javaも)ちゃんと面倒見てくれるんだよね?
Javaで書くのは全然構わないっすけど
何使えばいいっすかね
© 2019 NTT DATA Corporation 4 #jjug_ccc #ccc_a6b
© 2019 NTT DATA Corporation 5 #jjug_ccc #ccc_a6b
もう自分で作っちゃおうかな…
© 2019 NTT DATA Corporation 6 #jjug_ccc #ccc_a6b
オレ流 … 誰流?
• 末永 恭正 @YaSuenag
• NTTデータでJavaやってるサンデープログラマー
• OpenJDK Reviewer
• IcedTea Committer
• Linux x64とWindows x64向けJDKをビルドした経験あり
今回のお話の前提条件にします!
※JDKは13以降を対象にします
© 2019 NTT DATA Corporation 7 #jjug_ccc #ccc_a6b
そんなにクセのないOpenJDKビルド
① ソースのダウンロード
② 必要なソフト類の準備
③ configure
④ make
一般的なOSSのビルドとあまり変わらない!
© 2019 NTT DATA Corporation 8 #jjug_ccc #ccc_a6b
① ソースのダウンロード
② 必要なソフト類の準備
③ configure
④ make
© 2019 NTT DATA Corporation 9 #jjug_ccc #ccc_a6b
ソースコードの入手
• 基本は公式リポジトリからのclone
• SCMはMercurial
• ブラウザからダウンロードも可能
$ hg clone http://hg.openjdk.java.net/jdk/jdk/
© 2019 NTT DATA Corporation 10 #jjug_ccc #ccc_a6b
入手元
• JDK開発リポジトリ
• http://hg.openjdk.java.net/jdk/jdk/
• JDK 8 Updates
• http://hg.openjdk.java.net/jdk8u/jdk8u/
• JDK Updates ※JDK 10以降
• http://hg.openjdk.java.net/jdk-updates
• この下の階層に「jdk<メジャーバージョン>u」の形で
バージョン別アップデートが存在
© 2019 NTT DATA Corporation 11 #jjug_ccc #ccc_a6b
詳細バージョン指定
tagsから指定可能
© 2019 NTT DATA Corporation 12 #jjug_ccc #ccc_a6b
① ソースのダウンロード
② 必要なソフト類の準備
③ configure
④ make
© 2019 NTT DATA Corporation 13 #jjug_ccc #ccc_a6b
環境
Windows 10 Professional
WSL
Hyper-V
Windows版ビルド環境Linux版ビルド環境
オレ流
© 2019 NTT DATA Corporation 14 #jjug_ccc #ccc_a6b
必要なソフト類の準備
• GCC
• GNU make、Autoconf
• 様々なライブラリ
• JDK
– ディストロ配布のものでOK
– Fedoraなら
java-latest-openjdk-devel
• WSL
– Ubuntu 18.04のストアアプリ
– JDK 13からWSLでビルド可能、
WSL 2はJDK 14から
– オフィシャルな
Windows版JDKのビルド環境はCygwin
• ほぼLinuxと同じライブラリ、ソフト類
– コンパイラ類はVisual Studio
(Community Edition可)
• JDKはWindows版JDK
– jdk.java.netのOpenJDK
オレ流
Windows版ビルド環境Linux版ビルド環境
© 2019 NTT DATA Corporation 15 #jjug_ccc #ccc_a6b
ビルドに関する情報
<JDKソース>/docs/building.{md,html}
© 2019 NTT DATA Corporation 16 #jjug_ccc #ccc_a6b
公式ビルド環境
https://wiki.openjdk.java.net/display/Build/Supported+Build+Platforms
© 2019 NTT DATA Corporation 17 #jjug_ccc #ccc_a6b
① ソースのダウンロード
② 必要なソフト類の準備
③ configure
④ make
© 2019 NTT DATA Corporation 18 #jjug_ccc #ccc_a6b
③configure
• デバッグ版 ※fastdebug
• リリース版
$ bash configure -–enable-debug 
--with-native-debug-symbols=internal 
--disable-warnings-as-errors
$ bash configure --with-native-debug-symbols=internal 
--disable-hotspot-gtest 
--disable-warnings-as-errors
オレ流
© 2019 NTT DATA Corporation 19 #jjug_ccc #ccc_a6b
configureオプション
• --enable-debug
• デバッグVM(fastdebug)をビルドする
• --with-native-debug-symbols
• デバッグ情報の扱いを決める
• デフォルト※はexternal、デバッグしやすさでinternal
• rpmbuildと絡める場合は絶対internal!
• --disable-warnings-as-errors
• 警告をビルドエラーとして扱わない
• 特に新しいC/C++コンパイラを使う場合は指定をオススメ
• --disable-hotspot-gtest
• Google Test関連ソースをビルドしない
• 日本語環境のWindowsでは必須(JDK-8216154関連)
※プラットフォームにより異なります
デバッグ版
デバッグ版 リリース版
デバッグ版 リリース版
リリース版
© 2019 NTT DATA Corporation 20 #jjug_ccc #ccc_a6b
configureで出るエラー例
• GNU makeがない
• 必要なライブラリがない
configure: error: Cannot find GNU make 3.81 or newer!
Please put it in the path, or add e.g. MAKE=/opt/gmake3.81/make
as argument to configure.
Fedoraなら`dnf install make`で対処
configure: error: Could not find X11 libraries.
You might be able to fix this by running
'sudo yum install libXtst-devel libXt-devel libXrender-devel
libXrandr-devel libXi-devel'.
対処方法
© 2019 NTT DATA Corporation 21 #jjug_ccc #ccc_a6b
configureで出るエラー例
• Boot JDKが見つからない
• Boot JDKが古い
configure: Could not find a valid Boot JDK.
OpenJDK distributions are available at http://jdk.java.net/.
configure: error: Cannot continue
configure: This might be fixed by explicitly setting --with-boot-jdk
configure: Potential Boot JDK found at /usr/lib/jvm/java-1.8.0-openjdk
is incorrect JDK version (openjdk version "1.8.0_232"); ignoring
configure: (Your Boot JDK version must be one of: 13 14)
configure: error: The path given by --with-boot-jdk does not contain
a valid Boot JDK
© 2019 NTT DATA Corporation 22 #jjug_ccc #ccc_a6b
Boot JDK
• JDKビルドの一部で使用するJDK
• JDKがありそうな場所からconfigureが自動で探し出す
• Linux:/usr/lib/jvm
• Windows:Program Files
• ビルドしようとするバージョンの1世代前までが必須
• 例:JDK 14をビルドするならJDK 13かJDK 14 EAが必要
• 時期によって2世代前まで指定できる場合もあり
• --with-boot-jdk=<フルパス>でconfigureに指定可能
• WindowsではWindowsプログラムから見えるところ
(/mnt/c/とかdrvfs配下のどこか)に展開しておく必要がある
© 2019 NTT DATA Corporation 23 #jjug_ccc #ccc_a6b
① ソースのダウンロード
② 必要なソフト類の準備
③ configure
④ make
© 2019 NTT DATA Corporation 24 #jjug_ccc #ccc_a6b
④make
$ make product-bundles
• JDKを作る
• 配布用アーカイブまで作る
$ make images
<JDKソース>/build/<configure設定>/images/jdk
<JDKソース>/build/<configure設定>/bundles
© 2019 NTT DATA Corporation 25 #jjug_ccc #ccc_a6b
build/linux-x86_64-server-release/bundles/
├── jdk-14-internal+0_linux-x64_bin-symbols.tar.gz
├── jdk-14-internal+0_linux-x64_bin-tests-demos.tar.gz
└── jdk-14-internal+0_linux-x64_bin.tar.gz
product-bundlesで作られるアーカイブ
① デバッグ情報
② サンプルプログラム
③ JDK本体
①
②
③
© 2019 NTT DATA Corporation 26 #jjug_ccc #ccc_a6b
注意すべきこと
• 配布先(実行環境)によっては動かないことがある
• 例1:Fedora 31でビルドしたものはCentOS 6で動かない
• 例2:CentOS 6でビルドしたものはAlpineで動かない
• デバッグ情報は大事に保管しておく
• ソースコードも大事に取っておく
• configureオプションもきちんと取っておく
• build/<configure設定>/configure.log
© 2019 NTT DATA Corporation 27 #jjug_ccc #ccc_a6b
$ java --version
openjdk 14-internal 2020-03-17
OpenJDK Runtime Environment (build 14-internal+0-adhoc.ysuenaga.jdk)
OpenJDK 64-Bit Server VM
(build 14-internal+0-adhoc.ysuenaga.jdk, mixed mode, sharing)
© 2019 NTT DATA Corporation 28 #jjug_ccc #ccc_a6b
$ java -XshowSettings:properties 2>&1 | grep vendor
java.specification.vendor = Oracle Corporation
java.vendor = N/A
java.vendor.url = https://openjdk.java.net/
java.vendor.url.bug = https://bugreport.java.com/bugreport/
java.vm.specification.vendor = Oracle Corporation
java.vm.vendor = Oracle Corporation
© 2019 NTT DATA Corporation 29 #jjug_ccc #ccc_a6b
• ベンダ名を正しく設定
• 各種URLも正しく設定
• ベンダURLとバグ報告URLの違いに注意
• バグ報告URLは全体とVMの2種類が存在
• 各種バージョンはお好みに
より製品版らしくするconfigureオプション
© 2019 NTT DATA Corporation 30 #jjug_ccc #ccc_a6b
より製品版らしくするconfigureオプション
OpenJDK Runtime Environment (build 14.0.0.1+2-TypeS)
--with-version-feature
--with-version-interim
--with-version-update
--with-version-patch
--with-version-build
--with-version-opt
※--with-version-preは空文字列(’’)をセット
© 2019 NTT DATA Corporation 31 #jjug_ccc #ccc_a6b
build/linux-x86_64-server-release/bundles/
├── jdk-14.0.0.1+2_linux-x64_bin-symbols.tar.gz
├── jdk-14.0.0.1+2_linux-x64_bin-tests-demos.tar.gz
└── jdk-14.0.0.1+2_linux-x64_bin.tar.gz
成果物のファイル名へも反映される
$ tar tvfz jdk-14.0.0.1+2_linux-x64_bin.tar.gz
-rwxrwxr-x ysuenaga/ysuenaga 18896 2019-11-12 10:23 jdk-14.0.0.1/bin/jaotc
-rwxrwxr-x ysuenaga/ysuenaga 18792 2019-11-12 10:23 jdk-14.0.0.1/bin/jar
-rwxrwxr-x ysuenaga/ysuenaga 18800 2019-11-12 10:23 jdk-14.0.0.1/bin/jarsigner
-rwxrwxr-x ysuenaga/ysuenaga 18760 2019-11-12 10:23 jdk-14.0.0.1/bin/java
© 2019 NTT DATA Corporation 32 #jjug_ccc #ccc_a6b
より製品版らしくするconfigureオプション
java.vm.vendor=NTT DATA
java.vendor=NTT DATA
java.vendor.url=https://oss.nttdata.com/
java.vendor.url.bug=https://oss.nttdata.com/bugreport/
--with-vendor-name --with-vendor-url
--with-vendor-bug-url
© 2019 NTT DATA Corporation 33 #jjug_ccc #ccc_a6b
クラッシュレポート(hs_errログ)の例
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007ff33dea4b25 (sent by kill), pid=58807, tid=58807
#
# JRE version: OpenJDK Runtime Environment (14.0.1+2) (build 14.0.0.1+2-TypeS)
# Java VM: OpenJDK 64-Bit Server VM (14.0.0.1+2-TypeS, mixed mode, sharing, tiered,
compressed oops, g1 gc, linux-amd64)
# Problematic frame:
# C [libpthread.so.0+0xab25] __GI___pthread_timedjoin_ex+0x215
#
# Core dump will be written. Default location: Core dumps may be processed with
"/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h" (or dumping to
/home/ysuenaga/test/LongSleep/core.58807)
#
# If you would like to submit a bug report, please visit:
# https://oss.nttdata.com/bugreport/jvm/
--with-vendor-vm-bug-url
JDK-8233785
© 2019 NTT DATA Corporation 34 #jjug_ccc #ccc_a6b
もらったJDK使ってるけど、
なんか動かないんだよね…
うわ、バグだ…
© 2019 NTT DATA Corporation 35 #jjug_ccc #ccc_a6b
デバッグ
• 基本はメモリダンプでネイティブデバッガ
• LinuxならGDB、WindowsならVisual StudioかWinDbg
• デバッグ情報を実行バイナリと同じ場所へ展開
• Windowsではフルダンプを取得するよう設定するのがオススメ
• Javaレイヤからも追っていく場合はjhsdbが便利
• 詳細はこちら
© 2019 NTT DATA Corporation 36 #jjug_ccc #ccc_a6b
OpenJDKコミュニティ
• バグ登録はOpenJDKコミュニティで
権限をもっていないとできない
• Authorと呼ばれるロール以上を保持する人のみ
• GitHubはあくまでミラーリポジトリ
• JDKについてはIssueやPRを受け付けない
• メールで勝負!
© 2019 NTT DATA Corporation 37 #jjug_ccc #ccc_a6b
パッチ出し
1. バグ、改善内容を見つける
2. 既知のものでないか確認する
• https://bugs.openjdk.java.net/
3. コードを修正し、パッチを作る
4. パッチをメールにベタ書きしてMLへ投稿!
$ hg diff
© 2019 NTT DATA Corporation 38 #jjug_ccc #ccc_a6b
うまくやるコツ:正しい出し先を選ぶ!
http://mail.openjdk.java.net/mailman/listinfo
© 2019 NTT DATA Corporation 39 #jjug_ccc #ccc_a6b
パッチ等、JDKのテストをしたい場合
1. jtregをダウンロードし、展開する
• https://ci.adoptopenjdk.net/view/Dependencies/job/jtreg/
2. $JT_HOMEにjtregディレクトリを、
$JT_JAVAにテスト対象のJDKディレクトリを設定する
3. JDKをmake test-imageする
• Google Testも有効化(--disable-hotspot-gtestを付けない)
• デバッグビルドするのがオススメ
4. 目的のテストケースを実行する
$ $JT_HOME/bin/jtreg -ignore:quiet -exclude:ProblemList.txt 
-nativepath:<ビルドディレクトリ>/support/test/<テスト対象>/jtreg/native/lib 
<テストケース>
© 2019 NTT DATA Corporation 40 #jjug_ccc #ccc_a6b
まとめ
• 基本はconfigure→make
• ソースはhg.openjdk.java.netから!
• configureオプションでバージョン番号などもしっかり設定!
• エラーが出たらconfigureの指示に従う
• アーカイブまで作るときはmake product-bundles
• 配布する場合は、配布先の実行環境に注意!
• ビルド時の情報や生成物は大事に保管しておく
• コミュニティへ報告をする場合は送信先MLに注意
• パッチを作るときはhg diff
© 2019 NTT DATA Corporation本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。
Ad

More Related Content

What's hot (20)

アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
NTT DATA Technology & Innovation
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
NTT DATA Technology & Innovation
 
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
NTT DATA Technology & Innovation
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
 
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
Takahiro YAMADA
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
Yoshinori Nakanishi
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
NTT DATA Technology & Innovation
 
コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)
コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)
コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
NTT DATA Technology & Innovation
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
スレッドダンプの読み方
スレッドダンプの読み方スレッドダンプの読み方
スレッドダンプの読み方
Funato Takashi
 
次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて
Yoshimasa Tanabe
 
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーションアーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
 
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
NTT DATA Technology & Innovation
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
NTT DATA Technology & Innovation
 
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
NTT DATA Technology & Innovation
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
 
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
Takahiro YAMADA
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
Yoshinori Nakanishi
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!祝!PostgreSQLレプリケーション10周年!徹底紹介!!
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
NTT DATA Technology & Innovation
 
コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)
コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)
コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16でのロールに関する変更点(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
NTT DATA Technology & Innovation
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
スレッドダンプの読み方
スレッドダンプの読み方スレッドダンプの読み方
スレッドダンプの読み方
Funato Takashi
 
次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて次世代Webコンテナ Undertowについて
次世代Webコンテナ Undertowについて
Yoshimasa Tanabe
 

Similar to オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料) (20)

オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
NTT DATA Technology & Innovation
 
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
 
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
Shinji Takao
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストール
Yasuhiro Arai
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and docker
Hiroshi Miura
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)
Yasuhiro Arai
 
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and docker
Hiroshi Miura
 
Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料
Masaki Muranaka
 
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
 
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
NTT DATA Technology & Innovation
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
maebashi
 
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
Shinji Takao
 
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
NTT DATA Technology & Innovation
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション
Yuta Matsumura
 
明日から使えるgradle
明日から使えるgradle明日から使えるgradle
明日から使えるgradle
kimukou_26 Kimukou
 
de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!
Minoru Naito
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
NTT DATA Technology & Innovation
 
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
 
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
GraalVM を普通の Java VM として使う ~クラウドベンチマークなどでの比較~
Shinji Takao
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストール
Yasuhiro Arai
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and docker
Hiroshi Miura
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)
Yasuhiro Arai
 
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
 
"Up" with vagrant and docker
"Up" with vagrant and docker"Up" with vagrant and docker
"Up" with vagrant and docker
Hiroshi Miura
 
Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料
Masaki Muranaka
 
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
 
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
NTT DATA Technology & Innovation
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
maebashi
 
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
Shinji Takao
 
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
NTT DATA Technology & Innovation
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション
Yuta Matsumura
 
明日から使えるgradle
明日から使えるgradle明日から使えるgradle
明日から使えるgradle
kimukou_26 Kimukou
 
de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!
Minoru Naito
 
Ad

More from NTT DATA Technology & Innovation (20)

2025年現在のNewSQL (最強DB講義 #36 発表資料)
2025年現在のNewSQL (最強DB講義 #36 発表資料)2025年現在のNewSQL (最強DB講義 #36 発表資料)
2025年現在のNewSQL (最強DB講義 #36 発表資料)
NTT DATA Technology & Innovation
 
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
NTT DATA Technology & Innovation
 
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
NTT DATA Technology & Innovation
 
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
NTT DATA Technology & Innovation
 
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
NTT DATA Technology & Innovation
 
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
NTT DATA Technology & Innovation
 
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
NTT DATA Technology & Innovation
 
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
NTT DATA Technology & Innovation
 
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
NTT DATA Technology & Innovation
 
GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)
GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)
GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)
NTT DATA Technology & Innovation
 
PostgreSQLのSQL処理の流れとMVCC (第48回 PostgreSQLアンカンファレンス 発表資料)
PostgreSQLのSQL処理の流れとMVCC (第48回 PostgreSQLアンカンファレンス 発表資料)PostgreSQLのSQL処理の流れとMVCC (第48回 PostgreSQLアンカンファレンス 発表資料)
PostgreSQLのSQL処理の流れとMVCC (第48回 PostgreSQLアンカンファレンス 発表資料)
NTT DATA Technology & Innovation
 
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
NTT DATA Technology & Innovation
 
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
NTT DATA Technology & Innovation
 
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
NTT DATA Technology & Innovation
 
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
NTT DATA Technology & Innovation
 
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
NTT DATA Technology & Innovation
 
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
NTT DATA Technology & Innovation
 
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
NTT DATA Technology & Innovation
 
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
アウトプット100回!YOWフレームワークで実践するふりかえりとその効果 (XP祭り2024 登壇資料)
NTT DATA Technology & Innovation
 
GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)
GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)
GSF Global Summit 2024 (Green Software Foundation Global Summit 2024 Tokyo 講演資料)
NTT DATA Technology & Innovation
 
PostgreSQLのSQL処理の流れとMVCC (第48回 PostgreSQLアンカンファレンス 発表資料)
PostgreSQLのSQL処理の流れとMVCC (第48回 PostgreSQLアンカンファレンス 発表資料)PostgreSQLのSQL処理の流れとMVCC (第48回 PostgreSQLアンカンファレンス 発表資料)
PostgreSQLのSQL処理の流れとMVCC (第48回 PostgreSQLアンカンファレンス 発表資料)
NTT DATA Technology & Innovation
 
Ad

オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)

  • 1. © 2019 NTT DATA Corporation 1 © 2019 NTT DATA Corporation OpenJDKの開発環境 2019年11月23日 株式会社NTTデータ 末永 恭正 #jjug_ccc #ccc_a6b
  • 2. © 2019 NTT DATA Corporation 2 #jjug_ccc #ccc_a6b https://www.oracle.com/technetwork/jp/articles/java/ja-topics/jdk-release-model-4487660-ja.html
  • 3. © 2019 NTT DATA Corporation 3 #jjug_ccc #ccc_a6b Java使いたいんだって? もちろん(Javaも)ちゃんと面倒見てくれるんだよね? Javaで書くのは全然構わないっすけど 何使えばいいっすかね
  • 4. © 2019 NTT DATA Corporation 4 #jjug_ccc #ccc_a6b
  • 5. © 2019 NTT DATA Corporation 5 #jjug_ccc #ccc_a6b もう自分で作っちゃおうかな…
  • 6. © 2019 NTT DATA Corporation 6 #jjug_ccc #ccc_a6b オレ流 … 誰流? • 末永 恭正 @YaSuenag • NTTデータでJavaやってるサンデープログラマー • OpenJDK Reviewer • IcedTea Committer • Linux x64とWindows x64向けJDKをビルドした経験あり 今回のお話の前提条件にします! ※JDKは13以降を対象にします
  • 7. © 2019 NTT DATA Corporation 7 #jjug_ccc #ccc_a6b そんなにクセのないOpenJDKビルド ① ソースのダウンロード ② 必要なソフト類の準備 ③ configure ④ make 一般的なOSSのビルドとあまり変わらない!
  • 8. © 2019 NTT DATA Corporation 8 #jjug_ccc #ccc_a6b ① ソースのダウンロード ② 必要なソフト類の準備 ③ configure ④ make
  • 9. © 2019 NTT DATA Corporation 9 #jjug_ccc #ccc_a6b ソースコードの入手 • 基本は公式リポジトリからのclone • SCMはMercurial • ブラウザからダウンロードも可能 $ hg clone http://hg.openjdk.java.net/jdk/jdk/
  • 10. © 2019 NTT DATA Corporation 10 #jjug_ccc #ccc_a6b 入手元 • JDK開発リポジトリ • http://hg.openjdk.java.net/jdk/jdk/ • JDK 8 Updates • http://hg.openjdk.java.net/jdk8u/jdk8u/ • JDK Updates ※JDK 10以降 • http://hg.openjdk.java.net/jdk-updates • この下の階層に「jdk<メジャーバージョン>u」の形で バージョン別アップデートが存在
  • 11. © 2019 NTT DATA Corporation 11 #jjug_ccc #ccc_a6b 詳細バージョン指定 tagsから指定可能
  • 12. © 2019 NTT DATA Corporation 12 #jjug_ccc #ccc_a6b ① ソースのダウンロード ② 必要なソフト類の準備 ③ configure ④ make
  • 13. © 2019 NTT DATA Corporation 13 #jjug_ccc #ccc_a6b 環境 Windows 10 Professional WSL Hyper-V Windows版ビルド環境Linux版ビルド環境 オレ流
  • 14. © 2019 NTT DATA Corporation 14 #jjug_ccc #ccc_a6b 必要なソフト類の準備 • GCC • GNU make、Autoconf • 様々なライブラリ • JDK – ディストロ配布のものでOK – Fedoraなら java-latest-openjdk-devel • WSL – Ubuntu 18.04のストアアプリ – JDK 13からWSLでビルド可能、 WSL 2はJDK 14から – オフィシャルな Windows版JDKのビルド環境はCygwin • ほぼLinuxと同じライブラリ、ソフト類 – コンパイラ類はVisual Studio (Community Edition可) • JDKはWindows版JDK – jdk.java.netのOpenJDK オレ流 Windows版ビルド環境Linux版ビルド環境
  • 15. © 2019 NTT DATA Corporation 15 #jjug_ccc #ccc_a6b ビルドに関する情報 <JDKソース>/docs/building.{md,html}
  • 16. © 2019 NTT DATA Corporation 16 #jjug_ccc #ccc_a6b 公式ビルド環境 https://wiki.openjdk.java.net/display/Build/Supported+Build+Platforms
  • 17. © 2019 NTT DATA Corporation 17 #jjug_ccc #ccc_a6b ① ソースのダウンロード ② 必要なソフト類の準備 ③ configure ④ make
  • 18. © 2019 NTT DATA Corporation 18 #jjug_ccc #ccc_a6b ③configure • デバッグ版 ※fastdebug • リリース版 $ bash configure -–enable-debug --with-native-debug-symbols=internal --disable-warnings-as-errors $ bash configure --with-native-debug-symbols=internal --disable-hotspot-gtest --disable-warnings-as-errors オレ流
  • 19. © 2019 NTT DATA Corporation 19 #jjug_ccc #ccc_a6b configureオプション • --enable-debug • デバッグVM(fastdebug)をビルドする • --with-native-debug-symbols • デバッグ情報の扱いを決める • デフォルト※はexternal、デバッグしやすさでinternal • rpmbuildと絡める場合は絶対internal! • --disable-warnings-as-errors • 警告をビルドエラーとして扱わない • 特に新しいC/C++コンパイラを使う場合は指定をオススメ • --disable-hotspot-gtest • Google Test関連ソースをビルドしない • 日本語環境のWindowsでは必須(JDK-8216154関連) ※プラットフォームにより異なります デバッグ版 デバッグ版 リリース版 デバッグ版 リリース版 リリース版
  • 20. © 2019 NTT DATA Corporation 20 #jjug_ccc #ccc_a6b configureで出るエラー例 • GNU makeがない • 必要なライブラリがない configure: error: Cannot find GNU make 3.81 or newer! Please put it in the path, or add e.g. MAKE=/opt/gmake3.81/make as argument to configure. Fedoraなら`dnf install make`で対処 configure: error: Could not find X11 libraries. You might be able to fix this by running 'sudo yum install libXtst-devel libXt-devel libXrender-devel libXrandr-devel libXi-devel'. 対処方法
  • 21. © 2019 NTT DATA Corporation 21 #jjug_ccc #ccc_a6b configureで出るエラー例 • Boot JDKが見つからない • Boot JDKが古い configure: Could not find a valid Boot JDK. OpenJDK distributions are available at http://jdk.java.net/. configure: error: Cannot continue configure: This might be fixed by explicitly setting --with-boot-jdk configure: Potential Boot JDK found at /usr/lib/jvm/java-1.8.0-openjdk is incorrect JDK version (openjdk version "1.8.0_232"); ignoring configure: (Your Boot JDK version must be one of: 13 14) configure: error: The path given by --with-boot-jdk does not contain a valid Boot JDK
  • 22. © 2019 NTT DATA Corporation 22 #jjug_ccc #ccc_a6b Boot JDK • JDKビルドの一部で使用するJDK • JDKがありそうな場所からconfigureが自動で探し出す • Linux:/usr/lib/jvm • Windows:Program Files • ビルドしようとするバージョンの1世代前までが必須 • 例:JDK 14をビルドするならJDK 13かJDK 14 EAが必要 • 時期によって2世代前まで指定できる場合もあり • --with-boot-jdk=<フルパス>でconfigureに指定可能 • WindowsではWindowsプログラムから見えるところ (/mnt/c/とかdrvfs配下のどこか)に展開しておく必要がある
  • 23. © 2019 NTT DATA Corporation 23 #jjug_ccc #ccc_a6b ① ソースのダウンロード ② 必要なソフト類の準備 ③ configure ④ make
  • 24. © 2019 NTT DATA Corporation 24 #jjug_ccc #ccc_a6b ④make $ make product-bundles • JDKを作る • 配布用アーカイブまで作る $ make images <JDKソース>/build/<configure設定>/images/jdk <JDKソース>/build/<configure設定>/bundles
  • 25. © 2019 NTT DATA Corporation 25 #jjug_ccc #ccc_a6b build/linux-x86_64-server-release/bundles/ ├── jdk-14-internal+0_linux-x64_bin-symbols.tar.gz ├── jdk-14-internal+0_linux-x64_bin-tests-demos.tar.gz └── jdk-14-internal+0_linux-x64_bin.tar.gz product-bundlesで作られるアーカイブ ① デバッグ情報 ② サンプルプログラム ③ JDK本体 ① ② ③
  • 26. © 2019 NTT DATA Corporation 26 #jjug_ccc #ccc_a6b 注意すべきこと • 配布先(実行環境)によっては動かないことがある • 例1:Fedora 31でビルドしたものはCentOS 6で動かない • 例2:CentOS 6でビルドしたものはAlpineで動かない • デバッグ情報は大事に保管しておく • ソースコードも大事に取っておく • configureオプションもきちんと取っておく • build/<configure設定>/configure.log
  • 27. © 2019 NTT DATA Corporation 27 #jjug_ccc #ccc_a6b $ java --version openjdk 14-internal 2020-03-17 OpenJDK Runtime Environment (build 14-internal+0-adhoc.ysuenaga.jdk) OpenJDK 64-Bit Server VM (build 14-internal+0-adhoc.ysuenaga.jdk, mixed mode, sharing)
  • 28. © 2019 NTT DATA Corporation 28 #jjug_ccc #ccc_a6b $ java -XshowSettings:properties 2>&1 | grep vendor java.specification.vendor = Oracle Corporation java.vendor = N/A java.vendor.url = https://openjdk.java.net/ java.vendor.url.bug = https://bugreport.java.com/bugreport/ java.vm.specification.vendor = Oracle Corporation java.vm.vendor = Oracle Corporation
  • 29. © 2019 NTT DATA Corporation 29 #jjug_ccc #ccc_a6b • ベンダ名を正しく設定 • 各種URLも正しく設定 • ベンダURLとバグ報告URLの違いに注意 • バグ報告URLは全体とVMの2種類が存在 • 各種バージョンはお好みに より製品版らしくするconfigureオプション
  • 30. © 2019 NTT DATA Corporation 30 #jjug_ccc #ccc_a6b より製品版らしくするconfigureオプション OpenJDK Runtime Environment (build 14.0.0.1+2-TypeS) --with-version-feature --with-version-interim --with-version-update --with-version-patch --with-version-build --with-version-opt ※--with-version-preは空文字列(’’)をセット
  • 31. © 2019 NTT DATA Corporation 31 #jjug_ccc #ccc_a6b build/linux-x86_64-server-release/bundles/ ├── jdk-14.0.0.1+2_linux-x64_bin-symbols.tar.gz ├── jdk-14.0.0.1+2_linux-x64_bin-tests-demos.tar.gz └── jdk-14.0.0.1+2_linux-x64_bin.tar.gz 成果物のファイル名へも反映される $ tar tvfz jdk-14.0.0.1+2_linux-x64_bin.tar.gz -rwxrwxr-x ysuenaga/ysuenaga 18896 2019-11-12 10:23 jdk-14.0.0.1/bin/jaotc -rwxrwxr-x ysuenaga/ysuenaga 18792 2019-11-12 10:23 jdk-14.0.0.1/bin/jar -rwxrwxr-x ysuenaga/ysuenaga 18800 2019-11-12 10:23 jdk-14.0.0.1/bin/jarsigner -rwxrwxr-x ysuenaga/ysuenaga 18760 2019-11-12 10:23 jdk-14.0.0.1/bin/java
  • 32. © 2019 NTT DATA Corporation 32 #jjug_ccc #ccc_a6b より製品版らしくするconfigureオプション java.vm.vendor=NTT DATA java.vendor=NTT DATA java.vendor.url=https://oss.nttdata.com/ java.vendor.url.bug=https://oss.nttdata.com/bugreport/ --with-vendor-name --with-vendor-url --with-vendor-bug-url
  • 33. © 2019 NTT DATA Corporation 33 #jjug_ccc #ccc_a6b クラッシュレポート(hs_errログ)の例 # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007ff33dea4b25 (sent by kill), pid=58807, tid=58807 # # JRE version: OpenJDK Runtime Environment (14.0.1+2) (build 14.0.0.1+2-TypeS) # Java VM: OpenJDK 64-Bit Server VM (14.0.0.1+2-TypeS, mixed mode, sharing, tiered, compressed oops, g1 gc, linux-amd64) # Problematic frame: # C [libpthread.so.0+0xab25] __GI___pthread_timedjoin_ex+0x215 # # Core dump will be written. Default location: Core dumps may be processed with "/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h" (or dumping to /home/ysuenaga/test/LongSleep/core.58807) # # If you would like to submit a bug report, please visit: # https://oss.nttdata.com/bugreport/jvm/ --with-vendor-vm-bug-url JDK-8233785
  • 34. © 2019 NTT DATA Corporation 34 #jjug_ccc #ccc_a6b もらったJDK使ってるけど、 なんか動かないんだよね… うわ、バグだ…
  • 35. © 2019 NTT DATA Corporation 35 #jjug_ccc #ccc_a6b デバッグ • 基本はメモリダンプでネイティブデバッガ • LinuxならGDB、WindowsならVisual StudioかWinDbg • デバッグ情報を実行バイナリと同じ場所へ展開 • Windowsではフルダンプを取得するよう設定するのがオススメ • Javaレイヤからも追っていく場合はjhsdbが便利 • 詳細はこちら
  • 36. © 2019 NTT DATA Corporation 36 #jjug_ccc #ccc_a6b OpenJDKコミュニティ • バグ登録はOpenJDKコミュニティで 権限をもっていないとできない • Authorと呼ばれるロール以上を保持する人のみ • GitHubはあくまでミラーリポジトリ • JDKについてはIssueやPRを受け付けない • メールで勝負!
  • 37. © 2019 NTT DATA Corporation 37 #jjug_ccc #ccc_a6b パッチ出し 1. バグ、改善内容を見つける 2. 既知のものでないか確認する • https://bugs.openjdk.java.net/ 3. コードを修正し、パッチを作る 4. パッチをメールにベタ書きしてMLへ投稿! $ hg diff
  • 38. © 2019 NTT DATA Corporation 38 #jjug_ccc #ccc_a6b うまくやるコツ:正しい出し先を選ぶ! http://mail.openjdk.java.net/mailman/listinfo
  • 39. © 2019 NTT DATA Corporation 39 #jjug_ccc #ccc_a6b パッチ等、JDKのテストをしたい場合 1. jtregをダウンロードし、展開する • https://ci.adoptopenjdk.net/view/Dependencies/job/jtreg/ 2. $JT_HOMEにjtregディレクトリを、 $JT_JAVAにテスト対象のJDKディレクトリを設定する 3. JDKをmake test-imageする • Google Testも有効化(--disable-hotspot-gtestを付けない) • デバッグビルドするのがオススメ 4. 目的のテストケースを実行する $ $JT_HOME/bin/jtreg -ignore:quiet -exclude:ProblemList.txt -nativepath:<ビルドディレクトリ>/support/test/<テスト対象>/jtreg/native/lib <テストケース>
  • 40. © 2019 NTT DATA Corporation 40 #jjug_ccc #ccc_a6b まとめ • 基本はconfigure→make • ソースはhg.openjdk.java.netから! • configureオプションでバージョン番号などもしっかり設定! • エラーが出たらconfigureの指示に従う • アーカイブまで作るときはmake product-bundles • 配布する場合は、配布先の実行環境に注意! • ビルド時の情報や生成物は大事に保管しておく • コミュニティへ報告をする場合は送信先MLに注意 • パッチを作るときはhg diff
  • 41. © 2019 NTT DATA Corporation本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。