CLOVER🍀

That was when it all began.

Java

JEP 444(Virtual Threads)のpinning(ピン留め)をシステムプロパティjdk.tracePinnedThreadsによるスタックトレースの出力で確認する

これは、なにをしたくて書いたもの? 前に、Virtual Threadsに関するエントリーを書きました。 Java 21で正式版になったJEP 444(Virtual Threads)に関するAPIを試す - CLOVER Virtual Threadsを使ってHTTPサーバー/クライアントを書いて、スレッドまわり…

jstatライクなコマンド(スクリプト)をjcmdのPerfCounter.printの結果から作ってみる

これは、なにをしたくて書いたもの? Javaアプリケーションの状態を簡単に見る時に、自分が使うツールのひとつにjstatがあります。 jstatコマンド このjstatコマンドですが、jcmdに直接の代替がなく、いつもjstatはjstatのままだったのですが。 jcmdのPerfCo…

JDKなしでjcmd等のJavaの各種診断ツールを動かせるjattachを試す

これは、なにをしたくて書いたもの? コンテナ環境などでJavaアプリケーションを実行している時でかつJDKをインストールしていない場合、jcmd等のJDK付属ツールがなくて 困る場合などがあると思います。 こういう時にはjattachというツールを使うと便利そう…

Emacsにlsp-mode+lsp-javaをインストールする

これは、なにをしたくて書いたもの? 自分はJavaのソースコードを書く時は、基本的にIntelliJを使っています。 Emacsを使う時は、lsp-modeを設定しているのがTypeScript/JavaScript、PythonくらいでたまにEmacsでJavaのソースコードを開くと 困ったりしてい…

Database Riderで、外部キーを大量に使っているデータベースを対象にすると実行が遅くなるという話

これは、なにをしたくて書いたもの? Javaでデータベースを使うテストで、Database Riderが便利なのでちょいちょいと使うのですが。 外部キーをたくさん使っていると実行が遅くなるという問題に悩まされたことがあったので、メモしておきます。 @DataSetのus…

javacの--releaseオプションについて(JEP 247 Compile for Older Platform Versions)

これは、なにをしたくて書いたもの? javacコマンドで、--releaseというオプションがあることを認識していなかったようなので、少し見ておくことにしました。 これは、JEP 247 Compile for Older Platform Versionsというもののようです。 JEP 247 Compile f…

Virtual Threadsを使ってHTTPサーバー/クライアントを書いて、スレッドまわりの動きを確認してみる(スレッドダンプの取得付き)

これはなにをしたくて書いたもの? 前回のエントリーで、JEP 444(Virtual Threads)について書きました。 Java 21で正式版になったJEP 444(Virtual Threads)に関するAPIを試す - CLOVER この時には踏み込まなかった、スレッドまわりの挙動やスレッドダン…

Java 21で正式版になったJEP 444(Virtual Threads)に関するAPIを試す

これは、なにをしたくて書いたもの? Java 21で正式版になった、JEP 444(Virtual Threads)を試しておきたいなということで。 スレッドに関するAPIも変わっているようなので、こちらも合わせて。 なお、スレッドダンプの取得やHTTPサーバー/クライアントを…

Ubuntu Linux 22.04 LTSにOpenJDK 21をインストールする

これは、なにをしたくて書いたもの? OpenJDK 21が2023年9月19日にリリースされました。 The Arrival of Java 21 JDK 21 Documentation - Home JDK 21ドキュメント - ホーム いつものことながら、Ubuntu Linuxの現行LTSで使えるようになるまでは時間がかかる…

JJUG CCC 2023 Fallに参加してきました #jjug_ccc

なんの話? 11月11日に、野村コンファレンスプラザ新宿で開催されたJJUG CCC 2023 Fallに参加してきました。 JJUG CCC 2023 Fall 前回のCCCの参加が2017 Fallだったみたいなので、実に6年ぶりの参加になりました…。 JJUG CCC 2017 Fallに参加してきました #j…

Eclipse Starter for Jakarta EEを試す

これは、なにをしたくて書いたもの? Jakarta EEのプロジェクトのとっかかりを作れる、Eclipse Starter for Jakarta EEというものがあることは知っていたのですが、使わないまま 存在を完全に忘れていたので、1度試しておくことにしました。 Eclipse Starter…

Java 11で導入されたHTTPクライアント(JEP 321 HTTP Client)を試す

これは、なにをしたくて書いたもの? Java 11からHTTPクライアントが導入されましたが、そういえば触ったことがありませんでした。 自分でも1度試してみようかなということで。 JEP 321: HTTP Client HTTPクライアントは、「JEP 321: HTTP Client」で導入さ…

Java 16で導入された、JEP 395 Recordsを試す

これはなにをしたくて書いたもの? Java 16からRecordsが導入されましたが、使ったことがなかったので自分でも扱っておこうかなと。 JEP 395 Records RecordsのJEPはこちら。 JEP 395: Records ドキュメントとしては、こちらを見るのがよいでしょう。 Java言…

JavaでUUIDを扱えるライブラリーを調べる

これは、なにをしたくて書いたもの? JavaでUUIDを使おうと思ったら、java.util.UUID#randomUUID#toStringでバージョン4のUUIDを使っていると思います。 UUID (Java SE 17 & JDK 17) でも、UUIDってバージョン4以外にも種類がありましたよね、ということで、…

Java VMのヒープサイズをパーセンテージで指定する(-XX:InitialRAMPercentage、-XX:MaxRAMPercentage)

これは、なにをしたくて書いたもの? Java VMのヒープサイズを指定するオプションといえば、-Xmx(下限値)と-Xmx(上限値)だと思います。 これらのオプションは、ヒープサイズを直接指定するものですが、パーセンテージでも指定できる-XX:InitialRAMPercen…

