2026-01-01から1年間の記事一覧

Kotlin Toolchain (a.k.a. Amper) の依存定義

blog1.mammb.com Maven リポジトリ Maven リポジトリで公開されているライブラリへの依存は以下のように定義します。 dependencies: - org.apache.commons:commons-lang3:3.20.0 - org.apache.commons:commons-collections4:4.5.0 BOMの場合は以下のように定…

JetBrains 製 JVM ビルドツール Kotlin Toolchain (a.k.a. Amper)

はじめに JetBrains 製のJVM向けビルドツール Amper が Kotlin Toolchain としてリブランディングされました。 Amper については以下で簡単に紹介しましたが、あらためて Kotlin Toolchain として使い方を見ていきましょう。 blog1.mammb.com Kotlin Toolcha…

【JavaFX】TabPane に新規タブ追加ボタンを設置する

Chrome のタブにある「+」のような新規タブ追加ボタンは、JavaFX の TabPane ではサポートされていません。 TabPane のヘッダー部分に無理やりボタンを追加することもできますが、タブの最後尾に透明なダミータブを追加するアプローチが簡単です。 追加ボタ…

Jakarta Faces 5.0 (Jakarta EE 12) - 全ての on* イベント属性が利用可能となった -

Enhance UIInput events with HTML5 like oninput Automatically pass through all on* event attributes 従来はコンポーネント毎に利用可能な on* イベントが既定されていたが、HTML仕様の追加に追従できていなかった。 Jakarta Faces 5.0 (Jakarta EE 12) …

ディレクトリ配下のRustプロジェクトを再帰的に clean する

find . -type f -name "Cargo.toml" -execdir cargo clean \;

Gradle プロジェクトを再帰的に clean する

blog1.mammb.com Gradle プロジェクトは ./gradlew clean でクリーンできるが、依存の解決が必要であったり、java のバージョン違いでエラーになったり、build.gradle.kts のエラーで実行できなかったりする。 ディスク容量削減のために clean したいだけな…

Intellj IDEA で native2ascii

デフォルトでは native2ascii の自動変換は無効化されている Unicode エスケープ文字が Upper Case されて、他の IDE と混在すると git diff で差分が酷いことになるので、以下で Lower Case の設定する。 <IntelliJ IDEA HOME>\bin\idea.properties idea.native2ascii.lowercase</intellij>…

org.joda.time.Months.monthsBetween() は ChronoUnit.MONTHS.between() に置き換えられない

Months.monthsBetween() ChronoUnit.MONTHS.between() Joda-Time 互換の between Months.monthsBetween() Joda-Time では、結果が終了日を超えるまで開始日に月を足していくことで計算を行う。 そのため、「長い」月の終わりから「短い」月の終わりまでの期…

Gradle コンベンションプラグイン(Convention Plugin) でバージョンカタログを利用する

blog1.mammb.com はじめに Gradle のバージョンカタログでは、ライブラリのバージョンなどが一元管理できるが、コンベンションプラグイン(Convention Plugin) 側では、定義したカタログが利用できない。 以下のバージョンカタログ定義を行っても [versions] …

2Dグラフィックスレンダリングエンジン Vello CPU

Vello CPU とは Vello CPU の使い方 簡単なサンプル Vello CPU とは Vello CPU は、GPU を利用しない2Dグラフィックスレンダリングエンジン。 sparse strips という、ベクトルパスを細く局所的な矩形セグメントに分割するアルゴリズムによる効率的なレンダリ…

JDK27 JFR の機密情報マスキング - JEP 536: JFR In-Process Data Redaction

JFR の機密情報漏洩リスク JFR In-Process Data Redaction フィルタリストのカスタム指定 機密情報削除の確認 フィルタ指定 複数コマンドライン引数 外部ファイルによるフィルタリスト指定 デフォルトフィルタへの追加 無効化 blog1.mammb.com JFR の機密情…

payara-embedded-all が Address already in use: bind で複数起動できない場合の対処方

JMS ポートがバッティングして起動できない payara-embedded-all に含まれる domain.xml を書き換える JMS ポートがバッティングして起動できない payara-embedded-allで以下のようにアプリケーションサーバを起動できる。 final var gf = GlassFishRuntime …

logback のコンソール色付け出力

conversion words で %cyan(...) のように指定すると、括弧内のサブパターンに色付けすることができる。 色付けの変換ワードは以下が指定可能。 conversion words 説明 %highlight ERRORレベルのイベントではサブパターンを太字の赤色で、WARNレベルでは赤色…

JDK27 - JEP 523: Make G1 the Default Garbage Collector in All Environments

Summary Goals Non-Goals Motivation Description Testing Risks and Assumptions blog1.mammb.com Summary ガベージファースト(G1)ガベージコレクタを、サーバー環境だけでなく、すべての環境でデフォルトのコレクターにする。 Goals コマンドラインでガベ…

payara-embedded-all で IllegalStateException Could not find backup for factory エラー

