85

Java を使用して独自の Web サイトを作成することを検討しており、使用するフレームワークを決定しようとしています。ただし、Java フレームワークをすばやく検索すると、50 を超える選択肢が返されます。

私のウェブサイトは、最初は自分で作って楽しむためのものですが、人気があれば、ある程度のスケーラビリティがあるか、少なくともそのために再設計できるとよいでしょう。

より一般的なフレームワークの主な違いは何ですか? 1 つが他のものよりも大幅に優れている場合はありますか? たとえば、高トラフィックのエンタープライズ アプリケーションと低トラフィックの小規模アプリケーションを比較します。また、他のものよりも習得と使用がはるかに簡単なものがあるかどうかも疑問に思っています。

これらのフレームワークのいくつかの経験があり、推奨できる人はいますか? 選択肢の多さは、可能な限り Java ベースの Web 開発を回避するための早期警告にすぎませんか?

4

24 に答える 24

59

私はTapestry 3WicketEcho、およびJSFをかなり広範囲に使用してきました。それらをよく見て、自分にとって最も簡単で、自分の好みの作業方法に最も近いものを選択することを強くお勧めします.

それらの中で、私が最も快適に作業できたのはWicketでした。これは、コンポーネント構築の軽量性とページ テンプレートの単純さからです。Hibernate やその他のフレームワークの代わりに独自の db コードを使用している場合は、二重になります (Wicket Hibernate や Spring Integration に完全に満足したことはありません)。

Echoは、すべてのレイアウトを Java で書くことを気にしない場合に最適です。今はそれが違うことはわかっていますが、それでも製品はかなり狭いニッチを提供していると思います. メジャーリリースごとに開発モデルも変更されているようです。

Tapestryは素晴らしい製品ですが、主に 1 人の男が主導しているため、開発モデルに関しては明らかに他の製品とは大きく異なります。Howard Lewis Ship は間違いなく非常に賢いですが、各リリースの下位互換性を基本的に忘れるという彼らの決定には失望しています。繰り返しになりますが、あなたのニーズにとってはこれは問題ではないかもしれません.Tapestry製品は快適に動作することが常にわかっています.

JSFは何年も前から登場していますが、いまだに Struts の専門家がStrutsのすべての問題を解決するために構築したもののように感じられます。Struts のすべての問題を本当に理解していなくても。製品は明らかに非常に柔軟ですが、まだ未完成の感触があります. 私はそれを使用し、その将来に大きな期待を寄せています。JEE6 で提供される次のリリース (2.0) では、新しいテンプレート構文 (Facelets に類似) と簡素化されたコンポーネント モデル (1 つのファイルのみのカスタム コンポーネント... 最終的に) により、JEE6 が本当に独自のものになると思います。

そしてもちろん、独自の支持を得ている小さなフレームワークやツールが無数にあります (基本的なニーズに対応するVelocity、生のJSP、Struts など)。ただし、私自身は一般的にコンポーネント指向のフレームワークを好みます。

最後に、Tapestry、Wicket、および JSF を見て、自分に最も適したものを選択することをお勧めします。あなたの好きな働き方にぴったりのものがすぐに見つかるはずです。

于 2008-08-23T23:39:36.317 に答える
39

私のお気に入りは Spring Framework です。2.5 の Spring MVC は、新しいアノテーション、構成上の慣例などを備えた、すてきなキック アスです。

非常に単純なことをしている場合は、フレームワークを気にせずに、通常のサーブレット API を使用することもできます。

于 2008-08-23T21:55:11.213 に答える
25

コンポーネント指向のWicketフレームワークをお勧めします。これにより、Web アプリケーションをプレーンな古い Java コードで作成できます。POJO をすべてのコンポーネントのモデルとして使用でき、巨大な XML 構成ファイルをいじる必要はありません。

Wicket を発見したとき、私は Struts を使用してオンライン バンキング アプリケーションの開発に成功し、Web アプリケーション開発がいかに簡単であるかを知りました。

于 2008-08-25T21:16:28.047 に答える
17

最近、Stripes Frameworkを使い始めました。本当に使いやすいリクエストベースのフレームワークを探しているが、何をしているのかに制限を課さないなら、私はそれを強くお勧めします.

ストラットに似ていますが、それをはるかに超えています。ごくわずかな構成で hibernate や jpa を使用できるようにするプラグイン プロジェクトもあります。

ウィケットも良いものだと聞いたことがありますが、私はそれを使用したことがありません。

于 2008-08-25T14:04:20.440 に答える
16

自分では試していませんが、そう思います

http://www.playframework.org/

多くの可能性を秘めている...

PHP と従来の ASP に由来する、これは私にとって有望に聞こえる最初の Java Web フレームワークです....

于 2009-10-25T19:08:36.843 に答える
11

更新: Tapestry 5.2 が出たので、以前のように放棄されたわけではありません。私の経験は Tapestry 5 ではなく 4 であるため、走行距離は異なる場合があります。タペストリーに対する私の意見は、長年にわたって変化してきました。それを反映するためにこの投稿を修正しました。

