JDK26 JEP 500: finalを「本当にfinal」にするための準備

はじめに 500:Prepare to Make Final Mean Final クラスパス上のすべてのコードに許可 特定のモジュールに許可 動作モードの指定 はじめに 従来のJavaプラットフォームでは、java.lang.reflect.Field クラスの setAccessible(true)と set(...) メソッドによ…

Podman 4.x から 5.x へのアップグレード(Windows)

はじめに winget でアップグレードしたら podman machine start 以下のようなエラーとなった。 Error: unable to load machine config file: "json: cannot unmarshal string into Go struct field MachineConfig.ImagePath of type define.VMFile" Podman 5…

PowerShell コンソールで操作ログを記録する

操作ログの記録開始 操作ログの記録終了 Start-Transcript 操作ログの記録開始 Start-Transcript -Path "c:\logs\transcript_$(Get-Date -Format "yyyyMMdd-HHmmss").log" -Append 操作ログの記録終了 Stop-Transcript Start-Transcript Start-Transcript は…

Rust の GUI ライブラリ Xilem

Xilem 何? Rust で書かれた実験的なマルチプラットフォーム GUI ライブラリ Druid の後継と位置づけられ、Druid が直面したいくつかの課題を克服することを目標 wgpuベースの描画処理 React や SwiftUI などから影響を受けたリアクティブなアプローチ 現時…

JavaFX 25 で追加された HeaderBar (プレビュー)

はじめに 最近のディスクトップアプリケーションは、ウインドウのタイトルバーにコントロールを配置するものが増えてきました。Electron 系だと一般的ですね。 例えば VS Code のタイトルバーは以下のようになっています。 JavaFX でこのようなタイトルバー…

Gradle 9.1 で気になった新機能2つ

タスク間依存関係のグラフィカル表示 コンソール表示オプション値 colored の追加 タスク間依存関係のグラフィカル表示 Gradleでは、タスクの実行順序を決定するために有向非巡回グラフ(DAG)が利用されます。 Gradle 9.1 で追加された --task-graph オプショ…

GitHub Actions の Intel mac サポートの終焉

はじめに 移行パス はじめに Apple による x86_64(Intel) アーキテクチャのサポート終了に伴い、Github Action の以下のランナーイメージは 2025/12/04 までに廃止されます。 macos-13 macos-13-large macos-13-xlarge 今後の廃止に向けた周知のため、macOS …

Java におけるインスタンス生成パターンについて

コンストラクタの課題 Telescoping Constructor Static Factory Method Builder Wither JEP 468: Derived Record Creation (Preview) 名前付き引数 コンストラクタの課題 多数のフィールドを持つクラスを考えます。 例えば以下のような Circle クラスを考え…

JDK 25 JEP 以外の変更点まとめ

主な新機能 java.io.Reader から残りの文字をすべて読み取るサポート(JDK-8354724) 標準システムプロパティ stdin.encoding の追加(JDK-8350703) CharSequence と CharBuffer の新しい getChars(int, int, char[], int) メソッド(JDK-8343110) 接続を識別す…

Gradle で Maven Central Portal へのライブラリ公開(OSSRH Sunset を超えて)

はじめに Central Portal へのログイン ネームスペースの登録 鍵生成と公開鍵の登録 トークン作成 プラグインの設定 公開 はじめに OSSRH(Sonatype OpenSourceSoftware Repository Hosting)は2025年6月30日でサービス終了となり、Central Publisher Portal …

JEP 517 : HTTP/3 for the HTTP Client API

