web-dev-qa-db-ja.com

GWTの代わりにjQueryを使用する必要があるのはなぜですか?

新しいプロジェクトでは、jQueryとGWTを決定する必要があります。

私はしばらくJavaScriptでプログラミングしていませんでしたが、ここ数日間はGWTを検討していました。しかし、ブラウザごとに異なるJSを生成し、すべてを生成します。

  • Javaでの開発は、jQueryを使用した同じものよりも時間がかかります(少なくともこのプロジェクトでは)
  • ドキュメントが貧弱です(たとえば、ページを設計するときにどの要素を使用する必要があるかをどのように知る必要がありますか?-これに十分なドキュメントがありません)

私はほとんどのプロジェクトでjQueryを使用してきましたが、非常に優れています。

jQueryがこのプロジェクトにより適していることをクライアントに納得させたいので、これをサポートするためにより多くの引数が必要です。

75
BobiYo

JQueryを使用します。

私はかつてGWTプロジェクトを保守していましたが、最終的には2回書き直すことを余儀なくされました。最初はリファクタリングされたGWTアプリ、2番目はJQueryです。

私はJavascriptに長い間真剣に触れていません。前回は2002年頃でした。私はJava開発者なので、GWTの私の第一印象はすごかったです。しかし、それはただの印象でした。

GWTで見つかった問題:

  1. クライアント/サーバー構造に従うように強制します。最終的に、私が望むのはAJAXおよびそれらの優れたウィジェットです。GWTのウィジェット自体は見栄えが良くないようです。見た目はAdobe Flexを好みます! UIはGWTよりも見栄えがよく、さらに、JQueryからのすばらしいテーマローラーのサポートがあります。

  2. DWRを試しました。それは素晴らしい。 AJAXでJava GWTよりもDWRを使用するコードで有効にする方がはるかに簡単です。

  3. GWTを使用している場合、最終的にはJavaScriptの学習を余儀なくされます。 SpringSourceのArjenはかつてXMLについて述べ、SOAP(正確な引用ではありませんが):「XMLを知らずにWebServicesを開発するにはどうすればよいですか?SOAP is XML。あなたはそれを避けることはできません。」GWTでも同じことです。それは結局Javascriptです。

  4. 現実的には、JavascriptはJavaと比べて習得するのが難しくありません。 Javaよりも多くの人がJavascriptを知っています。ウェブデザイナーでさえそれを知っています。あなたはプログラマであり、Javascriptが怖いですか?

  5. 書き直したプロジェクトに戻ります。 GWTアプリケーションを書き直したとき、書き直すのに約2か月かかりました。 JQueryを使用すると2週間かかり、JavaScriptにさびていました。

  6. JQueryを使用すると、ハードコードされたJavaScriptを実際に書くことはありません。そもそもJQueryを使用する理由です。 GWTでコードを保守するのは恐ろしいことです。コードで行った最新の変更を確認します...コンパイルします... GWTを待ちます... 5分...すすぎます...繰り返して、エラーがスローされないことを望みます。存在する場合は、再コンパイルし、さらに5分間待機します。すすぎ、繰り返します。 JQueryで行を変更し、ブラウザーを更新します。できた.

私はここで客観的ではないことを知っていますが、私は自分の経験を共有しているだけです:)道徳はJavascriptを怖がらないでください。 GoogleはとにかくJavascriptを使用します

63
chris

JavaScriptを理解していないが(おそらく)Javaには慣れている人がいるチームにGWTを使用することをお勧めします。 GWTを使用すると、互換性テストで数週間ではないにしても数日節約でき、言語を初めて使用する人が大量に 一般的なJavaScriptの落とし穴 を避けることができます。 GWTには、 CSSスプライト埋め込みデータ 、および more の優れたパッケージング機能もあります。

ただし、JavaScriptを理解している場合は、JavaScriptを使用します。 GWTで生成されたコードを詳しく調べる機会はありませんでしたが、Google I/Oでいくつかの例を確認しました。方法。

56
Justin Johnson

まず、GWTとjQueryを比較するのはあまり意味がありません。 jQueryはクロスブラウザーとDOMの連携をより簡単にするために構築されましたが、GWTは大規模なWebアプリケーションを作成するために構築されます。

したがって、カレンダーやスライダーなどの独立したウィジェットを備えた静的なサイドの束であれば、jQueryで十分です。おそらく大規模なチームで単一ページのアプリを構築したい場合、GWTがより良い方法です。 GWTには、特にMVPパターン、UI-Binderテンプレートシステム、i18nサポートなどのビルドで、内部の多くの優れた設計アーキテクチャがあります。

そのため、JavaScript開発者は大規模なGWTアプリで1年以上作業しているので、jqueryのみを使用して単一ページアプリを作成することはお勧めしません。 JavaScriptを使用する場合は、バックボーン、スパイン、ノックアウト、または道場を見てください。

