概要

Javaに軽量な標準JSON処理機能を追加する提案「JEP 540: Simple JSON API」が、JDK 28への「ターゲット候補(Proposed to Target)」に進んだ。設定ファイルの読み込みやREST APIレスポンスの確認、小規模なJSONペイロードの生成といった日常的な用途を想定し、JacksonやGsonのような包括的なライブラリを導入するほどではない場面での利用を狙っている。まずはjdk.incubator.jsonモジュールとしてインキュベータ提供され、開発者からのフィードバックを踏まえて仕様を調整したのち正式化される見込みだ。

技術的な詳細

APIの中核となるのはJsonクラスと、シールドインターフェースのJsonValueである。JsonValueにはJSONオブジェクト・配列・文字列・数値・真偽値・nullに対応する6つのサブタイプが用意され、すべてのインスタンスはイミュータブルかつスレッドセーフに設計されている。パース処理はシンプルなインメモリ方式で、Json.parse(body).get("properties").get("periods").get(0)のようにメソッドチェーンで値を辿ってアクセスする形になる。

一方でオブジェクトの構築にはJsonObject.of(Map.of("service", JsonString.of("web_server")))のような明示的なファクトリメソッドの呼び出しが必要で、多少の記述量は増えるものの、生成過程が明確になるという設計判断がなされている。また、パーサーはRFC 8259に厳密準拠しており、コメントや末尾カンマ、オブジェクト内の重複キーを許容しない。これにより相互運用性のリスクを抑える狙いがある。

既存ライブラリとの違いと今後

このAPIはデータバインディングやストリーミング処理、寛容なパースモードといった機能を意図的に除外しており、JacksonやGsonが提供する高機能さとは一線を画す「シンプルさ」に軸足を置いている。あくまで標準ライブラリの範囲で完結する基本的なJSON操作をカバーすることが目的だ。インキュベータモジュールとしての提供により、正式なAPIとして固定される前に非互換な変更を加える余地が残されており、コミュニティからのフィードバックを反映しながら仕様が練られていく見通しである。