Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

Java EEからJakarta EEへ

Eclipseファウンデーションへ移管されたJava EEの新名称が決まりました。

And the Name Is… | Life at Eclipse

"Jakarta EE"です。

"Jakarta EE" or "Enterprise Profile"の決選投票が2/23までありました。7000弱の投票のうち65%が"Jakarta EE"へ票を入れています(私もです)。

なぜJava EEから変えるの?Java EEのままでいいんじゃない?

むしろJava EEのままにできないから変えるというのが正しいです。こちらの記事に詳しいです。翻訳者は私です。

www.infoq.com

"Java EE"に含まれるJavaという単語はオラクルの登録商標です。そのため、Eclipseファウンデーションへの移管が決定したタイミングで、オラクルから"Java EE"および"javax.x"パッケージを今後使用しないようにしたいという発表がありました。

オラクルからの最初の返答では [中略] "Java EE"という名前とjavax.*というパッケージ名はトレードマークとしてのJavaを利用し、“これらの技術のソースがオラクルとオラクルが管理するコミュニティプロセスであることを意味してしまう”としている。 https://www.infoq.com/jp/news/2018/01/no-jcp-for-javaee

なお、既存の"javax.*"パッケージはそのままです。あくまで今後作成するクラスです。

現段階では、Java EEにある既存のjavax.*パッケージはJavaコミュニティで引き続き使用でき、所有権はEclipseファウンデーションへ移管されるが、今後のパッケージはorg.eclipse.xxxとなるだろう。

そもそもEclipseファウンデーションへの移管って何?

こちらの記事にあります(この投稿でこちらのみ私の翻訳ではありません)。

www.infoq.com

Java EEそのものと、参照実装であるGlassFishやTCKなどあらゆるものがEclipseファウンデーションへ移管されました。Eclipseとありますが、これはIDEのEclipseそのものを指すのではなく、IDEのEclipseやその他さまざまなソフトウェアを管理しているEclipseファウンデーションという団体です。

EE4Jって名前は何だったの?これからはJakarta EE?

EE4Jはそのままです。Eclipse Enterprise for Java(EE4J)はオープンソースのJava EEに対するプロジェクトであり、その名前です。一方、Jakarta EEはEE4Jが管理するプロダクト(ここでは仕様)の名前、ブランド名です。EE4Jがリリースする旧Java EE相当のプロダクトの名前がJakarta EEということです。

同様のプロダクト名の変更として、GlassfishがEclipse Glassfishとなります。GlassfishはJava EEの参照実装でした。同様にEclipse GlassfishがJakarta EEの参照実装となります。

Jakarta EEの仕様はJCPで決めるの?

いえ、JCPは使いません。今後の仕様は、EE4Jの管理の下で策定されます。今までのJCPではなく、新しい仕様策定プロセスとなりますが、このプロセス自体も策定中です。

www.infoq.com

どうしてこうなったの?

移管の直接要因は当事者でない私が答えられることではありません。しかしここで"Java EEガーディアンズ"という活動を紹介します。

www.infoq.com

こちらも私が翻訳した記事です。Java EE 7が2013年にリリースされた後、Java EEの、具体的には8の進捗や活動が止まってしまいました。Java EEガーディアンズはこのことに不満を持ち、元オラクルのJava EEエバンジェリストReza Rahman氏を中心に立ち上がりました。Java EEガーディアンズはJava EEへのコミットを求める署名活動やオラクルへの公開質問状、Javaコミュニティへの投票による調査などを実施します。こうしたコミュニティの動きも何かしら影響があったのかもしれません。

マイクロプロファイルは何?

Eclipseファウンデーションはマイクロプロファイルというものも管理しています。Java EEの移管先がEclipseファウンデーションとなったのも、このことが影響しています。

www.infoq.com

Java EEのバージョンアップが遅く、クラウドやマイクロサービスなど技術の進展に追いつけていない状況であったため、Java EEの技術を活用しつつそうした状況に対応できる仕様(のセット)を作りました。それがマイクロプロファイルです。

Red HatとIBM、Tomitribe、Payara、そしてロンドンJavaコミュニティは次のことを公表した。MicroProfileの作成だ。これはベンダ中立のマイクロサービスフレームワークを作るためにJava EE技術を試し活用する新しい提案だ。そのゴールは次のことだ。2016年の9月までに最初の公開バージョンを持つこと。それはJavaで可搬性のあるマイクロサービスを開発者が作れるようにする。

www.infoq.com

このマイクロプロファイルはその後Eclipseファウンデーションでの管理となりました。

MVCどうなったの?

Java EE 8からドロップしたMVCですが、EE4Jへ統合されることになっています(今はまだ)。Jakarta EEの一部となるか、またはマイクロプロファイルの一部となるかについては、私はまだ情報を持っていません。

www.infoq.com

紆余曲折を経て、という表現がぴったりで、MVCは一度所有権がIvar Grimstadさんに移されました。Ivarさん中心にMVC(JSR-371)は仕様策定が進み、パブリックレビュー投票をすべて賛成で通過しました。また実装もOzarkという参照実装があります。

github.com

Grimstad氏「私たちはすでにOzark、MVC 1.0の参照実装のプロジェクト提案を作りました。プロジェクト提案はこちらです。https://projects.eclipse.org/proposals/eclipse-ozark

MVC 1.0の残りの部分がEE4Jに統合されるのは、JCPからバージョン1.0がリリースされてすぐあとだと思います。今年の第2四半期のどこかでそうできるはずと計画しています。

2018年の4月〜6月のどこかで統合される予定です。

所感

歴史、時代は進み変わるもので、その今を生きている人間にはその変化が本当はよいことか悪いことかは判断できません。この変化で、私たちはよりオープンになったJava EE(仕様としても実装としても)を得ました。開発者として考えるなら、より関わりやすくなったと言えるでしょう。何かがなくなった、してもらえなくなったことを嘆くのではなく、オープンとなったことに目を向けて、自分が開発者の一員として関わり、グローバルなソフトウェアの世界で貢献と腕を磨きながらQoEL(Quality of Engineer Life)を高めていくのはいかがでしょうか。もちろん、僕もそうします。

www.infoq.com