ところで、GWTアーキテクチャが優れていると、多くのJavaオーバーヘッドが発生します。プロジェクトが成長している場合、cssおよびi18nのプロパティをコンパイルするのは面倒です。

15

「コースの馬」

プロジェクトにとって最も意味のあるものを選択してください。考慮すべき事項

  • タイトなタイムスケールで、一方より他方に精通している
  • 他の開発者が選択したツールを使用する速度と保守性。一方に対する他方の有病率は、ここでも意味を持つ可能性があります
  • プロジェクトで既に使用できるコードがあるプラグイン、ユーティリティ関数など.

プロジェクトが何であるか、あなたの経験が何であるか、そしてクライアントがさまざまなテクノロジー/フレームワークを使用することに対するオープンさについての詳細を知らなければ、ここで決定的な答えはありません。

ここから始めて、プロジェクトに関係する他の人たちと話し合って結論を出すため、一方の説得力のある議論のリストを作成します。

10
Russ Cam

答えは簡単ではありません。答えは「依存する」です。

GWT:

  • javaを知っていて好きなら
  • サーバーコードもJavaで記述されている場合、Javaでクライアントコードを記述すると、クライアントとサーバーで同じコードを使用できるようになります。
  • 強く型付けされた言語が提供するものが好きな場合:コンパイル時の型チェック、自動リファクタリング、自動コード生成(EclipseでCtrl + 1)、コード補完(Ctrl + Space)
  • コンポーネント指向のプログラミングが好きな場合(たとえば、MenuBarはメニューを作成します)
  • (jQueryと比較した)GWTの複雑さが問題にならない場合
  • 大きな生成コードが問題にならない場合

jQuery:

  • javaScriptを知っていて好きなら
  • クライアントとサーバーで同じコードを使用する必要はありません(例:クライアント-JS、サーバー-JavaまたはPHP)
  • コンパイル時の型チェック、自動リファクタリングなどが必要ない場合
  • コンポーネント指向のプログラミングが必要ない場合(jQueryで複雑なコンポーネントを作成するには、一連のdivを作成し、$( "those divs")。makeXXXXControl()を呼び出す必要があります)
  • シンプルが好きな人(jQueryはGWTよりもシンプル)
  • 非常に小さなコードが必要な場合(たとえば、Webサイトの読み込みを高速化するため)

個人的には、ほとんどのプロジェクトにGWTをお勧めしますが、jQueryには長所もあり、jQueryを好む人もいます。

10
iirekm

GWTは抽象化が多すぎると思います。 Javascriptは実際には強力な言語です。オブジェクト指向コードを記述し、名前空間を使用できます。 jQueryのようなライブラリを使用すると、ほとんどの操作でブラウザの互換性の問題を心配する必要がなくなります。すべての主要なブラウザで利用可能なすべての優れたブラウザ開発者ツール(Firebugなど)を使用して、JavaScriptを簡単に操作できるようになりました。 javascriptエラーが発生すると、コード内で発生した場所を簡単に特定できます。 (GWTとは異なり)私が書いたコードに対して作業しているため、変数を監視し、進行中のすべてを詳細に知ることができます。

3
David

GWTとネイティブJavascriptソリューション(jQueryまたはその他)の主な問題は次のとおりです。

  • 最終製品からあなたを分離する追加のプロセスがあります。 Javaでアプリを開発し、Javaコードをデバッグしますが、このコードの機械翻訳バージョンをリリースします。ブラウザーで実行されている実際のコードをデバッグする必要がないことを想像してください。これはコードではないため、頭痛の種になります。

  • Javaでコードを書くので、使用できるのはJavaライブラリに限定されます。お好みのJSライブラリを見つけた場合、それを追加するのは非常に困難です。 GWTプロジェクトにJavaラッパーを記述する必要があります。ネイティブJSを開発している場合は、プロジェクトに追加するだけです。

  • JSはそれ自体が素晴らしい言語であり、Javaとは異なる堅牢なオブジェクトモデルを備えています。私はHP webOSのネイティブJSでいくつかのアプリを開発しましたが、言語についての先入観の多くが真実ではないことを知って驚きました。 Javaの場合と同じように、クリーンで効率的で保守可能なコードをJSで記述できます。JSオブジェクトモデルを理解するのに時間がかかる場合、サポートライブラリを使用してより一般的なクラス/オブジェクトを模倣する必要さえありません。 JavaのようなモデルとJS上のC++。Javascriptのプロトタイプはかなりクールです。

  • モバイルプラットフォームでアプリをリリースすることを検討する場合、ネイティブJSアプリを電話ギャップ内に簡単にラップして、追加の労力なしで複数のモバイルプラットフォームにアクセスできます。 PhoneGap用のGWTラッパーもありますが、最初の項目に戻って、本物で作業する選択肢がある場合、翻訳/エミュレーションを必要とするソリューションを選択する理由は何ですか?