以前のようにタペストリーをお勧めすることはできなくなりました。Tapestry 5 は大幅に改善されているように見えますが、Tapestry に関する私の主な問題はプラットフォーム自体ではありません。後ろの人たちと一緒です。

歴史的に、Tapestry のすべてのメジャー バージョン アップデートは、予想をはるかに超える極端な偏見を伴う下位互換性を破壊してきました。これは、大幅な書き換えを必要とする新しいコーディング手法またはテクノロジの組み込みによるものと思われます。

Howard Lewis Ship (Tapestry の主な著者) は確かに素晴らしい開発者ですが、彼の Tapestry プロジェクトの管理を気にかけているとは言えません。タペストリー5の開発は、タペストリー4の出荷直後から始まりました。私が知る限り、Ship はそれに専念し、Tapestry 4 を他の貢献者の手に委ねました。タペストリー 3 からタペストリー 4 への苦痛な切り替えを行った後、すぐに見捨てられたと感じました。

もちろん、Tapestry 5 のリリースにより、Tapestry 4 はレガシー製品になりました。アップグレード パスがそれほど残忍なものでなければ、これで問題はありませ。そのため、現在、開発チームはかなりうらやましい立場にあります。本質的に放棄された Web プラットフォーム (Tapestry 4) を引き続き使用するか、Tapestry 5 への凶悪なアップグレードを行うか、Tapestry を完全に放棄して別のプラットフォームを使用してアプリケーションを書き直すかです。これらのオプションはどれも非常に魅力的ではありません。

Tapestry 5 は、この時点から更新が中断される可能性を減らすように書かれていると思われます。良い例はページ クラスです。以前の化身では、ページ クラスはタペストリーによって提供される基本クラスから派生していました。このクラスの互換性のない API の変更は、多数の下位互換性の問題の原因でした。Tapestry 5 では、ページは POJO であり、注釈を介して「魔法のタペストリーの妖精の粉」で実行時に拡張されます。したがって、注釈のコントラクトが維持されている限り、Tapestry への変更はページ クラスに影響しません。

これが正しければ、Tapestry 5 を使用して新しいアプリケーションを作成するとうまくいく可能性があります。でも、個人的にはもうバーナーに手を当てる気にはなれません。

于 2008-09-02T18:20:09.280 に答える
9

免責事項: 私は Vaadin (以前の IT Mill) で働いています。

RIAっぽいことをしているなら、Vaadinを見てみるといいかもしれません。これはオープン ソースの UI 指向の AJAX フレームワークであり、私にとっては使いやすい (私は PHP のバックグラウンドを持っています)。

Icefaces と Vaadin で同じアプリケーション (つまり、同じ機能セットを持つ 2 つのアプリケーション) を実行することを比較するケース スタディがあります。一言で言えば、UI 開発が大幅に高速化されたということです。

この研究は会社の wiki でホストされていますが、私を信じさせることはできませんが、それが客観的で、本物で、真実であることは保証できます。

于 2008-08-23T21:19:52.470 に答える
7

さまざまなソリューションを長い間テストした後、私にとっては次のようになりました。

  • プレゼンテーションおよびコントローラー レイヤー用の Spring MVC (私のフローは ajax に基づいているため、Spring Webflow はありません)

  • すべてのクライアント側のもののための jQuery

  • まあ、セキュリティ面のSpring Security

  • 休止状態/JPA2

  • 継続のための突堤(彗星)

非常に急な学習曲線の 1 か月でしたが、今は満足しています。

また、Java のことをすべてスキップして代わりに Scala/LIFT を学ぶことから少し離れていたことにも言及したいと思います。私に関する限り、最先端の Web 開発に関連する Java のすべて (コメット、非同期通信、セキュリティ(はい、Spring Security を使用した場合でも!)) はまだ少しハックです (証拠によって私が間違っていることを証明してください)。 !)。私にとって、Scala/LIFT は、すぐに使えるオールインワン ソリューションのように思えます。

最終的に Scala を使わないと決めた理由は

  • プロジェクト リーダーとして、私は人的資源を考慮する必要があり、Java 開発者は Scala 開発者よりもはるかに見つけやすいです。

  • 私のチームのほとんどの開発者にとって、Scala の機能的な概念は、優れているとはいえ、理解するのが難しい

乾杯えー

于 2010-08-03T07:21:40.180 に答える
5

Spring Framework についても良いことを聞いています。しかし、概して、私が調べたほとんどの Java Web フレームワーク (特に Struts) には圧倒されてきました。

単純なアプリの場合は、「生の」サーブレットと JSP の使用を検討し、フレームワークの採用について心配する必要はありません。サーブレットが適切に作成されていれば、将来、アプリが複雑になったときに、必要に応じてフレームワークに簡単に移植できるはずです。

于 2008-08-23T23:10:20.393 に答える
5

私のピックはウィケットです!!

于 2009-02-24T09:44:20.463 に答える
4