Could not find backup for factory jakarta.faces.context.FacesContextFactory 発生 Gradle Convention Plugins 側(java-conventions.gradle.kts)で slf4j-api を implementation で定義して、各モジュールで Convention Plugins を各マルチモジュールで利…

Gradle で実行時に指定したシステムプロパティをアプリケーションに引き渡す

blog1.mammb.com 以下のように指定したシステムプロパティは、Java アプリケーション側で受け取ることができない。 ./gradlew run -Dapp.env=xxx -Dapp.prop=yyy 以下のように明示的に設定する必要がある。 アプリケーションプラグインの場合 plugins { appl…

WatchService でサブディレクトリを再帰的に監視する

WatchService では、指定ディレクトリの監視が可能 サブディレクトリを含めて監視するには、再帰的に監視ディレクトリを WatchService に登録する必要がある Windows では、WatchService に登録したディレクトリはロックされ、ディレクトリ名のリネームなど…

Gradle で archives configuration の非推奨化に対処する

blog1.mammb.com The archives configuration has been deprecated for consumption モジュール artifact の指定 The archives configuration has been deprecated for consumption ear プラグインなどで、別モジュールの war を参照する際は、以下のように …

Gradle の バージョンカタログで classifier を指定する

blog1.mammb.com libs.versions.toml では classifier を指定することはできない。 例えば primefaces は、JavaEE ネームスペースと、JakartaEE ネームスペースのモジュールを classifier 別で提供しているが、以下のような指定はできない。 [libraries] pri…

Rust でクリエイティブ・コーディング - Nannou -

Nannou とは Nannou は Rust のクリエイティブ・コーディング用ツールキット クリエイティブ・コーディングとは、プログラミングによりビジュアルアートやアニメーションなどのインタラクティブ創作を行う活動 名前は Aphex Twin のオルゴールをサンプリング…

Windows のバッチファイルから PowerShell コード実行

Windows のバッチファイル内に PowerShell コードを埋め込み Windows のバッチファイル内の PowerShell コードの結果をバッチ側で処理する Windows のバッチファイル内に PowerShell コードを埋め込み foo.cmd として保存し、バッチファイルから PowerShell …

Gradle の EAR プラグイン で EJB JAR を扱う

blog1.mammb.com EJB JAR の扱い build.gradle.kts 設定 ejb war ear ear.ear EJB JAR の扱い Gradle の EAR プラグインでは、以下のコンフィグレーションが追加される。 deploy : EAR ルート直下に配置される(非推移的) earlib : ライブラリディレクトリ(li…

XDocReport のモジュール依存グラフ

OpenOffice odt MS Word docx

Mockito 4 → 5 での可変長引数マッチの変更

Mockito 5 における可変長引数マッチ Mockito 4 の場合 Mockito 4 → 5 へのマイグレーション Mockito 5 における可変長引数マッチ 可変長引数を受け取る count() メソッドがあった場合、 public class Foo { public int count(String... arguments) { return…

JDK の公開が毎度遅い Eclipse Temurin JDK

Eclipse Temurin JDK は OpenJDK の GA(一般利用可能) となってもなかなか公開されず、概ね2~3週間後の公開となる。 進捗は、https://github.com/adoptium/temurin/issues で Issue として起票されるので、そこで確認できる。 例えば JDK26 の進捗は March …

Jakarta Faces 5.0 - 全ての on イベント属性が利用可能となった -

Issue Enhance UIInput events with HTML5 like oninput PR Automatically pass through all on* event attributes 従来はコンポーネント毎に利用可能な on* イベントが既定されていたが、HTML仕様の追加に追従できていなかった。 Jakarta Faces 5.0 (Jakart…

JDK 26 JEP 以外の変更点ピックアップ

Unicode 17.0のサポート JavaDoc にダークモード追加 Comparator.min/max の追加 java.lang.Process が AutoCloseable を実装した java.nio.ByteOrder の enum 化 HttpClient の GET リクエストで Content-Length ヘッダ送信の変更 BodyPublishers.ofFileCha…

Jakarta JSON Binding 3.1

java.util.UUID のマッピング追加 Java Record のサポート追加 Jakarta EE 12 では Jakarta JSON Binding 3.0 → 3.1 のマイナーバージョンアップが予定されている。 2026年03月時点では大きな変更は無く、java.util.UUID と Java Record サポートの追加程度…

Gradle のコンソール出力文字化け対策

blog1.mammb.com Java 18 からJEP 400: UTF-8 by Defaultにより、デフォルトのエンコーディングが UTF-8 に統一されたため、Windows 環境での文字化けが頻出する。 以下のような gradlew.ps1 を用意して、UTF-8 に統一しておくと良い。 $ENV:JAVA_TOOL_OPTIO…

Jakarta Persistence 4.0 - ステートレス・エンティティ・マネージャー -

ステートレス・エンティティ・マネージャー EntityAgent EntityAgent の利用 ステートレス・エンティティ・マネージャー Jakarta Persistence 4.0 では、いわゆる StatelessSession を提供する API が追加された。 StatelessSession は、永続コンテキストを…