#chiroito ’s blog

Java を中心とした趣味の技術について

OpenJDK

OpenJDK開発記:JDK-8249720: Generated bytecodes of EventWriter don't be output to the logを直してみた。

これは何? 今回、パッチを書いたのはJDK-8249720のGenerated bytecodes of EventWriter don't be output to the logです。 [JDK-8249720] Generated bytecodes of EventWriter don't be output to the log - Java Bug System VM起動引数に-Xlog:jfr+system+…

Quarkus で JFR Event Streaming

Java 14 から JDK Flight Recorder で取得した情報を Java プロセス内で処理する JFR Event Streaming が導入されました。今回はこれを Quarkus で使ってみたいと思います。 今回のサンプルでは JFR では標準的な情報を取得するようにします。JFR Event Stre…

macOS に OpenJDK のビルド環境を構築

環境 以下の環境で試しました。 macOS Mojave バージョン 10.14.6 Xcode Version 11.3.1 (11C504) 環境の準備 環境を準備するには以下の3つが必要です。 Xcode autoconf Boot用JDK Xcode は App Store からインストールしました。 デフォルトの設定ではbash …

OpenJDK開発記:JDK-8219904: ClassCastException when calling FlightRecorderMXBean#getRecordings()を直してみた。

これは何? 今回、パッチを書いたのはJDK-8219904のClassCastException when calling FlightRecorderMXBean#getRecordings()です。 [JDK-8219904] ClassCastException when calling FlightRecorderMXBean#getRecordings() - Java Bug System これはJMXのリモ…

OpenJDK開発記:JDK-8222489: jcmd VM.system_properties gives unusable paths on Windowsを直してみた。

これは何? 今回、パッチを書いたのはJDK-8222489のjcmd VM.system_properties gives unusable paths on Windows。 [JDK-8222489] jcmd VM.system_properties gives unusable paths on Windows - Java Bug System Java 14までにはjcmd <PID> VM.system_properties</pid>…

JFR Event Streamingを軽い気持ちで非同期にしてみたら動かなかった

もともとこんな感じで同期で作っていたので「es.start()の部分をes.startAsync()にしたら非同期になるだろ」と思いやったらイベントが全然処理されない。 import jdk.jfr.Configuration; import jdk.jfr.consumer.EventStream; import jdk.jfr.consumer.Reco…

CPUによるOpenJDKのビルド時間の推移

OpenJDK の開発環境を E3-1265 V2 から i9-9900K へ変えてみたのでビルド時間を計ってみました。 ※i5-9400H のCPUもゲットしたので表でだけ性能を追加しました。 それぞれの性能はこんな感じです。 プロセッサ名 物理コア数 ベース動作周波数 ターボブースト…

Windows Subsystem for Linux を使って OpenJDK をビルド

Windows 上で Windows Subsystem for Linux (WSL) を使用して OpenJDK 14 の Windows バイナリをビルドする方法をまとめます。 やりがちですが、Windows Subsystem for Linux (WSL)側のUbuntu 側で hg するのは必須ではありません。(やった) Windows側で好…

OpenJDK を開発する流れ

自分が使うコマンドをうっかり忘れるときがあるのでその備忘録のために、開発の流れとそこで使ってる内容をメモ。 公式のガイドはこちらを参考にしてください。The OpenJDK Developers' Guide – Index OpenJDK の開発は以下のような流れで行います。 バグを…

Terraform を使って Cloud上に OpenJDK の開発環境を整えてみた

OpenJDK のビルドやテストは時間が非常に掛かるので、クラウド上で大量の CPU リソースを使って短時間化できないかを試してみました。 今回作った環境に自分で書いたパッチを置いて Terraform を実行すると、あとはクラウド上で大量のリソースを使ってビルド…

OpenJDK のテストをデバッグ実行するためいろいろ試みてみた

Java のコードをデバッグ実行するには-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=127.0.0.1:12345みたいな感じのを付けます。これを使って OpenJDK の Java 部分のデバッグができるだろうなと思って試してみました。 jtreg で実行する…

JShell 自体をデバッグしてみた

Java Bug System を見ていたら JShell 自体のデバッグを見つけたので、パッチを書こうと思いJShellについて調べてみた。 使い方や 2 つの JVM が動くぐらいは知っていたけど、具体的には知らないので調べてみました。 試しにjshellコマンドを実行してからjmc…

Try Project Loom -Project Loomを試す-

JVM Language Summit に先立ち、Fri, 27 Jul 2018 15:33:05 +0100 に Project Loom がついにコミットされたので試してみたいと思います。 現段階ではまだまだ開発途中であるためクラスやメソッドが変更される可能性があるのでご注意ください。

OpenJDK の Author になりました

2017年7月26日(PDT)付けで OpenJDK 10 の Author になりました。 OpenJDK Census ※7月27日(JST)現在では未反映 2017/7/27 09:57 -0700反映されました。 Authorになるまでの道のり Author になるにはパッチをいくつか書いて、Project Lead へメールをするだけ…

Eclipse 上で OpenJDK を開発/デバッグする

OpenJDK を開発したりソースを見ていると、関数やクラスの定義を追いたくなったり、実行しながら動作を確認したくなることがあります。 多くのエンジニア達は vi や grep 、gdb を使ってるそうです。私にとってCUIでの開発はハードルが高くてかなりつらいの…

OpenJDK を Linux でビルドする

OpenJDK の JDK 9 をビルドします。 ビルドするには以下の手順を行います。 必要なパッケージのインストール ソースコードをダウンロード コンフィグレーション ビルド 今回は Oracle Linux 7.3 上に環境を作っています。RHEL や CentOS でも手順は変わらな…