質問
Java プロセスによって生成されたデータをブラウザーでレンダリングする良い方法は何ですか?
私は JSP とさまざまな関連フレームワークを広範囲に使用してきました (JSTL, 支柱, タペストリー, 、など)、および JSP に関係のないより包括的なフレームワーク (GWT, オープンラズロ)。どのソリューションも完全に満足できるものではありませんでした。ほとんどの場合、フレームワークは制約が多すぎるか、私のニーズに対して複雑すぎるため、既存のコードの大規模なリファクタリングが必要になる場合もあります。さらに、ほとんどのフレームワークにはパフォーマンスの問題があるようです。
現在、私は JSON を返す単純なサーブレットを介して Java データを公開し、PHP または Ruby を使用してデータをレンダリングするという解決策に傾いています。これには、自分のサービスを Web サービスとして即座に公開できるという追加の利点もありますが、ここで車輪の再発明をすることになるのかどうか疑問に思っています。
解決
私は個人的に使用しています タペストリー5 Java を使用して Web ページを作成するのに適していますが、場合によっては少しやりすぎになる可能性があることに同意します。JAX-RS の使用を検討します (java.netプロジェクト, jsr311) 使い方は非常に簡単で、すぐに XML へのオブジェクトのマーシャリングと XML からのオブジェクトのアンマーシャリングをサポートします。これを拡張して JSON をサポートすることができます。 ジェティソン.
私が試した実装は 2 つあります。
- ジャージー - JAX-RS のリファレンス実装。
- ゆっくり休んで - 私が好む実装、幅広い形式のマーシャリングとアンマーシャリングのサポートが優れていること。また、非常に安定しており、Jersey よりも多くの機能を備えています。
JAX-RS が何をできるのかを理解するには、次のコードを見てください。
@Path("/")
class TestClass {
@GET
@Path("text")
@Produces("text/plain")
String getText() {
return "String value";
}
}
この小さなクラスは、サーバーのルート (クラスの @Path) で自身を公開し、URI /text で getText() メソッドを公開し、HTTP GET 経由でアクセスできるようにします。@Produces アノテーションは、メソッドの結果をプレーンテキストに変換することを試みるよう JAX-RS フレームワークに指示します。
JAX-RS で何ができるかを知る最も簡単な方法は、 仕様.
他のヒント
私たちが使っているのは ストライプ. 。これにより、直接のサーブレットよりも多くの構造が得られますが、 @UrlBinding アノテーションを通じて URL を制御できます。これを使用して、Ajax のもののために XML と JSON をブラウザにストリーミングして返します。
その道を進みたければ、別のテクノロジーを使用して簡単に利用することもできますが、実際にはストライプを使用した開発を楽しむこともできます。
チェックアウト レストレット ドメイン モデルを REST サービス (JSON や簡単な XML 出力を含む) として公開するための優れたフレームワークです。
情報をレンダリングするために、クライアント側で GWT を使用してデータ サービスを利用できるでしょうか?GWT がボートを浮かべないとしても、おそらく JQuery がボートを浮かべるでしょうか?
データを XML として生成し、XSLT を使用してレンダリングできるでしょうか?
Java が十分に高速でない場合、PHP や Ruby が答えになるかどうかはわかりません。