「Play」Java Web 開発フレームワークの経験はありますか?[閉まっている]

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

  •  22-09-2019
  •  | 
  •  

質問

次の新しい Java Web フレームワークを見つけました。遊ぶ

http://www.playframework.org/

http://www.playframework.org/documentation/1.0/home

これほど素晴らしい機能のリストがあるのに、これまで聞いたことがないことにかなり驚きました...

Java Web開発の約束の地のように聞こえます...

誰か試してみましたか?実際の経験はありますか?それを勉強する価値があると思いますか?

役に立ちましたか?

解決

Play が Grails よりも優れていることが判明するかもしれないというジェイソンの意見に私も同意します。4 つの Grails プロジェクトを抱えており (2 つの Tapestry プロジェクトと 1 つの Wicket プロジェクトが先行)、私は次は Play を真剣に検討しています。

私が聖杯についてクールだと思ったことの1つは、「すべてがグルーヴィーだ」ということです。つまり、Groovyを使用してすべてを書きます(HTMLおよびCSSを除く) - ドメイン、コントローラー、サービス、ページテンプレート(GSP)、タグライブラリ、Hibernate API(GORM)、ユニットテスト(GUNIT)、およびビルドスクリプト(ガント)。Groovy ではシェル スクリプトを書くこともできます。そのため、C++ や Delphi などの単一言語でデスクトップ アプリを作成していた時代を思い出して、単一言語を使用してアプリのすべての側面をコーディングできるようになることは、長い間待ち望まれていた簡素化のように再び思えました。しかし、ここですべてに当てはまるわけではないことを学びました。

まず、Groovy の IDE サポートはあまり優れていません。IntelliJ は最高の仕事をしますが、Groovy が動的であるため、できることは限られています。リファクタリング ツールはすべてを把握できるわけではない (できない) ため、100% 信頼することはできません。つまり、単体テストでは特に注意する必要があります。ここでも、Grails は実行時に発生する動的な「マジック」に大きく依存しているため、Grails での単体テストは、それをエミュレートするために広範なモッキング レイヤーに依存する必要がありますが、そのモッキング レイヤーは風変わりなものです。3 番目の問題は、作成しているいわゆる Groovy コードの多くが、実際にはドメイン固有言語 (DSL) コードであることです。(簡単に言うと、DSL は Groovy の略語であり、Groovy では構文の多くがオプションであるという事実を利用しています。) Grails は、さまざまな構成、URL マッピングなどに異なる DSL を使用します。そしてそれは矛盾しています。たとえば、log4j 設定の指定方法は、データ ソースの指定方法とはまったく異なりますし、Groovy のベースとなっている純粋な Java とも似ていません。したがって、「すべてがGroovyである」という約束はとにかく崩れます。

そう考えると、Play チームがどこから来たのかがわかります。

  1. ドメイン、コントローラー、サービス、JUnit については通常の Java に戻るのが理にかなっています。強力な型付けとは、IDE がインテリセンス、コード ナビゲーション、リファクタリングなどを確実に支援できることを意味します。(したがって、Eclipse に満足している場合は、IntelliJ にお金を払う必要はありません。) 強力なツールのサポートを取り戻すために、より冗長なコードを記述する必要があることは、現時点では私にとっては良いことのように思えます。見てみましょう。

  2. まだページ テンプレートで Groovy を使用できるのが気に入っています。ただし、必要以上に多くのコードをテンプレートに含めることになるのではないかと心配しています。

  3. 私は JPA を使用した経験がありませんが、GORM が私にとって行うものにかなり近いようで、素晴らしいと思います。

  4. Grails での Spring IOC サポートは完全に透過的ですが、Play のサポートは最小限であるように見えます。ただし、IOC は過剰に使用されていると考えており、まれに Spring XML マッピングが必要になる場合には、喜んで手動でコーディングします。(未解決の質問の 1 つは、JPA にはトランザクション サポートがあると仮定しているため、Grails のように Play にはそのための Spring が必要ないのではないかということです。)

  5. 私は Python のファンではなかったので、Play がビルド スクリプトに Python を使用していると読んだときはうんざりしました。しかし、Grails の GANT スクリプトの実行速度がかなり遅いことには同意します。さらに、GANT は XML ANT に比べて大幅に改善されていますが、それでも ANT の概念を理解するのは難しいことがわかりました。Grails GANT スクリプトはかなり複雑です。ですので、広い心で取り組んでいきたいと思います。

  6. Play の「アプリケーション モジュール」モデルは、Grails の「プラグイン」モデルに似ているように思えます。これは素晴らしいことです。

  7. これまで読んだ Play ドキュメントには非常に感銘を受けました。膨大な数の質問がありましたが、そのうちの半分はすぐに答えられました。

もう少し掘り下げたら、また後日レポートします。

他のヒント

