はじめに
はじめまして。ykusaです。
今日はTomcatとGlassFishの使い分けについて説明します。
JavaでWebアプリの開発をしたことがある方ならTomcatは使ったことがあるかと思います。一方で、美味しそうなお魚マークのGlassFishは使ったことがありますか?
どちらもWebアプリを運用できるという点では同じことができますが、それぞれに向き不向きがあります。
機能の○×を付けるだけであれば、その辺に落ちている表を見ればいいのですが、運用やサポートも含めた比較内容はなかなかまとまっていません。
実際にどちらを使うの?となった際に、機能の実現性の有無だけでなく、運用やサポート、それに加えて将来的な展望なども知っておくと、選定の際に役立ちます。
どっちを使うのがいい?となった際に、説明できるとかっこいいですよ!
基本情報
まずは、Tomcat、GlassFishについて、基本情報を簡単に整理します。
Tomcatとは
JSPやSevletを実行するWebコンテナ(Webアプリを動かす環境のこと)です。Apacheのコミュニティ内で開発がされています。
最新版はTomcat9.0.19で開発が継続されています。(2019年4月13日時点)
GlassFishとは
JavaEEの参照実装です。JavaEEの詳細については、他のサイトを見てほしいのですが、簡単にいうとJavaフレームワークの集合体でJavaEEの一部にJSP、Servletが含まれます。そのため、Tomcat同様のWebコンテナとしての機能も持っています。
紆余曲折あったのですが、今はEclipse Foundation内のコミュニティで開発がされており、最新版はEclipse GlassFish 5.1になります。(2019年1月末時点)
TomcatとGlassFishの違い
機能面
機能 | Tomcat | GlassFish |
---|---|---|
Webコンテナ(JSP、Servlet) | ○ | ○ |
EJBコンテナ | × | ○ |
フレームワーク(JSF、JPA、CDIなど) | × | ○ |
アプリケーションの管理 | × | ○ |
リソースの管理 | × | ○ |
基本的に、TomcatはWebコンテナを動作させるための必要最低限の機能になります。一方でGlassFishは大規模な商用システムの運用も考慮し、アプリやリソースの管理機能もついています。 |
サポート面
ここでいうサポートは、電話やメールでの対応などではなく、開発が継続している(新機能の追加、セキュリティパッチの提供、障害修正の公開などが行われる)ことを指します。
サポート中であれば、障害を見つけた際にコミュニティに連絡をすれば、修正してもらえる可能性があります。
Tomcat、GlassFishで以下のような特長があります。
Tomcat
以下のような特長があります。
- 1バージョン当たりのサポート期間が長い(一例として、Tomcat7系は2011年に安定板がリリースされた後、2019年4月時点でもサポート継続中)
- 数多くのITベンダーが、QAサービスを提供(「Tomcat 電話 サポート」で検索すると結構出てきます)
GlassFish
以下のような特長があります。
- コミュニティのスポンサーにIBM、Oracleなどが名を連ねており、安心感がある
- GlassFishをベースにした商用製品があり、それを使うとベンダーからサポートを受けられる
まとめ
個人的には、GlassFishの方が上述したように機能が充実しているのでおススメです。
そうはいっても、Tomcatで事足りていると、なかなか移行する決断は難しいとも思います。
私の周りでTomcatからGlassFishへの移行を決断する際には、以下の様な点が契機になることが多いですので、ご参考まで。
- 画面系のフレームワークに何を使おうか(Spring等)と悩んでいる
(GlassFishのJSFを利用する) - O/Rマッピングのライブラリを持ってきて使おうとしている
(GlassFishのJPAを利用する) - 運用管理のGUI画面を使いたい
最終的には、全体のコストも考えて、ご自身で選択ください。
間違っているところ、指摘などはコメントいただけると嬉しいです。なお、記事情報は2019年4月時点のものとなります。