HTTP Client API HTTP/3 サポート blog1.mammb.com HTTP Client API JDK 11 で導入された HTTP クライアント API(JEP 321: HTTP Client API) は HTTP/1.1 と HTTP/2 をサポートしています(デフォルトでは HTTP/2 を優先し、対象サーバーが HTTP/2 をサポート…

Java 標準API でパスワードベースの暗号化・複合化

はじめに 秘密鍵の生成 暗号化 複合化 まとめ はじめに パスワードで暗号化/複合化のサンプルをメモ。 package org.example; import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.IvParameterSpec; import javax.c…

【PostgreSQL】外部キー参照しているレコードを芋づる式に削除する

PostgreSQL の外部キー制約には ON DELETE CASCADE を指定することができる。 ... FOREIGN KEY (parent_id) REFERENCES parent_table (parent_id) ON DELETE CASCADE これにより、親テーブルのレコードが削除されたときに、その親レコードを参照する子テーブ…

Rust 製の静的サイトジェネレータ Zola のはじめかた

Zola なに? インストール プロジェクト生成 基本的な構成 テンプレート テーマ Zola 利用の流れ Shortcodes 補足 Zola なに? Rust 製の静的サイトジェネレータ テンプレートエンジンには、こちらも Rust 製の Tera を使用(Jinja2 とだいたい同じ文法) シン…

【続】JVM 終了時の ShutdownHook が動きません

はじめに MCVE MCVE jpackage こいつか、犯人は はじめに jdk-21.0.2+13 で行われた変更により、シャットダウン・フックが動かなくなった原因の継続調査。 以下の続きになります。 blog1.mammb.com MCVE MCVE にして調査を進めよう。 App.java public class …

JVM 終了時の ShutdownHook が動きません

tl;dr ことの経緯 そもそも シャットダウン・フック 何? tl;dr Windows 環境で Java のシャットダウン・フックが動作しない事象があったのでその経緯をログとして残します。 結論としては jdk-21.0.2 前後でシャットダウン・フックの挙動が異なるようだ。 J…

Java Flight Recorder (JFR) のはじめかた

JFR とは JFR と JMC(JDK Mission Control) JFR の有効化 JFR のオプション指定 StartFlightRecording オプション設定一覧 FlightRecorderOptions オプション設定一覧 jcmd からの操作 JFR とは Java Flight Recorder(JFR)とは、実行中のJavaアプリケーシ…

PowerShell で Windows Defender 除外設定

除外パス(フォルダ/ファイル)の一覧 除外パス(フォルダ/ファイル)の追加 除外パス(フォルダ/ファイル)の削除 除外パス(フォルダ/ファイル)の一覧 (Get-MpPreference).ExclusionPath プロセスの場合は ExclusionProcess、拡張子の場合は ExclusionExtension …

WinSW チートシート

WinSW とは ダウンロード 使い方 設定ファイル 基本設定 実行ファイル サービス設定 ログ・障害復旧 その他 WinSW とは 任意のプロセスを Windows サービスとして管理するための実行バイナリ。 Jenkins を Windows サービスから管理するために使われている。…

Rust のテンプレートエンジン Tera - テンプレート構文チートシート

Tera とは デリミタ リテラル 変数 演算 四則演算 比較演算 論理演算 文字列連結 in checking フィルタ if for include macro extends row ブロック ビルトイン関数 Tera とは Tera は、Rust のテンプレートエンジン。 Rust 製の Static Site Generator であ…

Github の Markdown アラート記法を再現する CSS

GitHub の Markdown 拡張 - Alerts GitHub のアラートは、ブロッククォート構文に基づいた Markdown 拡張で、以下のように書くことができる。 > [!NOTE] > Highlights information that users should take into account, even when skimming. > [!TIP] > Opt…

【Rust】Into トレイト

blog1.mammb.com Into トレイト std::convert::Intoトレイトはある型の値を消費して別の型を返す変換を表す。 以下の定義となっている。 pub trait Into<T>: Sized { fn into(self) -> T; } std::convert::Intoトレイトは、std::convert::Fromトレイトと対を成</t>…

【Rust】 From トレイト

blog1.mammb.com From トレイト std::convert::Fromトレイトは、ある型から別の型のインスタンスを生成するための汎用のコンストラクタとして機能する。 pub trait From<T>: Sized { fn from(value: T) -> Self; } 引数の所有権を受け取り、自身の型に変換を行</t>…

JDK の統合ログフレームワークによるGCログのオプション指定

はじめに Unified JVM Logging 旧来オプションとの相対 Xlog ヘルプ全文 はじめに 今更な話ですが、JDK 9 JEP 158: Unified JVM Logging にて Java の内部のロギングの仕組みが統一され、統合ログフレームワークが導入されました。 GC ログについても JEP 27…

Java で高速LLM推論 Jlima の始め方

はじめに プロジェクトの作成 Jlama の利用 LangChain4j インテグレーション はじめに Jlama は、Java で LLM を実行するためのライブラリです。 Jlama は JDK の Vector API により SIMD命令を使うことで高速な推論が可能となっています(Vector API はJDK25…

Java におけるエンコーディング関連システムプロパティの最近の変遷について

はじめに JDK16におけるエンコーディング関連システムプロパティ JDK17におけるエンコーディング関連システムプロパティ JDK18 UTF-8 by Default JDK19 におけるコンソールI/Oの文字コード まとめ はじめに JDK 18 の、JEP 400: UTF-8 by Default 前後で、エ…

Java の環境変数 JAVA_TOOL_OPTIONS と JDK_JAVA_OPTIONS について

TL;DR JAVA_TOOL_OPTIONS JDK_JAVA_OPTIONS TL;DR Java のツールが自動的に読み込む環境変数に JAVA_TOOL_OPTIONS と JDK_JAVA_OPTIONS があります。 これらの主な違いは、その提供範囲で、以下のようになります。 JAVA_TOOL_OPTIONS : java, javac, jar, ja…

Windows の Podman で Dev Container 上の Swift で Hello world

Podman はインストール済みで起動している前提。 VS Code のインストール winget install -e --id Microsoft.VisualStudioCode 作業フォルダ作成して Dockerfile 作成して VS Code 起動(PowerShellターミナル上) mkdir swift cd swift echo "FROM swift:late…

Git コミット・メッセージの規約 Conventional Commits チートシート

git

Conventional Commits とは 追加の type Semantic Versioning との対応 Conventional Commits とは Conventional Commits は、コミットメッセージのための軽量の規約です。 規約に従うことで、各種ツールによる自動処理が可能になります(例えば JReleaser が…

Rust の GUI フレームワーク Makepad

Makepad とは サンプルの実行 簡単なアプリケーションの作成 イベント処理 まとめ Makepad とは Makepad は、Rust で書かれたクロスプラットフォーム(ネイティブおよびWeb)な UIフレームワークです。 2019年から開発が始まり、2025年5月15日に 1.0.0 版がリ…