Tomcat、Jboss、GlassFish、Jetty、およびLiberty Profileを使用した優れたJavaアプリケーションサーバーについての議論。 パート2

すべての人に良い一日を! 約束どおり、 Java EE記事の翻訳の第2部。 最初の部分はここで見ることができます



カバー操作中



予算が0であることを理解しただけでなく、一般的にWebLogicがあなたを征服したことを願っています;)これまで、アプリケーションサーバーを研究する初期段階で重要なトピックを検討してきました。 次に、各サーバーをもう少し詳しく見て、開発者の実際のタスクを満たしているかどうかを確認します。





読んで、すぐにどのアプリケーションサーバーが最高の最高かを判断します!



実際のパフォーマンス指標



2011年のLamborghini Gallardo LP570-4 Superleggraはわずか2.8秒で0から60 km / hに加速し、Dodge Viper Hennessey Venom GTは2.9秒で加速することをご存知ですか? Viperのドライバーは車が60に加速するまで待つのが退屈だと思います!







障害を見つけないでください。0.1秒は世界を変えず、平均的なドライバーは違いに気付かないでしょう。 それらのすべてについて、彼らはばかげた超高速を加速します。



同様に、開発者は、起動時間が0.2秒、または0.5秒であっても、アプリケーションサーバーを選択しません。この印象は変わりません。 したがって、このセクションの開発者が得た完全な経験に基づいてサーバーを評価します。 最初に、パフォーマンステストで使用するアプリケーションは、JRebelデモを示すSpring PetClinicとJenkinsアプリケーションのタイムテスト済みです。



PetClinicは、サーブレット、JSP、および多数のPOJOを使用するWebアプリケーションです。 Hibernate、JPA、JDBC統合コード、およびHypersonicSQL DBもあります。 アプリケーションの重量は20MB以下です。 Jenkinsは、多くの人が楽しんで使用している非常に人気のあるCIフレームワークである紹介を必要としません。 Webアプリケーションは55MB弱のサイズで、Springフレームワークと多くのWebアーティファクトが含まれています。



テスト構成



すべてのテストは、同じMacBook Airラップトップで実施されました。 機能:8GB RAM(1600 MHz DDR3)、2GHz Intel Core i7 CPU。 HDD自体-512 GB SSD、OSX 10.8.2。 使用されたJRE:







起動/再起動の速度



空のサーバー、PetClinicアプリケーションがデプロイされたサーバー、Jenkinsアプリケーションがインストールされたサーバーをテストしています。 結果は次のとおりです。







**注-すべての結果は秒単位です**



Liberty ProfileおよびTomCatサーバーは、GlassFishおよび(驚くほど)Jettyサーバーの2倍の速度であることがわかります。 しかし、すべての結果はほぼ許容範囲内です。 アプリケーションでサーバーを起動すると、すべてがより興味深いものになります。LibertyProfileは低い値を維持し続け、他のサーバーに必要な時間が劇的に増加します。 選択した値から、Liberty Profileは常に競合他社よりも2〜4倍速く起動することがわかります。







各値をカテゴリの最高値と比較すると、Liberty Profileが勝ち、JettyとGlassFishは予想外に失望します。 JBossは位置を維持しようとしていますが、jenkinsアプリケーションを起動すると、Liberty Profileより11〜15秒遅い悪い結果が表示されます。



展開時間



各サーバーのpetclinicおよびjenkinsアプリケーションの例を使用して、展開速度を数秒で見てみましょう。







Liberty Profileと他のサーバーの顕著な違いを見ることができますが、そのいくつかは6倍先です。







繰り返しになりますが、Liberty Profileは競合他社よりも先を行っており、JBossはJenkinsアプリケーションとはうまくいきませんでした。 それ以外の場合、サーバーの値は似ています。



Liberty Profileは何をしますか、他のサーバーは何に失敗しますか? さらに正確に言えば、Liberty Profileにはないこと...アプリケーションの初期化時間を見て、これをよりよく理解する価値があります。



アプリケーションの初期化







