ぐろーでぃあのTechブログ

ゆるりとTechブログをPostしていきますよと。。

可能な限り、JakartaEEについてできれば理解を深めたいという格好です。

Jakarta EE とは何か。

Java に触れていた10数年前の当時、よくわからないが何やらよく耳にするキーワードランキング第2位に君臨していた Jakarta EE。

(なお1位は Java Beans。不動)

Jakarta EE とは何か

Jakarta EE - Wikipedia

Jakarta EEは、Javaで実装されたアプリケーションサーバの標準規格及びそのAPIを定めたもの。Java Platform, Standard Edition (Java SE) の拡張機能の形で提供される。

Java SE を機能拡張したものであるということで、エンタープライズ Java 開発において利用されるキーワードであると理解しました。

つまり、J2EE

主に小規模?大規模サーバーシステムの標準仕様として、動的HTTPサーバ機能、自動トランザクション管理機能、データベース接続機能、メッセージング機能、各種通信プロトコル機能がAPIとして定められている。

Java にてWebアプリケーションを開発/実装する際に必要となるであろう機能一式が提供されている、それが Jakarta EE。

DB接続機能なんて特にそういうことですよね。

Java EEの権利はサン・マイクロシステムズを買収したオラクル)が保有してきたが、同社は2017年にJava EEEclipse Foundationに寄贈してオープンソース化をすることを発表。Java EEの商標については引き続きオラクルが保有するため、Java EE 9以後はJakarta EEの名で開発が進められる事が発表された。

なるほど、もとは J2EE だがオープンソース化に伴い Eclipse コミュニティに移管したということで。

Jakarta EEの機能を用いたアプリケーションを動作させるには、Jakarta EEの仕様を実装した実行環境やライブラリが必要である。Jakarta EE SDKには、Jakarta EEに準拠したオープンソースアプリケーションサーバであるGlassFish Open Source Editionが同梱されている。

Jakarta EE 準拠のエンタープライズアプリケーションを動作させるには、その仕様に応じたアプリケーションサーバ上で動作させる必要がある。

Javaアプリケーションサーバといえば当方 Apache Tomcat なイメージでしたが、たしかに GlassFish というキーワードも当時よく耳にしました。GlassFishJavaアプリケーションサーバだったんですね。しかも Jakarta EE の標準であると。

インフラエンジニアとして良い感じに稼働していた時代がありましたが、その時は Java アプリケーションサーバといえば Tomcat 一択ではあったんですよね。。

となると、TomcatGlassFish との違いはどんなだ? という疑問。

Tomcat では Jakarta EE 準拠のアプリケーションは動作するのか? とかとか。

さらに言うと、Java におけるエンタープライズアプリケーションの環境は、漏れなく Jakarta EE が標準なんだろうか。

オープンソース化されているのであれば、エンタープライズJavaにおいて、アプリケーションサーバ環境にてその他のディストリビューションというかフォークがあるような気がしてならない。

TomcatJakarta EE(J2EE)

Apache Tomcat - Wikipedia

Apache Tomcat(アパッチ トムキャット)は、Java ServletJavaServer Pages (JSP) を実行するためのWebコンテナサーブレットコンテナ、サーブレットエンジン)である。

という文脈。

TomcatServletJSP を動かすためのソフトウェアであると。そもそもが J2EE 準拠で開発・誕生しているということですね。機能の差異はあれど、言い換えれば GlassFish で動くエンタープライズJavaアプリケーションを、Tomcat へ移植することは比較的容易と言えるかもしれません。

Webコンテナ(サーブレットコンテナ、サーブレットエンジン)という人

コンテナといえば Docker という具合です。現状。

たしかに Java のWebアプリ開発においてコンテナというキーワードは良く聞いてた気がします。コンテナというとすごく抽象的な表現な気がしてならないですね。Jakarta EE におけるWebコンテナの実態はどういったものか。理解しよう。(以前に業務で Tomcat の構築を行ったことがあり、その時の記憶も頼りに考察含む)

  • Java の文脈ではサーブレットコンテナとも。
  • サーブレットコンテナ、イコール Tomcat などとも。
    • その同列に、GlassFish, JBoss 等?
    • IBM 社の WAS もここに入るのかなど
  • Javaアプリケーションサーバ、イコール、サーブレットコンテナとも。
  • サーブレットコンテナ(ニアリーイコール Tomcat と仮定して)は、リクエストに対しセッション管理や、プロセス(Java なのでスレッド単位であるとも)のライフサイクル管理、MVC モデルで言うところの Controller(== Java Servlet) からのレスポンスをリクエスト元にレスポンスする、などの役割を担う人
    • 広義のWebサービスへのアクセスは、ブラウザというか UserAgent からのリクエストは tcp/443 がスタンダードでありますから、前段の Web Server(Apache httpd 等) から発行される Servlet へのリクエスト、と一旦理解
    • なのでサーブレットコンテナがリクエストを返却する相手方は、大概 Web Server の人
  • Servlet へのリクエストをロギングしたりもするのでは、と考察
  • J2EE アプリケーションへの、ヒープメモリの確保やハードウェアリソースのチューニングも行えたりすると考察

つまりですが、J2EE アプリケーションにおける便利ツールなのではサーブレットコンテナの御方は、と一旦理解しました。なんか少しスッキリしました。

となると、TomcatGlassFish を代表するサーブレットコンテナは各所存在していて、それらがどうなのかとかどう差別化が成されているのかとか、疑問になります。ソフトウェア製品として有償であるとか無償であるとか。オープンソースなのかそうでないのか、とかの差異は想像がつきます。

Jakarta EE 準拠で動作するサーブレットコンテナは TomcatGlassFish 以外に他に何がある

パッと思いつくのは WAS, JBossOracle の Web Logic もサーブレットコンテナだったのですね。

その他国産メーカーからも有償製品として J2EE 準拠のサーブレットコンテナがリリースされている。

終わりに

Jakarta EE とは、で始まった本タイトルですが、おおよその理解は出来た気がします。

次回は Java アプリケーション開発における IDE について掘り下げ理解いきます。

以上。