それらのすべて - それが問題です;-)

于 2008-09-26T11:36:22.563 に答える
3

「JSF を使用する」と言うのは少し単純です。JSF を使用する場合、その上にコンポーネント ライブラリを選択する必要があります。MyFaces Tomahawk, Trinidad, Tobago ( http://myfaces.apache.org/ ) を使用しますか? それともICEfaces ( http://www.icefaces.org/ )? また、ICEfaces を使用する場合、ビューに JSP または Facelets を使用しますか?

私の意見では、それを伝えるのは難しいです。少なくとも私が取り組んでいるプロジェクトでは、すべての有望な代替案を評価する時間はありません。なぜなら、それらは 3 か月の評価フェーズを行うには十分な大きさではないからです。ただし、大規模で活発なコミュニティがあり、1 年以内に消えていないコミュニティを探す必要があります。JSF はしばらくの間存在しますが、太陽に後押しされているため、もう少し存在することになります。それが最良の選択かどうかはわかりませんが、良い選択になるでしょう。

于 2009-02-24T10:23:50.960 に答える
3

ささやかな要件については、Tomcat サーバーから提供できるサーブレットまたは単純な jsp ページをコーディングするだけでよいと思います。個人の Web サイトのデータには、いかなる種類の Web フレームワーク (ストラットなど) も必要ないと思います

于 2008-08-23T21:40:54.917 に答える
3

トラフィックの多いサイトでは、サーバー上のクライアント状態を管理しないフレームワークを使用します。Wicket、JSF、およびタペストリーがサーバー上のクライアント状態を管理しています。アプリケーションをデスクトップ アプリケーションに近づける必要がある場合にのみ、これらのフレームワークを使用します (Wicket が私のお気に入りです)。ただし、よりスケーラブルでシンプルな REST+AJAX アプローチを使用してみます。

Spring MVC が候補になりますが、Spring MVC 3 以降、静的型付けの利点を使用しない、奇妙なアノテーション オーバーロード プログラミング モデルが使用されています。メソッド内の出力パラメーターと通常の戻り値の組み合わせなど、他にも醜いものがあるため、1 つのメソッドに 2 つの出力チャネルがあります。また、Spring MVC は車輪を再発明する傾向があり、他のフレームワークと比較して構成する必要があります。Spring MVC にはいくつかの優れたアイデアがありますが、あまりお勧めできません。

Grails は、Spring MVC や Hibernate などの他の確立されたフレームワークを使用する便利な方法です。コーディングは楽しく、結果はすぐにわかります。

また、テンプレート用の FreeMarker などのいくつかの小さなヘルパーを備えたサーブレット API が非常に強力であることを忘れないでください。

于 2009-12-30T10:08:21.637 に答える
3

http://zkoss.org - 良いもの

于 2009-09-09T13:38:09.457 に答える
3

私はかなりの数のフレームワークを評価しましたが、Vaadin ( http://vaadin.com/home ) はトップにまで浸透しました。

少なくとも短い評価を与える必要があります。

乾杯!

于 2010-07-27T16:17:58.363 に答える
2

特に永続性が必要な場合は、Seam をお勧めします。

于 2010-03-06T17:48:23.047 に答える
2

私の選択は、Wicket (大規模なプロジェクトと予測可能なユーザー ベースの場合)、GWT (大部分が公開されている大規模なプロジェクトの場合)、または単なるサービス フレームワーク (Jersey/JAXRS など) と JavaScript ツールキット (小規模から中規模のプロジェクトの場合) の組み合わせです。 .

于 2010-01-31T23:30:31.557 に答える
1

素早く派手なGUI を作成するには、Richfaces ライブラリで JSF を使用できます。Richfaces UI コンポーネントは使いやすく、デモ サイトのコード デモンストレーションで利用できる便利なリファレンスです。おそらく後で、サイトで処理するデータが増え、データベースで多くの情報を処理する必要がある場合は、任意のデータベース アクセス フレームワーク (ORM) をプラグインできます。

于 2011-04-15T13:02:21.187 に答える
1

いくつかの Java アプリケーション フレームワークに関するいくつかのコメントを参照してください (2 番目の段落)。

http://swiss-knife.blogspot.com/2009/11/some-java-application-servers.html

于 2010-08-02T17:48:14.983 に答える
0

誰もGWTについて言及していないなんて信じられない

于 2008-09-11T04:43:14.733 に答える
0

HybridJava を試してみてください。これは他の何よりも簡単です。

于 2010-07-28T05:32:44.937 に答える
0

非常にシンプルなアプリを作成するための私のお気に入りの方法は、Velosurf ( http://velosurf.sourceforge.net ) を使用した Apache VelocityTools (VelocityLayoutServlet) です。

より複雑なアプリの場合は、Spring MVC または Struts 2.

于 2008-09-15T16:03:02.680 に答える
0

私はヴァーディンまたはウィケットと言うでしょう

于 2011-02-08T11:08:06.617 に答える