Posted at

TomcatとGlassFishって結局どっちを使うのがいーの?


はじめに

はじめまして。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月時点のものとなります。