がんばろう。

3
Miguel

Russ Camは、あなたのチームが何に精通しているかに依存することに同意します。個人用ビジネスアプリの仕事をしているときは、GWTを好みます。 jqueryを使用しても、javascriptがオブジェクト指向の構文に迷惑をかけることがわかりました。 10,000行のUIコードを持つアプリがある場合、jqueryを使用すると、再利用が不十分でコードを維持するのが非常に困難になります。

誰かがjqueryで行われた大規模プロジェクトを知っていますか?

結果のファイルサイズからすべての最後のバイトを圧縮しようとしている場合、ライブラリを使用せずにゼロからjavascriptを記述してください(つまり、Googleホームページのフェード効果)。

Javascript/jquery対gwtについて考えること。一般的なオブジェクト指向の原則と設計パターンを使用すると、gwtを使用したコードのパフォーマンスが向上する可能性があります。どうして?

多態性の例を見てみましょう。 JavaScriptで重度のポリモーフィズムを使用するアプリを作成する場合、これが提供する保守性とコードの再利用の利点が得られます。ただし、コードはポリモーフィズムを使用することでパフォーマンスに影響を与えます。

これで、gwtを使用した場合、これが提供する保守性とコード再利用の利点も得られますが、gwtコンパイラーはポリモーフィズムを具体的なクラスの使用に最適化するため、パフォーマンスが向上します。

3
davidjnelson

jQuery =低レベルの理解

通常の1つのjavascriptと他のJavaの説明は別として、Jqueryはjavascriptとのより近い1対1のマッピングを持ち、GWTはより抽象化されています。したがって、低レベル(javascript)のコードで何が起こっているかをより深く理解したい場合は、jqueryが正しい方法です。

GWT =抽象化の理解=機能保証

GWTはコンパイラー生成コードの利点を提供するため、Webサイトが正常に機能することをより確実にすることができます。ただし、大規模なAPIのように、このクラスが何をするのか、そのクラスが何をするのか、このAPIと互換性があるかどうかを理解するのに時間をかける必要があります。

低レベルの理解がより役立つ場合があります

個人的には、自分自身で低レベルをコーディングすることで、はるかに満足しています。完璧に機能する純粋なjavascriptを使用して、いくつかのWebアプリケーションを作成しました。データベースからデータを取得し、完全なMicrosoft Word調査レポートを生成するJavaScriptコードを書いたことがあります。このプロジェクトの複雑さは、javascriptの低レベルの把握を必要としました。これがJavaベースのソリューションで簡単に実行できたかどうかはわかりません。

GWTはマネージャーを安心させるが、コストがかかる

しかし、再度、Javaとasp.netは大企業に好まれる傾向がありますb/cより大きな技術サポート(例:OracleとMicrosoft)があり、堅固なon-the-Edgeマネージャーは夜間によく眠れる傾向があります彼らは、サポートにxドルを支払うだけで問題Aを解決できることを知っています。そのため、システムを採用した後、すぐにテクニカルサポートのコストが高すぎることに気付き始め、優れた開発者に多くを支払う方が安くなります。したがって、Javaまたは.netのキャリアは通常、テーブルに食べ物を置きます。

保守性

また、GWTのようなAPIは保守が簡単です。私のjavascriptコードをデバッグする必要がある場合に誰かが経験する恐怖を想像することしかできませんでした。しかし、それは私がより優れた、よりクリーンなプログラマーになる前であり、コードのあらゆる側面を知っていたため、b/cをデバッグすることは何もありませんでした。

低レベルのコーディングにより、何が起こっているかをほぼ100%理解できますが、APIを使用すると、Googleでバグ探偵をプレイしたり、StackOverflowなどのサイトに質問を投稿したりできます。しかし、マネージャーはこのb/cをほとんど理解しておらず、ほとんどがプログラマーではありません。

2
user922475

すべての素晴らしいヒントとJSNIについて誰も話しませんでした!必要に応じてJavaScriptを使用できるGWTの機能。

https://developers.google.com/web-toolkit/doc/latest/DevGuideCodingBasicsJSNI

2
Sib

GWTはコンパイラー(JavaからJavaScript)であり、jQueryはフレームワークです。どちらかを選択する必要はありません。両方を使用することも、どちらも使用しないこともできます。

たとえば、Java既存のソースコードが必要な場合、または他のソースコードにjQueryを使用する場合は、コードを記述できます。ラッパーはありますが、GWTはJavaScriptを呼び出すことができます。 http://svenbuschbeck.net/wordpress/2012/06/how-to-use-jquery-in-gwt/

1
liftarn

私の個人的な意見はjQueryに対するものですが、それはJavaを使用せず、jQueryプラグインの使用が本当に好きだからです。

0
AutomatedTester

アクティブなユーザーグループと最近の人気の高まりは、jQueryが勝者であることを明確に示しています。

0
rajakvk