Java
TL;DR JAVA_TOOL_OPTIONS JDK_JAVA_OPTIONS TL;DR Java のツールが自動的に読み込む環境変数に JAVA_TOOL_OPTIONS と JDK_JAVA_OPTIONS があります。 これらの主な違いは、その提供範囲で、以下のようになります。 JAVA_TOOL_OPTIONS : java, javac, jar, ja…
jbang-jash とは jbang-jash の使い方 その他の使い方 jbang-jash とは Java でOSコマンドを実行するには、ProcessBuilder を使います(旧来はRuntime)。以下のような感じですね。 ProcessBuilder builder = new ProcessBuilder("java", "-version"); Process…
Stream Gatherers Gatherers4j とは シーケンス操作 結合操作 インデックス付与 並び替え 繰り返し スロットル フィルタリング/選択 debounce 重複削除 フィルタ Grouping と Windowing 算術操作 検証 Stream Gatherers JDK 24 で追加された JEP 485: Stream…
JDK 24 の JEP 483: Ahead-of-Time Class Loading & Linking JDK 25 の Ahead-of-Time Command-Line Ergonomics blog1.mammb.com JDK 24 の JEP 483: Ahead-of-Time Class Loading & Linking JDK 24 の JEP 483: Ahead-of-Time Class Loading & Linking によ…
はじめに コンパクト・オブジェクト・ヘッダの有効化 オブジェクト・ヘッダ 従来のオブジェクト・ヘッダレイアウト コンパクト・オブジェクト・ヘッダのレイアウト blog1.mammb.com はじめに JDK 24 にて実験的機能として公開されたコンパクト・オブジェクト…
はじめに ThreadLocal の問題点 Scoped Values blog1.mammb.com はじめに java.lang.ScopedValue は、java.lang.ThreadLocal と同様に、スレッド毎のローカル変数を提供します。 java.lang.ThreadLocal と異なり、この変数はイミュータブルで限定的な生存期…
はじめに JDK 25 前のコンストラクタ Flexible Constructor Bodies blog1.mammb.com はじめに JDK 25 では、コンストラクタ本体は明示的にせよ暗黙的にせよ、super(...) または this(...) で始まらなければならない、という構文ルールが削除されます。 以前…
はじめに JEP 512: コンパクト・ソース・ファイルとインスタンス・メイン・メソッド インスタンス・メイン・メソッド コンパクトソースファイル コンソール・インタラクション blog1.mammb.com はじめに 伝統的な Hello,World プログラムは public class Hel…
はじめに モジュールインポート まとめ blog1.mammb.com はじめに JDK 25 からインポート宣言にモジュール名を指定できるようになります。 import module java.base; 例えば以下のようなストリーム処理を行う単純なコードは、 String[] fruits = new String[…
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…
はじめに 文字列テンプレート StringTemplate FMT テンプレートプロセッサ テンプレートプロセッサの自作 まとめ 本記事はプレビュー公開時のものです。正式リリース版については以下を参照してください。 blog1.mammb.com blog1.mammb.com ※JDK23 にて本JEP…
はじめに いろいろと注意点の多い BigDecimal は、使おうとすると、注意点があるということ以外忘れてる。 インスタンス生成は文字列から行うこと 比較は equals() でなく compareTo() を使うこと Java8 より前は stripTrailingZeros() のバグに注意すること…
はじめに Unnamed variables Unused patterns Unnamed pattern variables まとめ blog1.mammb.com はじめに Java21あたりで入るかもしれない Unnamed Patterns and Variables(JEP 443) の先取りです。 Unnamed Patterns and Variables では、他の言語で良く…
はじめに 動機 Sequenced の追加 SequencedCollection SequencedSet SequencedMap Collections.unmodifiableSequenced blog1.mammb.com はじめに Java21 でコレクションフレームワークに順序付き要素のシーケンスを表すインターフェースが追加されます。 JEP…
JPAstreamer とは JPAstreamer の始め方 JPA の利用準備 クエリの実行 Stream API と SQL の対応 Join 処理 CDI 統合 まとめ JPAstreamer とは Speedment 社が提供している ORM ツールキットに speedment があります。 speedment は、データベース操作を Jav…
はじめに Java Persistence API 2.2 (Jakarta Persistence 2.2) Jakarta Persistence 3.x Hibernate 6.x まとめ はじめに Hibernate 5系と6系と、JPAの名前空間の変更(javax.persistence -> jakarta.persistence)対応がややこしいので、と言うか経緯知らない…
はじめに QRコードの生成 エンコードヒントの指定 QRコードのバージョンと誤り訂正レベル バージョン1(21x21) バージョン2(25x25) バージョン3(29x29) バージョン4(33x33) バージョン5(37x37) バージョン6(41x41) はじめに Java で手っ取り早くQRコードを生…
はじめに Unified Platform(統一されたプラットフォーム) What? Why? コメント Add New Specifications(新しい仕様の導入) What? Why? コメント Leverage Latest Java(最新のJavaを活用) What? Why? コメント Enable Community Innovation(コミュニティ・イ…
はじめに プロジェクトの作成 アノテーションプロセッサの設定 アノテーションの作成 プロセッサの作成 要素からアクセサーを取得する アクセサーのtoString()を行うコードを生成 クラス生成 テストの実行 まとめ はじめに 以下では、Java アノテーションプ…
はじめに Pluggable Annotation Processing アノテーションプロセッサ アノテーションプロセッサの実行 ProcessingEnvironment と RoundEnvironment Element と TypeMirror Element TypeMirror AnnotationMirror Elements と Types Filer まとめ はじめに Ja…
はじめに Platform Logging API System.Logger System.LoggerFinder SLF4JSystemLoggerFinder Log4jSystemLoggerFinder まとめ はじめに Java9 の JPMS(Java Platform Module System) に合わせて導入された、JEP 264: Platform Logging API and Service です…
はじめに コマンドライン実行 HelloServlet.java build.gradle.kts 実行 MicroPiranhaBuilder からの実行 はじめに 前回は、Piranha Embedded を使った Hello World であった。 blog1.mammb.com 今回は、Piranha micro を使った Hello World。 Piranha micro…
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 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 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…
はじめに アノテーションによるリソース定義 CDI ビーンのメソッド非同期実行 並列ストリーム操作 Trigger によるスケジュール実行の強化 その他の変更 blog1.mammb.com はじめに Jakarta EE 10 で Jakarta Concurrency は 2.0 から 3.0 へバージョンアップ…
はじめに Web アプリケーションで WebSocketエンドポイントにプログラムコードでリクエストをディスパッチ可能となった Websocketクライアントのクライアント証明の設定が可能となった JPMS モジュールディスクリプタの追加 その他の変更点 blog1.mammb.com …
はじめに リクエスト/接続の一意な識別子が取得可能となった セッションクッキーへの汎用的な属性サポート追加 HttpServlet.doHead() のデフォルト実装のレスポンス変更 その他の変更内容 blog1.mammb.com はじめに Jakarta EE 10 で Jakarta Servlet は 5.0…
はじめに Java SE 環境における JAX-RS アプリケーションブートストラップ マルチパート・フォーム用APIの標準化 ContextResolver その他の変更点 module-info.java blog1.mammb.com はじめに Jakarta EE 10 で Jakarta RESTful Web Services は 3.0 から 3.…