私がプレイを試してみたと私は感銘を受けています:それは、ほとんどのフレームワークよりはるかに簡単で便利な開発モデルを提供するの偉大な仕事をしていません。ただビルドスクリプトを実行するか、再展開を待たずに、ブラウザでWebページをリロード開発スピードの多くは価値がされています。何よりも、.javaファイルを解析する「開発モード」での実行時の能力は直接価値がたくさんあります。ブラウザに表示されるエラーメッセージは、あまりにも本当に良いです。

私を感動もう一つは、全体的な審美的だった:だけでなく、API、おそらく、チュートリアルアプリケーションが実際に良い(両方のコードとウェブページのデザインを)見えること、小さなことですが、これは全体の枠組みに拡張しますドキュメンテーションます。

私はそれを見て同僚から催促した後、チュートリアルに続いて、夢中になりました。お使いのブラウザ手段で迅速なフィードバックの権利を取得するあなたはIDEを使用する必要はありません。私は、Eclipseを愛し、しかし、それに直面してみましょう:あなたは、いくつかのエキストラを追加した後、それは単純なテキストエディタとして安定したようではありません。 TextMateのとMacでは、あなたもあなたのブラウザでエラーメッセージをクリックするとTextMateはその行にカーソルをポップアップします。

プレイでのテストもうまくあなたはユニットテスト、機能テストとSeleniumベースのテストを実行する1ボタンを押すと、実行されます。

プレイ、それはまだ小さいとシンプルだからエキサイティングです。これは、ビルドにちょうどアリを使用し、25秒でそう。美しいドキュメントへの貢献.textileファイルを編集し、任意のプレイアプリでドキュメントを再ロードの問題です。

それは私ができる限り素敵なようにそれを得るために必要なScalaのサポートを追加し、スカラ座を使用するためのチュートリアルを翻訳するための探求に巻き取る方法です。

私はそれが好きで、私は、小規模なプロジェクトのためにそれを使用していますし、これまでのところ、それは仕事のために完璧に見えます。 サービス/ DAO /モデル層の分離:しかし、私は意図的に非常に多くのが取り残されていることを見逃して一つのことがあります!ドキュメントは、それは明らかに、プレイの目標の一つは、「貧血データモデル」を避けるためであると言います。 http://www.playframework.org/documentation/1.0.1/modelする

アプリケーションをリファクタリングする必要があるときに

が、私の経験では、古典的なサービス/ DAO /モデル層の分離は、開発時間のトンを節約できます!プレイしてあなたがしているプレイ固有のトランザクション管理に頼るの静的メソッドで立ち往生し、特殊性...

しかし、多くの親指アップのために:!開発スピード、コードのクリーン度、そして最後に...楽しい

私はGrailsの、タペストリー4/5とストレートのJava / JSP /春/休止状態を使用しました。

私は、これは長い時間で初めて正しい方向に向かっていると思います。 Grailsは本当に良い第一歩が、プレイしました!実際に足を持っている可能性が何かのように見えます。 Scalaのサポートは1.1で来ています。私はClojureの中で私のコントローラ/ドメインを書くことができチャンスがあれば、私は売られています;)

は18回の小さなリリース後1年目に見えるバグ以来、我々はプレーを使用します!学校のための生産「欠席」イントラネットアプリケーションで1.2.4(俳優:> 100教師、> 700人の学生、administrativチーム)。クライアント側には、Adobe(非常に美しい景色)からFLEX 4.6で書かれています。データ送信とAMF3形式(シナモンモジュール)で受信されています。私たちは、DBのためのJPAのEclipseLinkとMySQLに基づいて独自の簡単なDAO層を使用しています。アプリケーションは、Linuxの仮想サーバー上に保存されています。私は、そのシンプルさとその非常に生産的なアプローチのためのプレイの非常にファンの開発者です。

Iプレイの外観のような、それを試していません。スキャンからドキュメントを通って外に立っていた一つのことは、静的メソッドを多用しました。ビューのユニットテストの観点から、これは常に物事がはるかに困難(私はモックを考えている)になり、典型的なJava開発におけるOO-どこでもアプローチからの脱却です。多分これはポイントですが、それは少し私を作っただけで何か熱狂...

私は現在、大量のデータ処理を行い、プレイフレームワークを使用して仕事でWebアプリケーションを構築します。私は一人でプレイ申し出がRoRのが提供できるものよりも大きな、より高速であることと言わなければなりません。また、遊びは、Javaベースのフレームワークであり、したがって、マルチスレッドを容易に行うことができます。次はあなたがplay.Itのパフォーマンスのために行うことができます微調整の無限の量等と一緒にJapidや網状のようなJavaベースのモジュールを使用するときに、あなたが得る膨大なパフォーマンスです。私の意見で試す必要があります。

私は小さなプロジェクトでプレイを使用して、彼らはについて言ってきた、まさにのようですよ。複数のデータソースとの仕事に能力(例えば、複数のデータベーススキーマを使用):しかし、一つの特徴は、私は、フレームワークではデフォルトでは存在するようにすべきだと思います。これは私が今まで見つけた唯一欠けている機能です。

よろしく、 Uilianます。

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