Java

Jakarta EE Platform 11 変更点まとめ(2023年11月現在)

Jakarta EE 11 における変更の概要 Jakarta Annotations 2.1 -> 3.0 Jakarta Authentication 3.0 -> 3.1 Jakarta Authorization 2.1 -> 3.0 Jakarta Concurrency 3.0 -> 3.1 Jakarta Contexts and Dependency Injection 4.0 -> 4.1 Jakarta Config 1.0 Jakar…

Java新機能の文字列補間 - JEP 430 String Templates(Preview)

はじめに 文字列テンプレート StringTemplate FMT テンプレートプロセッサ テンプレートプロセッサの自作 まとめ 本記事はプレビュー公開時のものです。正式リリース版については以下を参照してください。 blog1.mammb.com blog1.mammb.com はじめに JEP 430…

Java BigDecimal チートシート

はじめに いろいろと注意点の多い BigDecimal は、使おうとすると、注意点があるということ以外忘れてる。 インスタンス生成は文字列から行うこと 比較は equals() でなく compareTo() を使うこと Java8 より前は stripTrailingZeros() のバグに注意すること…

Java21で追加される無名パターン(JEP 443 Unnamed Patterns and Variables)

はじめに Unnamed variables Unused patterns Unnamed pattern variables まとめ blog1.mammb.com はじめに Java21あたりで入るかもしれない Unnamed Patterns and Variables(JEP 443) の先取りです。 Unnamed Patterns and Variables では、他の言語で良く…

【Modern Java】Java21で [ようやく|今更] 追加される Sequenced Collections (JEP 431)

はじめに 動機 Sequenced の追加 SequencedCollection SequencedSet SequencedMap Collections.unmodifiableSequenced blog1.mammb.com はじめに Java21 でコレクションフレームワークに順序付き要素のシーケンスを表すインターフェースが追加されます。 JEP…

Java Stream API で JPA - JPAstreamer の使い方

JPAstreamer とは JPAstreamer の始め方 JPA の利用準備 クエリの実行 Stream API と SQL の対応 Join 処理 CDI 統合 まとめ JPAstreamer とは Speedment 社が提供している ORM ツールキットに speedment があります。 speedment は、データベース操作を Jav…

Jakarta Persistence と Hibernate のややこしい依存関係

はじめに Java Persistence API 2.2 (Jakarta Persistence 2.2) Jakarta Persistence 3.x Hibernate 6.x まとめ はじめに Hibernate 5系と6系と、JPAの名前空間の変更(javax.persistence -> jakarta.persistence)対応がややこしいので、と言うか経緯知らない…

【クイックガイド】JavaによるQRコード生成

はじめに QRコードの生成 エンコードヒントの指定 QRコードのバージョンと誤り訂正レベル バージョン1(21x21) バージョン2(25x25) バージョン3(29x29) バージョン4(33x33) バージョン5(37x37) バージョン6(41x41) はじめに Java で手っ取り早くQRコードを生…

2022年10月における次期メジャーリリース Jakarta EE 11 の方向性

はじめに Unified Platform(統一されたプラットフォーム) What? Why? コメント Add New Specifications(新しい仕様の導入) What? Why? コメント Leverage Latest Java(最新のJavaを活用) What? Why? コメント Enable Community Innovation(コミュニティ・イ…

Java アノテーションプロセッサの使い方(実践編)

はじめに プロジェクトの作成 アノテーションプロセッサの設定 アノテーションの作成 プロセッサの作成 要素からアクセサーを取得する アクセサーのtoString()を行うコードを生成 クラス生成 テストの実行 まとめ はじめに 以下では、Java アノテーションプ…

Java アノテーションプロセッサの使い方(基礎編)

はじめに Pluggable Annotation Processing アノテーションプロセッサ アノテーションプロセッサの実行 ProcessingEnvironment と RoundEnvironment Element と TypeMirror Element TypeMirror AnnotationMirror Elements と Types Filer まとめ はじめに Ja…

これからのロガー JEP 264: Platform Logging API and Service

はじめに Platform Logging API System.Logger System.LoggerFinder SLF4JSystemLoggerFinder Log4jSystemLoggerFinder まとめ はじめに Java9 の JPMS(Java Platform Module System) に合わせて導入された、JEP 264: Platform Logging API and Service です…

Piranha micro で Hello World

はじめに コマンドライン実行 HelloServlet.java build.gradle.kts 実行 MicroPiranhaBuilder からの実行 はじめに 前回は、Piranha Embedded を使った Hello World であった。 blog1.mammb.com 今回は、Piranha micro を使った Hello World。 Piranha micro…

Piranha Embedded で Hello World

build.gradle.kts HelloWorldServlet.java App.java 実行 AppTest.java build.gradle.kts piranha-embedded は組み込み用のランタイム。 piranha-embedded はHTTPサーバを含まないため、piranha-http-impl でサーバ実装 DefaultHttpServer を使う。 plugins …

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

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…

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 blog1.mammb.com Jakarta Securi…

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

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

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

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

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

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

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

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

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

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

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

はじめに タグライブラリ URI を URN への変更 JPMS 用のモジュールインフォクラスの追加 その他の変更 blog1.mammb.com はじめに 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の変更 タグとタグ属性の変更 廃止された仕様 blog1.mammb.com 拡張子なしの…

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 アノテーション適用範囲の拡大 その他の変更の無いアノテーション blog1.mammb.com はじめに 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 認証テーブルの作成 まとめ blog1.mammb.com はじめに Java EE 8 で導入された Security API(JSR-375…