ほとんどのサーバーは適切な時間を示していますが、Liberty Profileは遅延初期化モデルを明らかにしています。 最初の使用時には、多くの起動/展開作業が後の段階に向けられることが注目に値します。







平均して、JBossとTomcatは優れた値を示し、JettyとGlassFishはそれほど遅れていません。Libertyプロファイルは耐えられない初期化で攻撃します。これは平均より14.5秒長く続きます! あぁ! 明らかに、サーバーは時間ごとに異なる処理を行うため、これらのメトリックを組み合わせて全体像を見てみましょう。







ここでは、全体として見た場合のpetclinicアプリケーションの値はそれほど変わらないことがわかります。 Tomcat、Glassfish、Jettyは2つのアプリケーションの時間に匹敵しますが、違いはわずか数秒ですが、Liberty ProfileとJBossはjenkinsアプリケーションに2倍の時間を費やします。 Libertyプロファイルは、Tomcatが実行するタスクを11〜12秒で完了するのに25秒かかります。







JBossの値はjenkinsでは重要に見えません。LibertyProfileには努力が必要です。 Tomcatはこのカテゴリの勝者であり、ほぼすべてのタスクで競合他社を凌outしています。







機能とオープンスタンダードへの準拠



桟橋



ほとんどの場合、Jetty自体はコンテナであるため、より深刻なアプリケーションを実行するために必要なコンポーネントの多くが不足しています。 しかし、そのような目的のために、「Hightide」と呼ばれるJettyディストリビューションがあります。 Jetty 9の配布キットはまだありませんが、 Jetty 8にHightideを使用できます。 Jetty Hightideには、JNDI、JMX、注釈、およびJEE統合が含まれます。 これらの優れた機能をすべて備えていても、Hightideの重量はわずか24MBです。 Jettyは、Webアプリケーションに埋め込むこともできます。 これにより、実行可能なWebアプリケーションが作成されます。これは、Jettyコードベースのサイズが大きいために可能です。



評価:







理由:WebSocket、Jetty Continuations、Servlet 3.1仕様(ほぼ完成)が含まれていますが、他にはほとんど何も含まれていません。





Tomcat



Tomcatの機能は豊富ではないため、開発者はTomcatに基づいて独自の機能を作成する必要があります。 しかし今、TomEE apacheプロジェクトの形に新たな希望があり、これはすべての統合作業を行い、「TomcatがリーダーであるJava EE 6 Webプロファイルの認証を目的とした完全なApacheスタック」を提供します。 最後の部分は本質です-このプロジェクトは、Tomcatのエクスペリエンスとパフォーマンスを最高レベルに維持し、多くのユーザーが元のバージョンで見たい追加機能を提供することを目指しています。



TomEE Webプロファイルの最も重要なコンポーネント(35.9MB)のうち、Bean Validation、CDI、EJB、JPA、JSF、およびJTAのサポートに注目する価値があります。 TomEE +バージョン(55.2 MB)には、Connector、JAX-RS、JAX-WS、JMSのサポートが追加されています。 これらの機能は基本的なTomcatインフラストラクチャを使用します。たとえば、サーブレットはJPAとトランザクションにアクセスし、EJBはセキュリティにアクセスできるようになりました。 context.xmlなど、Tomcatが提供するリソースはすべて、システムの管理対象コンポーネントで見つけることができます。 かっこいい! Jettyのように、Tomcatの機能はWebプロファイルの要件を満たすには不十分ですが、通常のWeb仕様を満たすには十分です。 追加した要素、たとえばOpenEJBやOpen JBAを自分で選択できますが、それらだけを制限する必要はありません。



評価:







理由:機能が低いため、Tomcatをベースとしてのみ使用することを最も好む。



トミー



評価:





理由:テスト済みのオープンソースコンポーネントでWebプロファイルを改善する。 わあ!



ボス



JBoss AS7はEE6と完全に互換性があり、フルプロファイル:EJB、CDI、JPA、JSF、Jax-RS、Bean検証などを意味します。 OSGI 4.2および4.3を将来サポートします。 オープンソースの互換性に関して、JBossはJava EEと完全に互換性があります。 JAXB、EJB、CDIについて何かを追加するのは困難です。いずれにしても、すべてがエレガントに機能します。 同時に、OSGiバージョン4.2と互換性があるため、両方の長所を活用できます。



