CLOVER🍀

That was when it all began.

Java

JUnit 5のExtension Modelを試す

これは、なにをしたくて書いたもの? ちょっとJUnit 5の拡張(Extension Model)について知っておきたいなと思いまして。 JUnit 5のExtension Model JUnit 5を拡張する機能がExtension Modelです。 JUnit 5 User Guide / Extension Model 参考) JUnit 5の拡…

Apache Mavenをdaemonとして実行する、Maven Daemon(mvnd)を試す

これは、なにをしたくて書いたもの? Apache Mavenをdaemonとして実行できるというMaven Daemonを試してみようかなということで。 Maven Daemon(mvnd) Maven DaemonのGitHubリポジトリーはこちら。 GitHub - apache/maven-mvnd: Apache Maven Daemon Gradl…

H2 Database(インメモリー)へいろいろな形態で接続する

これは、なにをしたくて書いたもの? 組み込み、インメモリーなデータベースとしてテストなどでよく使われるH2 Databaseですが、どういう利用形態があるかちゃんと見てきて いなかったので、少し見ておきたいなということで。 自分はインメモリーで使うこと…

Jakarta EE PlatformおよびProfileとMicroProfileのJARとBOMについて

これは、なにをしたくて書いたもの? Jakarta EE PlatformおよびProfileおよびMicroProfileで使うAPIのJARやBOMについて、少しまとめておきたいと思いまして。 ここでは、Jakarta Servletといった個々の仕様の話よりも、Web Profileといったある程度の仕様を…

HTTPリクエスト/レスポンスをログ出力するLogbookをSpring Boot 3で試す

これは、なにをしたくて書いたもの? HTTPリクエスト/レスポンス(クライアント、サーバー)のログ出力をしてくれる、Logbookというライブラリーがあります。 1度試しておきたかったので、今回はSpring Bootで試してみることにしました。 Logbook Logbookの…

JSSEでサポートしているSSL/TLSプロトコル、SSLSocketFactoryでサポートしている暗号スイートを確認する

これは、なにをしたくて書いたもの? 使用しているJava環境でサポートしているSSL/TLSプロトコルや、暗号スイートを確認したいなと思いまして。 特にこれを書こうと思ったきっかけはSSLSocketFactory#getSupportedCipherSuitesとSSLSocketFactory#getDefaul…

OpenAIのJavaライブラリーからOpenAI API互換のサーバーへアクセスしてみる

これは、なにをしたくて書いたもの? これまでよくOpenAI API互換のサーバーにOpenAI Python APIライブラリーからアクセスして試していたのですが、1度Javaからも アクセスしてみようかなと思いまして。 アクセス先としては、llama-cpp-pythonを使うことにし…

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のヒープサイズを指定するオプションといえば、-Xms(下限値)と-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 …