文字列分割における空項目の扱いまとめ

StringTokenizer String.split() org.apache.commons.lang3.StringUtils.split() org.apache.commons.lang3.StringUtils.splitPreserveAllTokens() com.google.common.base.Splitter org.apache.commons.text.StringTokenizer まとめ StringTokenizer String…

Jakarta EE 10 変更内容総まとめ

はじめに Jakarta Contexts and Dependency Injection 3.0 -> 4.0 Jakarta Persistence 3.0 -> 3.1 Jakarta Annotations 2.0 -> 2.1 Jakarta Expression Language 4.0 -> 5.0 Jakarta Faces 3.0 -> 4.0 Jakarta JSON Binding 2.0 -> 3.0 Jakarta JSON Proces…

Gradle で Asciidoc 変換して Github Action で Github Pages で公開する

build.gradle.kts index.adoc Github Action Github Pages build.gradle.kts org.asciidoctor.jvm.convert プラグインを導入して設定する。 plugins { id("org.asciidoctor.jvm.convert") version "3.3.2" } // asciidoctor config val asciidoctorExtension…

Jakarta EE 10 - Jakarta Security 3.0 およびその他変更内容まとめ

Jakarta Security 3.0 Jakarta Authentication 3.0 Jakarta Server Pages 3.1 Jakarta Activation 2.1 Jakarta Authorization 2.1 Jakarta Connectors 2.1 Jakarta Interceptors 2.1 Jakarta Mail 2.1 Jakarta Messaging 3.1 Jakarta Security 3.0 2.0 から …

Jakarta EE 10 - Jakarta Concurrency 3.0 変更内容まとめ

はじめに アノテーションによるリソース定義 CDI ビーンのメソッド非同期実行 並列ストリーム操作 Trigger によるスケジュール実行の強化 その他の変更 はじめに Jakarta EE 10 で Jakarta Concurrency は 2.0 から 3.0 へバージョンアップします。 アノテー…

Jakarta EE 10 - Jakarta WebSocket 2.1 変更内容まとめ

はじめに Web アプリケーションで WebSocketエンドポイントにプログラムコードでリクエストをディスパッチ可能となった Websocketクライアントのクライアント証明の設定が可能となった JPMS モジュールディスクリプタの追加 その他の変更点 はじめに Jakarta…

Jakarta EE 10 - Jakarta Servlet 6.0 変更内容まとめ

はじめに リクエスト/接続の一意な識別子が取得可能となった セッションクッキーへの汎用的な属性サポート追加 HttpServlet.doHead() のデフォルト実装のレスポンス変更 その他の変更内容 はじめに Jakarta EE 10 で Jakarta Servlet は 5.0 から 6.0 へバー…

Jakarta EE 10 - Jakarta RESTful Web Services 3.1 変更内容まとめ

はじめに Java SE 環境における JAX-RS アプリケーションブートストラップ マルチパート・フォーム用APIの標準化 ContextResolver その他の変更点 module-info.java はじめに Jakarta EE 10 で Jakarta RESTful Web Services は 3.0 から 3.1 へバージョンア…

Java 19でようやくプレビュー版公開された JEP 425 Virtual Threads の要約

はじめに 概要 目標 非目標 動機 1リクエスト-1スレッド方式 非同期方式 仮想スレッドによる1リクエスト-1スレッド方式 説明 仮想スレッドとプラットフォームスレッドの使い分け 仮想スレッドの有効化 仮想スレッドにスレッドプールは不要 仮想スレッドの監…

Jakarta EE 10 - Jakarta Batch 2.1 変更内容まとめ

はじめに JobOperator の CDI インジェクションサポート @BatchProperty のメソッドインジェクションサポート @BatchProperty の プリミティブ・ラッパー型への自動変換 job listeners 要素のプロパティ定義がドキュメント化された JPMS 用 module-info.java…

「CSS設計における、すべてがコンポーネントであるという誤謬」がオブジェクト指向設計に読み替えてもわかりみしかない

コンポーネント・ファーストとオブジェクト指向 元ネタはこちらのブログ コンポーネント・ファーストのCSS設計には痛みが伴う というもの。 yuheiy.com 「デザイン」を「業務」、「コンポーネント」を「オブジェクト」に置き換えると、そのままオブジェクト…

Jakarta EE 10 - Jakarta Standard Tag Library 3.0 変更内容まとめ

はじめに タグライブラリ URI を URN への変更 JPMS 用のモジュールインフォクラスの追加 その他の変更 はじめに Jakarta EE 10 で 2.0 から 3.0 へバージョンアップする Jakarta Standard Tag Library の変更点のまとめです。 1 記事にする程の変更点でも無…

Jakarta EE 10 - Jakarta JSON Processing 2.1 変更内容まとめ

はじめに APIとAPI実装でプロジェクトが分離された java.lang.Number から JsonValue を取得するAPI追加 JsonParser から最後のイベントを取得可能となった キー重複時の処理を設定可能となった JsonObjectBuilder メソッドの型境界の訂正 仕様の明確化 Json…

Jakarta EE 10 - Jakarta JSON Binding 3.0 変更内容まとめ

はじめに polymorphic types サポートの追加 @JsonbCreator パラメータのオプショナル化 @JsonbTypeDeserializer, @JsonbTypeAdapter をパラメータに付与可能となった null 値の JsonValue.NULL_VALUE へのデシリアライズ @JsonbProperty.nillable() の非推…

Jakarta EE 10 - Jakarta Faces 4.0 変更内容まとめ

