javax-to-jakarta-migration について
Javaプロジェクトで対象となる`javax.*`パッケージを`jakarta.*`へ移行するスキルです。基準ビルドの確認、依存関係とソースの更新、ビルド検証を段階的に進め、変更不要なJDKパッケージも区別します。
主な機能
- 01変更前のビルド基準を確認
- 02移行対象パッケージの特定
- 03対象ランタイムに合わせた依存更新
- 04ソースと設定内の参照を変更
- 05移行後のビルドとテスト
活用シーン
- 01プロジェクトをTomcat 10または11へ移行
- 02別スキルから委任されたJakarta名前空間移行
- 03Java依存関係とインポートの更新
- 04コンパイルとテストによる移行検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ github/ awesome-copilot --skill javax-to-jakarta-migrationインストール後、Claude Code で/javax-to-jakarta-migrationを入力して読み込まれたか確認します。
詳細
javax → jakarta 移行スキル
使用するタイミング
- ユーザーから jakarta 名前空間、Tomcat 10+/11、または Jakarta EE への移行を明示的に依頼された場合
java-upgradeまたはspring-boot-4-migrationが名前空間の移行を委任した場合
javax.* のインポートを検出しただけでは、この移行を実施する許可にはなりません。検出結果として報告してください。
Spring Boot プロジェクトでは、Boot BOM が Jakarta のバージョンを管理します。以下のバージョンを固定せず、Jakarta EE のレベルは Boot のバージョンに従わせてください(Boot 4 = Jakarta EE 11、Servlet 6.1)。以下の例は、Spring Boot を使用しないプロジェクトでの Jakarta EE 10(Servlet 6.0、Tomcat 10.1+)を対象としています。
手順
ステップ 0 — ベースライン
最初に ./mvnw verify または ./gradlew build を実行して結果を記録してください。ベースラインが失敗している状態では移行しないでください。変更は専用のコミットまたはステップで行ってください。
ステップ 1 — javax の使用箇所を検索
コードベース全体で、移行が必要な javax.* のインポートを検索してください。
javax.servlet.* → jakarta.servlet.*
javax.persistence.* → jakarta.persistence.*
javax.validation.* → jakarta.validation.*
javax.annotation.* → jakarta.annotation.*
javax.inject.* → jakarta.inject.*
javax.enterprise.* → jakarta.enterprise.*
javax.faces.* → jakarta.faces.*
javax.ws.rs.* → jakarta.ws.rs.*
javax.el.* → jakarta.el.*
javax.json.* → jakarta.json.*
javax.mail.* → jakarta.mail.*
javax.websocket.* → jakarta.websocket.*
移行しないでください(引き続き javax.* のままです):
javax.sql.*— JDK の一部ですjavax.naming.*— JDK(JNDI)の一部ですjavax.crypto.*— JDK の一部ですjavax.net.*— JDK の一部ですjavax.security.auth.*— JDK の一部ですjavax.swing.*、javax.xml.parsers.*— JDK パッケージです
ステップ 2 — pom.xml を更新
依存関係の座標を置き換えてください。対象ランタイムに合った API バージョンを選択してください。以下の表は Jakarta EE 10(Tomcat 10.1+、Servlet 6.0)向けです。
| 対象ランタイム | Jakarta EE | Servlet | Persistence | Validation | Annotations |
|---|---|---|---|---|---|
| Tomcat 10.0 | 9 | 5.0 | 3.0 | 3.0 | 2.0 |
| Tomcat 10.1 | 10 | 6.0 | 3.1 | 3.0 | 2.1 |
| Tomcat 11 | 11 | 6.1 | 3.2 | 3.1 | 3.0 |
| 旧 | 新 |
|---|---|
javax.servlet:javax.servlet-api | jakarta.servlet:jakarta.servlet-api:6.0.0 |
javax.persistence:javax.persistence-api | jakarta.persistence:jakarta.persistence-api:3.1.0 |
javax.validation:validation-api | jakarta.validation:jakarta.validation-api:3.0.2 |
javax.annotation:javax.annotation-api | jakarta.annotation:jakarta.annotation-api:2.1.1 |
ステップ 3 — web.xml を更新(存在する場合)
version は対象の Servlet レベルと一致させてください(Tomcat 10.0 では 5.0、Tomcat 10.1 では 6.0、Tomcat 11 では 6.1)。以下の例は Servlet 6.0 向けです。
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="4.0">
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" version="6.0">
ステップ 4 — Java ソースファイルを更新
ステップ 1 で特定した Jakarta EE の javax. インポートのみを、.java ファイル内で対応する jakarta. のインポートに置き換えてください。JDK パッケージ(例:javax.sql、javax.crypto)は変更しないでください。また、Java 以外の参照も確認してください。対象には persistence.xml(javax.persistence.* のプロパティ)、META-INF/services、beans.xml、properties/YAML、文字列でのクラス名、リフレクションが含まれます。
ステップ 5 — 検証
mvn clean compileまたはgradlew buildを実行し、コンパイルエラーを修正してくださいmvn testまたはgradlew testを実行し、すべてのテストが成功することを確認してください- JDK パッケージを除き、残っている
javax.*のインポートを検索してください
上流の情報源(移行前に確認)
対象バージョンのページを取得してください。内容がこのスキルと異なる場合は、上流の情報源を優先してください。
- Jakarta EE 仕様:https://jakarta.ee/specifications/
- Eclipse Transformer(バイナリ/バイトコード変換):https://github.com/eclipse-transformer/transformer
- OpenRewrite
org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta:https://docs.openrewrite.org/recipes/java/migrate/jakarta/javaxmigrationtojakarta - Tomcat 9 から 10 への移行:https://tomcat.apache.org/migration-10.html
- Hibernate 移行ガイド:https://hibernate.org/orm/documentation/migrate/
- Spring Boot 3 のアップグレード(Jakarta EE 9+ がベースライン):https://docs.spring.io/spring-boot/upgrading.html
出力
変更したすべてのファイル、置き換えたインポート、必要な手動作業を記載した移行概要を提示してください。