Eclipse Transformerのご紹介と、javaxパッケージ名前空間からjakartaパッケージ名前空間への変換例(Part 1)
富士通技術者ブログ~Javaミドルウェア~
2023年2月10日 初版
岡田 崚佑
2022年9月末に Jakarta EE 10がリリースされました。Jakarta EE 10は、Java EEがOracleからEclipseに移管されてから初の本格的なメジャーアップデートとなります。
Jakarta EE 8以前から Jakarta EE 10へ移行する際に注意すべき重要な点の一つとして、名前空間の変更があります。
Jakarta EE 8以前では、javaxで始まる名前空間がパッケージ名やスキーマ名に使われていましたが Jakarta EE 9以降では名前空間がjavaxからjakartaに変更されました。
そのため、Jakarta EE 8以前のアプリケーションをJakarta EE 10で使用するには、アプリケーション内で参照しているすべてのJakarta EE APIをjakartaパッケージ名前空間にもれなく変更しなければなりません。
この変更は膨大な作業となりますが、作業支援ツールがいくつか用意されており、これらのツールを使うことで作業負荷の軽減が可能となります。
本投稿では、ツールの一つとしてJakarta EEと同じくEclipse Foundation内で開発されている、Eclipse Transformerを紹介します。
- Eclipse Transformer (https://projects.eclipse.org/projects/technology.transformer)(Eclipse Foundationのページへ)
なお、本記事の内容は、FUJITSU Software Enterprise Application Platform に適用することができます。
Eclipse Transformerとは
Eclipse Transformerは、Java関連ファイルに含まれる各種リソース名を変換するツールです。ツールは任意のリソース名を変換することが可能ですが、本稿では、javaxからjakartaへの変換にフォーカスして、紹介します。
対象となるJava関連ファイルは、以下になります。
- Javaクラスファイル
- OSGIマニフェストファイル
- プロパティファイル
- サービスローダー設定ファイル
- Javaソース、XML、TLD、HTML、JSP
また、以下に含まれるJava関連ファイルをまとめて変換対象にすることができます。
- ディレクトリ
- Javaアーカイブ(JAR、WAR、RAR、EAR)
- ZIPアーカイブ
Eclipse Tranformerの詳細については、以下を参照ください。
- https://github.com/eclipse/transformer(GitHubのページへ)
- https://projects.eclipse.org/projects/technology.transformer(Eclipse Foundationのページへ)
Eclipse Transformerの入手と準備
Eclipse Transformerは、以下より入手してください。
注:本稿では、執筆時点での最新版である、バージョン0.5.0を使用します。
その他のバージョンについては、以下からダウンロード可能です。
ダウンロードしたorg.eclipse.transformer.cli-0.5.0-distribution.jarを任意のディレクトリにコピーし、jarコマンドで展開します。
本稿では、「trans」というディレクトリに展開する例を示します。
$ mkdir trans
$ cd trans
$ jar xf ../org.eclipse.transformer.cli-0.5.0-distribution.jar
$ cd ..
- その他にもいくつかのバージョンがありますが、現時点で最新版の0.5.0を使用することをお勧めします。
Eclipse Transformerの使用方法
Eclipse Transformerの起動は、以下のように行います。
java -jar org.eclipse.transformer.cli-0.5.0.jar {入力ファイル} [出力ファイル]
{入力ファイル}には、変換対象となるファイル、すなわち、javaxの名前を含むファイル、ディレクトリ、jarアーカイブなどを指定します。
[出力ファイル] を指定しなかった場合は、デフォルトで、output_{入力ファイル名}となります。
次に、Eclipse Transfomerが、具体的にどのように変換するのか、以下に二つの例を紹介します。
例1: javaソースファイルの変換
変換前
package com.example;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("/api")
public class SampleApplication extends Application {
}
変更後
package com.example;
import jakarta.ws.rs.ApplicationPath;
import jakarta.ws.rs.core.Application;
@ApplicationPath("/api")
public class SampleApplication extends Application {
}
この例では、import文に、javax.ws.rsパッケージ名のクラスを指定していますが、Eclipse Transformerにより、jakarta.ws.rsパッケージ名に変換されていることが分かります。
例2:XMLファイルの変換
変換前
<?xml version='1.0' encoding='UTF-8'?>
<web-app version="3.1"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
</web-app>
変換後
<?xml version='1.0' encoding='UTF-8'?>
<web-app version="5.0"
xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd">
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>jakarta.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
</web-app>
この例では、スキーマ定義、サーブレットクラスに、それぞれJava EEの定義、クラス名が指定されていますが、Eclipse Transformerにより、Jakarta EEのスキーマ定義、クラス名に変換されています。
最後に
本投稿では、Jakarta EE 8以前で使用されていたjavaxパッケージ名前空間を、Jakarta EE 10以降で使用されるjakartaパッケージ名前空間に変換する、Eclipse Transformerについて、 その使い方を説明しました。
Eclipse Transformerプロジェクトには、富士通のエンジニアもコミッターとして参加しており、品質向上に努めています。既存のアプリケーションをjakartaパッケージ名前空間に移行する際には、ぜひお試しください。
本コンテンツに関するお問い合わせ
お電話でのお問い合わせ

Webでのお問い合わせ

当社はセキュリティ保護の観点からSSL技術を使用しております。