拡張子なしの自動マッピング @ClientWindowScoped アノテーションの追加 JSF から Faces への変更 XML ネームスペースの変更 Java で Facelet を作成するためのAPI追加 その他のAPIの変更 タグとタグ属性の変更 廃止された仕様 拡張子なしの自動マッピング …

Jakarta EE 10 - Jakarta Expression Language 5.0 変更内容まとめ

はじめに 関数インターフェースを受け取るメソッドの呼び出しが可能となった インターフェースのデフォルトメソッドにプロパティアクセス可能となった jakarta.el.MethodExpression から MethodReference を取得可能となった Java モジュールシステムのため…

Jakarta EE 10 - Jakarta Annotations 2.1 変更内容まとめ

はじめに jakarta.annotation.Nonnull / Nullable の追加 jakarta.annotation.Priority アノテーション適用範囲の拡大 その他の変更の無いアノテーション はじめに Jakarta Annotations (旧 Common Annotations) は、他の仕様で使用可能な共通のアノテーショ…

Jakarta EE 10 - Jakarta Contexts and Dependency Injection 4.0 変更内容まとめ

はじめに CDI Lite と CDI Full の仕様分割 Build Compatible Extensions bean-discovery-mode 属性のデフォルトが annotated となった Startup イベントと Shutdown イベント Handle からBeanのメタデータを簡単に参照できるようになった ステレオタイプに …

Jakarta EE Security API の始め方

はじめに Security API とは AuthenticationMechanism CustomFormAuthenticationMechanismDefinition IdentityStore API DatabaseIdentityStoreDefinition 認証テーブルの作成 まとめ はじめに Java EE 8 で導入された Security API(JSR-375) ですが、取りま…

需要はほぼ無い EntityGraph からの Subgraph 取得

はじめに EntityGraph からの Subgraph 取得 はじめに JPA の EntityGraph を使うことで、クエリーで取得する対象をカスタマイズすることができます。 同じ Entity から様々なデータの見せ方が必要で、パフォーマンスの為に最小限のデータセットのみを取得し…

java.nio.file.Path の分かりにくいメソッドについて

はじめに startsWith() と endsWith() normalize() resolve() relativize() Zip ファイルシステムプロバイダ はじめに ずいぶん昔、Java 1.7 で java.nio.file.Path が導入されました。 Path はファイルやディレクトリを表現するのではなく、あくまでもファ…

MicroProfile Fault Tolerance 4.0 まとめ

はじめに @Asynchronous @Timeout @Retry @Fallback @CircuitBreaker @Bulkhead はじめに MicroProfile 5.0 に含まれる MicroProfile Fault Tolerance 4.0 仕様のまとめです。 マイクロサービスの構築では、ある処理の実行可否やタイミングを制御したり、正…

【Modern Java】Java18で追加された Code Snippets in Java API Documentation (JEP 413)

JEP 413: Code Snippets in Java API Documentation インラインスニペット ハイライト リンク テキストの置き換え 外部スニペット(External snippets) source-path オプションの設定 外部スニペットのスニペットパス指定 ハイブリッドスニペット snippet タ…

軽量なVMマネージャ Multipass の使い方(Dockerを添えて)

Multipass とは macOS でのインストール Windows でのインストール VM起動から終了まで 利用可能なOSイメージの一覧 VMのスペックを指定 ホストディレクトリをマウントする VMの情報を確認する Docker で Nginx を起動する cloud-init でVMを初期設定する Mu…

【Modern Java】Java18で追加された Simple Web Server (JEP 408)

JEP 408:Simple Web Server jwebserver API からのサーバ起動 まとめ blog1.mammb.com JEP 408:Simple Web Server すぐに使用できる静的ファイルのみを提供する最小限のWebサーバーが追加されました。 Webサーバーは、コマンドラインツールから起動できる…

Java Bean マッパーのコードジェネレータ MapStruct の基本

MapStruct とは MapStruct の導入 MapStruct の簡単な使い方 @Mapping でプロパティをマップする 様々な @Mapping 定義 @MappingTarget でオブジェクトを更新する @Mapper インスタンスの取得 まとめ MapStruct とは Java Bean 間のプロパティのコピーを簡素…

Rust のフロントエンドフレームワーク Yew の始め方

Yew とは Yew の始め方 Hello World Yew アプリケーション まとめ Yew とは Rust のフロントエンドフレームワークです。 React のような感じで、フロントエンドアプリケーション全体を、Rust コードからコンパイルした WebAssembly で構築することができます…

Jakarta EE 10 - Jakarta Persistence 3.1 変更内容まとめ

はじめに datetime function の追加 java.util.UUID データタイプのネイティブサポート追加 GenerationType.UUID の追加 EntityManager(Factory) の AutoCloseable 実装 いくつかの数値関数の追加 local date/time 用の関数の追加 PersistenceException 系で…

Java のオブジェクトグラフストレージエンジン MicroStream の使い方

はじめに MicroStream とは Hello World 設定 オブジェクトの操作 データのロード クエリ ObjectCopier バックエンドにデータベースを使う まとめ はじめに MicroStream 5.0 からOSS化された、オブジェクトグラフストレージエンジンの使い方の紹介です。 Mic…

Python の Webアプリフレームワーク Django の始め方 -その2-

はじめに モデルビューテンプレート テンプレートの配備場所 ベーステンプレート 静的ファイルの取り扱い index ページのテンプレート index ビューの作成 ブックリストページの作成 ブックリストページへの遷移 ブック詳細ページの作成 ブック詳細ページへ…