評価:







理由:完全なEE6プロファイル、OSGiサポート。 かっこいい!



リバティプロフィール



バージョン8.5はWebプロファイルを完全にはサポートしていません-EJBとCDIのサポートは十分ではありません。 しかし、これがお気に入りのテクノロジーである場合に備えて、OSGiアプリケーションのサポートがあります。

それにもかかわらず、Liberty Profile 2013のベータ版では、EJB、CDI、WebSevices、および興味深いことに、ユーザーがserver.xmlファイルに独自の「機能」を作成できる製品拡張を含むようにサポートが拡張されました。



評価:







理由:Webプロファイル、OSGi、独自の機能を追加する機能をサポートします。



Glassfish



Java EEリファレンス実装の所有者であるGlassFishの簡単な比較セクション。 JBossのようなオープンソースのサポートのおかげで、Java EEサーバーと完全に互換性があります。これには完全なプロファイル、EJB、CDI、JPA、JSF、Jax-RS、Bean検証などが含まれます。 さらに、OSGiのサポートがあります。



評価:







理由:JEEおよびOSGiの完全サポート。 かっこいい!







管理および管理/ UI



桟橋



おそらく最大の欠点は、Tomcat(Tomcat Manager)やJBoss ASなどの他のサーバーの使用に慣れる管理コンソールがないことです。 したがって、大規模な製品環境の管理は複雑すぎる可能性がありますが、 LiveRebelなどのツールを使用する場合はそうではありません。



評価:







理由:管理は、スクリプト/直接のXML変更でのみ可能です。



Tomcat







Tomcatは、マネージャーアプリと呼ばれる管理アプリケーションを提供します。 ただし、最初にconf / tomcat-users.xmlファイルを設定して、ロールへのアクセスを提供する必要があります(管理の異なるレベルで異なるロールへのアクセスを許可する優れた機能)。 マネージャーアプリには特別なものはなく、展開とアプリケーションの変更からOSおよびJVMプロパティの指定まで、基本的な一連のアクションのみです。



評価:







理由:シンプルで制限された機能、80年代スタイルのコンソール。管理コンソールを使用する前にxmlを構成してユーザーを追加する必要があります。



ボス







特にTomcatアプリケーションと比較した場合、Webコンソールは適切に見えます。 データソース、Webサーバー、OSGi、JVMパラメーター、トランザクションを含むJPAなどを設定できます。 豊富な選択肢と高速コンソール。 再起動時にJBossがWebコンソールに加えられた変更を適用できなかった場合、何も変更されていないのか不思議に思わないように通知するメッセージが表示されます。



評価:







理由:高品質の管理、再起動/再起動に関する情報、ユーザーは使用前に設定する必要がある、機能の柔軟な設定、最新。



リバティプロフィール



少し残念。 Liberty Profileには、サーバー構成を更新したり、アプリケーションをインストールしたりするための管理コンソールがないため、server.xmlを更新することでEclipseエディターで動けなくなります。







Liberty Profile Admin UI Tech PreviewというWebアプリケーションがベータ版ダウンロードで利用可能です。 一見、非常に基本的な機能しかなく、見た目も操作もモバイルアプリケーションのようで、ブラウザアクセスにはあまり適していません。



評価:







理由:不十分なテクニカルプレビュー、ブラウザーの不適切なUI形式でのサポートが制限されているため、Eclipseツールインターフェイスははるかに優れていますが、Eclipseの使用が必要であり、リモートサーバーには不適切です。



Glassfish



GlassFishは、サーバーまたはサーバークラスターを管理する2つの方法を提供します。asadminユーティリティまたはWebバージョンの管理コンソールは、デフォルトでポート4848で利用可能で、サーバーを変更するためのシンプルで使いやすいツールです。 HTTPポートの値を変更するには、ネットワークリスナーを更新する必要があります。 GlassFishは、ネットワークリスナーを使用して、HTTP接続を含む外部に接続します。 HTTPポートを変更する最も簡単な方法は、管理Webコンソールを使用することです。







