Eclipse Tomcat Pluginの役割
Eclipseを使ってJavaのWebアプリケーションを作成する場合、プラグインを利用する必要があります。そのようなプラグインとして、本連載では、前回、Eclipseマーケットプレースを利用してインストールしたEclipse Tomcat Pluginと、Pleiades All in Oneにもともと含まれているWTPを使ったWebアプリケーションの作成方法を紹介します。そのうち、今回はEclipse Tomcat Pluginを紹介します。
この2個のプラグインは、それぞれ得意とするWebアプリケーションが違います。どう違うかを理解するためには、JavaのWebアプリケーションの仕様についての理解が不可欠です。まずは、そこから話を始めていきましょう。
Java Standard Edition
Javaの言語仕様には、いくつかエディションがあり、その中心となるのが、Standard Editionです。このエディションは、通常、Java SEとよばれます。Java SEは、StringやSystem、MapやArrayListなど、基本となるクラス群が定義された仕様そのものです。これらの仕様は、Oracle管理下のJCP(Java Community Process)という団体で策定され、原稿執筆時点での最新バージョンは16です。
この策定されたJava SEの仕様をもとに、実際に動作するものとして実装されたのが、JDK(Java Development Kit)です。JDKで有名なのは、本家のOracleが提供しているOracle JDKですが、こちらを商用利用するためにはライセンス料が必要です。
他にも、IBM SDKやAmazon Corretto、AdoptOpenJDKなど、有償無償を含めて様々な企業、団体がJDKをリリースしており、ダウンロードできるようになっています。
Enterprise Edition
このJava SEを中心に、さらに、大規模Webアプリケーション開発に必要な仕様を付け加えたエディションが、Enterprise Edition、略してEEです。EEも、バージョン8までは、Java EEという名称でしたが、現在は、Jakarta EEという名称になっています。
Java EE 8がリリースされたのち、2018年にOracleがこのEEの策定団体をEclipse財団に移管しました。Javaという名称はOracleが商標として持っているので、Eclipse財団はこの名称が使えず、代わりに、Jakartaという名称に変更しています。その、Jakarta EEは、2019年9月にJava EE 8と完全互換のJakarta EE 8のリリースを経て、現在、2020年12月にリリースした9が最新バージョンです。
そのEEの中心となるのが、サーブレットです。つまり、JavaのWebアプリケーションを作成しようとすると、SEだけ、すなわち、JDKだけでは無理であり、EEを実装したものが必要となります。
そのEEを実装したものが、アプリケーションサーバです。つまり、JavaのWebアプリケーションを実行するためのサーバソフトウェアが、そのままEE実装になります。アプリケーションサーバとして有名なものには、有償のOracleのWebLogic ServerやIBMのWebSphereがあります。オープンソースとしては、RedHatがリリースしているJBossとそのJBossのコミュニティー版であるWildFly、EclipseのGlassFishがあります。
そして、これらアプリケーションサーバで動作するWebアプリケーションを作成するのに最適なEclipseプラグインが次回に紹介するWTPです。
Tomcatの位置付け
JavaのWebアプリケーションの実行基盤として非常によく使われているのが、オープンソースのApache Tomcatであり、Pleiades All in Oneに同梱されています。このTomcatは、厳密には、アプリケーションサーバではなく、Webコンテナといわれます。どういうことでしょうか。
アプリケーションサーバを名乗る限りは、原則的にEEの仕様全てを満たしている必要があります。一方、EEはその名称通り、大規模Webアプリケーション向けの仕様なので、小規模〜中規模程度のWebアプリケーションには重厚長大すぎて、無駄なところが多々あります。先述の通り、JavaのWebアプリケーションの中心はサーブレットなので、このサーブレットを中心に、いくつかの便利な仕様のみを満たした軽量な実行基盤があれば、充分というプロジェクトも多々あります。Tomcatはそのようなプロジェクトに最適な実行基盤です。
そして、そのTomcatで動作するWebアプリケーションの作成に最適化されたプラグインが、これから紹介するEclipse Tomcat Pluginです。
もちろん、WTPでTomcat向けのWebアプリケーションも作れますが、元々が重厚長大なアプリケーションサーバ向けのプラグインなだけに、扱いにくいところもあります。実行基盤をTomcatと限定するならば、Eclipse Tomcat Pluginの方がはるかに効率よくアプリケーション作成が行えます。どのように効率がいいのかについては、後述します。
WARファイル構成とデプロイ
概説はここまでにして、実際に手を動かして、プロジェクトを作成したいところですが、もう1点プロジェクト作成の前に理解しておいた方がよい内容があります。それは、JavaのWebアプリケーションのファイル構成です。
JavaのWebアプリケーションのファイル構成
JavaのWebアプリケーションは、そのファイル構成が決められており、図1のようになっています。
![図1: JavaのWebアプリケーションのファイル構成](http://cz-cdn.shoeisha.jp/static/images/article/14076/14076_001.png)
最初のフォルダがアプリケーションのルートフォルダであり、その直下にWEB-INFフォルダを配置します。このWEB-INF以外のフォルダやファイルはその階層のままWebに公開されます。したがって、htmlファイルやcssファイル、jsファイルや画像ファイルなどは、ルートフォルダ直下に適切なサブフォルダを作成して、その中に格納します。
一方、WEB-INFフォルダ内はWebには公開されないので、アプリケーションの動作に必要だがWebに公開したくないファイル類はこのフォルダ内に配置します。
そのWEB-INF内には少なくともclassesフォルダを配置し、その中に.javaファイルをコンパイルした.classファイルを配置しておく必要があります。もし、その他のライブラリ類が必要ならば、libフォルダ内に配置します。さらに、アプリケーションの設定ファイルであるweb.xmlファイルを配置する場合も、このWEB-INFフォルダ直下に配置します。
warファイルとデプロイ
このファイル構成は、Tomcatに限らず、アプリケーションサーバ、つまりは、EEの共通仕様となっています。そして、このアプリケーションのルートフォルダごとアーカイブファイルとし、拡張子を.warとしたものを、warファイルといいます。そのため、この構成を、WARファイル構成ともいいます。
また、アプリケーションサーバでJavaのWebアプリケーションを稼働させることを、デプロイといいます。そして、通常、デプロイは、このwarファイルをアプリケーションサーバの適切なフォルダに配置する処理となります。