Javaのクラスファイルを検索できる、Jandexを試す

これは、なにをしたくて書いたもの? Javaのクラスファイルを検索できる、Jandexというライブラリーがあります。このブログ内でも間接的に何度か扱ってきているのですが、 いつの間にかorganizationが移っていたりドキュメントができたりしていたので、この…

Ubuntu Linuxの各LTS(14.04〜22.04)で、公式リポジトリーからインストールできるOpenJDKを調べる

これは、なにをしたくて書いたもの? ふだん使っているLinuxはUbuntu Linux LTSなのですが、各LTSでどのバージョンのOpenJDKをインストールできるのかなと思って 少しまとめてみました。 特になにも設定せず、apt installでインストール可能なUbuntu Linuxの…

Javaソースコードのアーキテクチャーをチェックするテストが書ける、ArchUnitを試す

これは、なにをしたくて書いたもの? ArchUnitというものを試してみたいな、ということで。 ArchUnit ArchUnitは、Javaソースコードのアーキテクチャーをチェックするためのユニットテストフレームワークです。 ArchUnit is a free, simple and extensible l…

Sonatype Nexus 3をTerraformで操作する

これは、なにをしたくて書いたもの? TerraformのProviderを見ていると、Sonatype Nexus用のProviderがあったのでちょっと試してみたいなと。 Nexus Provider Nexus Provider Sonatype NexusのTerraform Providerです。 Nexus Provider リポジトリーの定義な…

Logback(+Logstash Logback Encoder)でログ内の文字列を置換する

これは、なにをしたくて書いたもの? Logbackを使ってログ出力をする時に、ログメッセージを置換する方法はないかな?ということで調べてみました。 以下の方法がありそうです。 replace変換指定子を使う 自分でConverterを作成する MaskingJsonGeneratorDec…

Amazon SQSのデッドレターキューをElasticMQで試す

これは、なにをしたくて書いたもの? 前に、ElasticMQを使ってAmazon SQSの可視性タイムアウトを試してみました。 Amazon SQSの可視性タイムアウトをElasticMQで確認する - CLOVER 今度は、デッドレターキューを試してみたいと思います。 Amazon SQSデッドレ…

MySQL Connector/JのrewriteBatchedStatementsプロパティとPreparedStatementの関係を確認する

これは、なにをしたくて書いたもの? HikariCPのMySQL Connector/J(MySQLのJDBCドライバー)に関するWikiを見ていて、ふと疑問に思ったことがありまして。 MySQL Configuration · brettwooldridge/HikariCP Wiki · GitHub それは、rewriteBatchedStatements…

MySQL Connector/Jで設定した方が良さそうなプロパティについて

MySQLのJDBCドライバーであるConnector/Jですが、どのようなプロパティを設定した方がいいのかよく忘れるので。 いい情報はないかな?と思ったら、HikariCPのWikiによくまとまっていました。 MySQL Configuration · brettwooldridge/HikariCP Wiki · GitHub …

Database RiderをSpring Framework(Spring Boot)と合わせて使う時に、Rider JUnit 5とRider Springのどちらを使うか?

これは、なにをしたくて書いたもの? 以前、こんなエントリーを書きました。 Database RiderをSpring Framework(Spring Boot)と合わせて使う - CLOVER Spring Framework 5以降であれば、rider-junit5を使うのがよいのだろうと思ったのですが、ちょっと気に…

AWS SDK for Java 2.xでAPI呼び出しの結果がエラーの場合、例外がスローされるのか?(SdkHttpResponseのisSuccessfulは?)

これは、なにをしたくて書いたもの? AWS SDK for Java 2.xを使うと、APIの各種レスポンスからSdkHttpResponseというインターフェースのインスタンスを取得することが できます。 こちらですね。 SdkHttpResponse (AWS SDK for Java - 2.20.17) このクラスに…

Java 15で導入されたJEP 378 Text Blocksを試す

これは、なにをしたくて書いたもの? Java 15で、JEP 378 Text Blocksが導入されました。 JEP 378: Text Blocks すでに時々使っているのですが、改行や空白の扱いなどを雰囲気で使っているので、1度ちゃんと見ておこうかなと思いまして。 JEP 378: Text Bloc…

DateTimeFormatterでパースとフォーマット時の桁数や空白について調べる

これは、なにをしたくて書いたもの? DateTimeFormatterで文字列として表現された日時をパースする時に桁数や空白の扱いについてあまり意識していなかったので、 ちょっと見てみることにしました。 DateTimeFormatter (Java SE 17 & JDK 17) 環境 今回の環境…

Jacksonで、オブジェクトをシリアライズする際にnullのプロパティを出力しないようにする

これは、なにをしたくて書いたもの? Jacksonを使ってオブジェクトをJSONにシリアライズする際に、nullのプロパティの出力は抑制したくなることがあります。 JSONにした時に、以下のような状態を { "property1": "value1", "property2": null } こうする、と…

IntelliJ IDEAを使ってコマンドラインでファイルをフォーマットする

こちらのエントリーを書いていて、IntelliJ IDEAを使ってコマンドラインでファイルをフォーマットできることがわかったので、 軽くメモしておきます。 Formatter Maven Pluginで、ソースコードのフォーマットを行う - CLOVER ドキュメントはこちら。 Format …

Formatter Maven Pluginで、ソースコードのフォーマットを行う

これは、なにをしたくて書いたもの? Javaでプログラムを書いていて、ソースコードを一括でフォーマットしたり、フォーマットするのを忘れないようにしたいとかいう 話があると思います。 こういうのを調べてみると、たいていEclipseのフォーマッターをCLIで…