うわー、それは簡単でした! GlassFishサーバーは大きくて工業的に見えますが、そのモジュラーアーキテクチャにより、再起動せずにほとんどすべての変更を行うことができます。 新しいHTTPポート値を保存しましたが、現在は機能しています。 異なる構成を作成し、それらを異なるサーバーまたはクラスターに適用できます。 私の意見では、非常にDevOpsが指示した方法です。



評価:







理由:過度に複雑で機能の柔軟な構成がなく、おそらく少し時代遅れですが、スコアを下げるには不十分な、クリーンな管理コンソール。







費用$$$ /ライセンス



問題のサーバーはすべて、開発環境で自由に使用できます。 したがって、コストがドルでの初期コストだけではないことは驚くべきことではありません。 問題が発生した場合のサプライヤやコミュニティのサポート、インフラストラクチャに費やされた時間と労力(アプリケーションサーバーの機能の改善、テスト、将来の更新など)を覚えておく必要があります。 各サーバーのコストを以下に示します(最低価格は最低設定を考慮に入れています):







$$$-これらのサーバーは本番環境での使用に対して課金されますが、これはスーパーマーケットで購入するものではないため、価格体系が頭痛の種になる可能性があります。 可能な場合は価格ベンチマークが追加されましたが、環境についてまだ質問がある場合は、誤解を招く数値を書く代わりに製品価格のリンクを追加しました。



桟橋



Jettyは完全に無重量であるため、ねじ込むものはすべてフレームワークチームによってサポートされます。 Jetty 9のHightideは、便利な機能よりも多くの機能を提供します。 Jetty 9(7や8など)には、デュアルApache License 2.0とEclipse Public License 1.0があります。 NOTICEファイルで指定されている場合を除き、商用利用は無料で、ライセンスの条件に基づいて配布されます。



評価:







理由:ライセンスは優秀で無料です! あなたはさらに何を求めることができます!



ボス



JBoss ASはLGPLの下でライセンスされるオープンソース製品であるため、開発と本番の両方で使用できます。 そして、その完全なEE6プロファイルにより、EEスタックをサポートするためにライブラリからの自家製スープよりも多くのことがうまく機能します。 さらに安定したリリースとサポートが必要な場合は、EAP配布を選択できます。 JBoss EAPのコストは、年間のCPU数によって異なります。



評価:







理由:無料で開発できますが、公式サポートは有料です。



リバティプロフィール



IBMでは、すべてが長期にわたってパッケージ化、出荷、およびテストされているため、メンテナンスは最小限です。 そして、購入して本番環境に展開することを決定した場合、何か問題が発生した場合は常にサポートに連絡する機会があります。 ライセンスを最初から最後まで、インストール中に2回読んだ後、Liberty Profileをアマチュア開発に使用できるライセンスがないことがわかります。 Liberty Profileライセンスではこれが許可されていないため、個人プロジェクト用のアプリケーションサーバーを起動することはできません:(ただし、このレビューでは開発者の観点からすべてを検討しているため、これはあまり影響しません。



評価:







理由:ライセンスは、非営利的な開発以外の趣味での使用には十分な柔軟性がありませんが、この目的のために無料で開発者に適しています。



GlassFish(オープンソース版)



GlassFish Open Source EditionはCDDLの下でライセンスされています。つまり、開発および本番で自由に使用できます。 CDDLライセンスは、GPLおよびBSDベースのライセンスよりも自由度が高いため、GlassFishを安全かつ重大なプロジェクトで使用できます。 より多くのサポートと迅速なバグ修正が必要な場合は、最高の管理ツールを備えたOracle GlassFish Serverにアップグレードできます。 GlassFishにはJEEが完全に実装されているため、TomcatやJettyの場合のように過度のメンテナンスは必要ありません。



評価:







理由:無料版には必要なほぼすべてのものがあり、使いやすいライセンスで完全に無料です!







終わり



いつものように、私たちはコメントや質問をここで、または公開日に待っています。



All Articles