JSF / JSP for Java EE以外の強力に統合されたプレゼンテーションレイヤーツールはありますか?

StackOverflow https://stackoverflow.com/questions/296325

質問

私は大学でJava EEを教えていますが、これは学生が尋ねた質問でした。私は「いいえ」と言ったが、私は本当に確信が持てなかったので、私はあなたに強力な開発者に尋ねるかもしれないと思った。 :)

基本的に、私がやりたいことは、通常のPOJOのように、猫のゲッター、セッターなど、自分のコンテキストにあるエンティティを使用することです。リモートインターフェイスを使用してEJBを使用する場合、エンティティはコアインフラストラクチャから切り離されるため、これは不要です。

修士論文でこのようなレイヤーを書くことを考えました。それが死んだアイデアなら、私に教えてください。そうでない場合は、欲しいかどうか教えてください。

または、そのようなツールがある場合は、お知らせください!

役に立ちましたか?

解決

現代の基本的なJava EEアプリケーションでは、さまざまなレイヤーに分割され、4つの基本レイヤーがあります

+--------------------+
|   Presentation     |
+--------------------+
| Controller/Actions |
+--------------------+
| Business Delegate  |
|     (Service)      |
+--------------------+
|  Data Access Layer |
+--------------------+
|      Database      |
+--------------------+

アプリケーションは、最初からこれらのレイヤーに分割する必要があります。これにより、特定の時点で、レイヤーの兄弟レイヤーに影響を与えずにレイヤーを置き換えることができます。

データアクセスレイヤーにJDBCを使用した場合の例では、ビジネスデリゲートまたはデータベースレイヤーに影響を与えることなく、JDBCをHibernateに置き換えることができるはずです。このようなアーキテクチャを使用する利点は、複数のテクノロジーとのコラボレーションを可能にすることです。ビジネスデリゲート(サービスレイヤー)は、ブラウザにアクセスしなくてもWebサービスと通信し、アプリケーションの処理を処理できる必要があります!

JSPをプレゼンテーションレイヤーとして使用することに関して、 velocity freemarker 、上記のiberckのように、タペストリーには独自のレンダリングエンジンもあります。 XML + XSLTを使用してUIをレンダリングすることもできます。 Tiles sitemesh 。さまざまな技術をページの異なるコンポーネントとして統合し、それらを1つとして表示するのに役立ちます。

JNLP およびデスクトップスタイルのエンタープライズアプリケーションを開発します。必要なのは、少し想像力とクライアントの要件であり、文字通り何でもプレゼンテーション層として使用できます。

他のヒント

試したことはありませんが、JSFは Facelets を使用した場合よりもうまく機能するはずです。 JSP。

IBMには、記事があります。

>

ああ。あなたは私の質問を正しく理解していないようです:)

Beanは、アプリケーション内でサービスを提供するためにあります。 swing guiを使用してスタンドアロンJavaアプリケーションを開発し、そのアプリケーションからjava eeアプリのスコープに存在するエンティティを使用したいとします。

これは、EntityManagerのデタッチの問題を気にせずに、エンティティの作成、変更、削除を直感的な方法でシームレスに行いたいものです(EJBをリモートで呼び出してエンティティオブジェクトを返す場合、戻る前に切り離されます)。

Webアプリケーションを開発したくない。 JSF / JSPなどは強力に統合されていますが、多くの環境ではスタンドアロンクライアントアプリケーションの方が優れています。 :)

コメントを途中で見ると、Java EEを介したデスクトップフレームワークが必要であることがわかります。

ここでの答えは、JSFはサーブレットAPIを介して機能するということです。間違いなくWeb向けですが、待ってください。TomcatまたはJettyをアプリケーションに埋め込むことができます!

可能性はほぼ無限です。ビジネスレイヤーが適切に定義されている場合は、ビジネス機能を呼び出すスイングレイヤーを作成するだけです。

また、Java EEはAPIであり、一部の部品を交換したり、一部を使用したりできます。コンテナは、主にEJB、サーブレットJNDI、その他の小さなものを扱うためのものです。これらはすべてデスクトップアプリでも使用できます。

したがって、答えはあなたの特定の目標とアプリケーションの実際の設計/実装に依存します。

1つの代替手段は、 Spring Framework です。 Springは、エンティティオブジェクトをビューにバインドする独自のサポートを提供し、接続が完了したら取得/設定を処理します。選択できる多くのSpringモジュールがあります。 Spring MVCとSpring Webflowは両方ともチェックする価値があります。 Spring MVC(IMO)の使用は簡単ですが、Sring Webflowでは、より複雑なナビゲーションとより多くのスコープオプション(フロースコープなど)が可能です。本を探している場合、 Spring In Action は下降しています。 Springを使用するために取り組む必要があるいくつかの概念(依存性注入など)がありますが、それは十分に価値があります。

別の代替手段は、 Tapestry5 フレームワークです。 Tapestryは、Javaで動的で堅牢でスケーラブルなWebアプリケーションを作成するためのオープンソースフレームワークです。 Tapestryは、標準のJavaサーブレットAPIを補完および構築するため、あらゆるサーブレットコンテナまたはアプリケーションサーバーで動作します。

Tapestryは、Webアプリケーションをページのセットに分割します。各ページはコンポーネントで構成されています。これにより、TapestryフレームワークがURLの構築とディスパッチ、クライアントまたはサーバー上の永続的な状態の保存、ユーザー入力の検証、ローカリゼーション/国際化、例外レポートなどの主要な懸念事項に責任を負うことができます。 Tapestryアプリケーションの開発には、プレーンHTMLを使用してHTMLテンプレートを作成し、テンプレートを少量のJavaコードと組み合わせることが含まれます。 Tapestryでは、オブジェクト、およびそれらのオブジェクトのメソッドとプロパティの観点からアプリケーションを作成します。特にURLとクエリパラメータの観点ではありません。 Tapestryは、Java Webアプリケーションに真のオブジェクト指向開発をもたらします。

Beanの背後にあるイデオロギーは、私が知っている適切なJavaフレームワークの中にあります。豊富に述べたように、Springは優れた/万能なビジネスロジックフレームワークです( jdbcテンプレートクラス、それらは単純に素晴らしい-もう1つの素晴らしい宝石は applicationContext.xml )であり、ビューレイヤーには個人的に Apache Wicket

自分で作成する必要はないと思いますが、代わりにニーズに合ったフレームワークを見つけてそのコードベースに貢献し始めると、すでに形成されたユーザーベースから始めることができ、コードがより徹底的に作成されますこれにより、より優れたプログラマーになります。

grails( http://www.grails.org/ )またはgriffon( http://griffon.codehaus.org/ )は興味があるかもしれません

StringTemplate は、ANTLRの開発者であるTerrence Parrによって作成されました。モデルから何らかのテキストプレゼンテーションを生成することに関心がある場合、これは非常に優れています。

XML、Webページ、およびドットファイルを同じモデルから生成するのに、これを使用して優れた結果が得られました。オブジェクトをレンダリングするテンプレートを作成します。そのテンプレートは、モデルから派生したデータに基づいて、他のテンプレートを(再帰的に含む)呼び出すことができます。 (qv 画像関数

Gettersおよび map.get()は、テンプレート内から直接呼び出し可能です。モデルは任意のPOJOにすることができます。 STは、コントローラーからの厳密な分離を誇りに思っているため、テンプレート自体にはほとんどロジックが許可されていません。

これらすべての小さな言語と同様に、それは学ぶのに新しい何かであり、あなたが探しているものではないかもしれません。それは私にとって本当にぴったりだった。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top