新しいプロジェクトでは、jQueryとGWTを決定する必要があります。
私はしばらくJavaScriptでプログラミングしていませんでしたが、ここ数日間はGWTを検討していました。しかし、ブラウザごとに異なるJSを生成し、すべてを生成します。
私はほとんどのプロジェクトでjQueryを使用してきましたが、非常に優れています。
jQueryがこのプロジェクトにより適していることをクライアントに納得させたいので、これをサポートするためにより多くの引数が必要です。
JQueryを使用します。
私はかつてGWTプロジェクトを保守していましたが、最終的には2回書き直すことを余儀なくされました。最初はリファクタリングされたGWTアプリ、2番目はJQueryです。
私はJavascriptに長い間真剣に触れていません。前回は2002年頃でした。私はJava開発者なので、GWTの私の第一印象はすごかったです。しかし、それはただの印象でした。
GWTで見つかった問題:
クライアント/サーバー構造に従うように強制します。最終的に、私が望むのはAJAXおよびそれらの優れたウィジェットです。GWTのウィジェット自体は見栄えが良くないようです。見た目はAdobe Flexを好みます! UIはGWTよりも見栄えがよく、さらに、JQueryからのすばらしいテーマローラーのサポートがあります。
DWRを試しました。それは素晴らしい。 AJAXでJava GWTよりもDWRを使用するコードで有効にする方がはるかに簡単です。
GWTを使用している場合、最終的にはJavaScriptの学習を余儀なくされます。 SpringSourceのArjenはかつてXMLについて述べ、SOAP(正確な引用ではありませんが):「XMLを知らずにWebServicesを開発するにはどうすればよいですか?SOAP is XML。あなたはそれを避けることはできません。」GWTでも同じことです。それは結局Javascriptです。
現実的には、JavascriptはJavaと比べて習得するのが難しくありません。 Javaよりも多くの人がJavascriptを知っています。ウェブデザイナーでさえそれを知っています。あなたはプログラマであり、Javascriptが怖いですか?
書き直したプロジェクトに戻ります。 GWTアプリケーションを書き直したとき、書き直すのに約2か月かかりました。 JQueryを使用すると2週間かかり、JavaScriptにさびていました。
JQueryを使用すると、ハードコードされたJavaScriptを実際に書くことはありません。そもそもJQueryを使用する理由です。 GWTでコードを保守するのは恐ろしいことです。コードで行った最新の変更を確認します...コンパイルします... GWTを待ちます... 5分...すすぎます...繰り返して、エラーがスローされないことを望みます。存在する場合は、再コンパイルし、さらに5分間待機します。すすぎ、繰り返します。 JQueryで行を変更し、ブラウザーを更新します。できた.
私はここで客観的ではないことを知っていますが、私は自分の経験を共有しているだけです:)道徳はJavascriptを怖がらないでください。 GoogleはとにかくJavascriptを使用します
JavaScriptを理解していないが(おそらく)Javaには慣れている人がいるチームにGWTを使用することをお勧めします。 GWTを使用すると、互換性テストで数週間ではないにしても数日節約でき、言語を初めて使用する人が大量に 一般的なJavaScriptの落とし穴 を避けることができます。 GWTには、 CSSスプライト 、 埋め込みデータ 、および more の優れたパッケージング機能もあります。
ただし、JavaScriptを理解している場合は、JavaScriptを使用します。 GWTで生成されたコードを詳しく調べる機会はありませんでしたが、Google I/Oでいくつかの例を確認しました。方法。
まず、GWTとjQueryを比較するのはあまり意味がありません。 jQueryはクロスブラウザーとDOMの連携をより簡単にするために構築されましたが、GWTは大規模なWebアプリケーションを作成するために構築されます。
したがって、カレンダーやスライダーなどの独立したウィジェットを備えた静的なサイドの束であれば、jQueryで十分です。おそらく大規模なチームで単一ページのアプリを構築したい場合、GWTがより良い方法です。 GWTには、特にMVPパターン、UI-Binderテンプレートシステム、i18nサポートなどのビルドで、内部の多くの優れた設計アーキテクチャがあります。
そのため、JavaScript開発者は大規模なGWTアプリで1年以上作業しているので、jqueryのみを使用して単一ページアプリを作成することはお勧めしません。 JavaScriptを使用する場合は、バックボーン、スパイン、ノックアウト、または道場を見てください。
ところで、GWTアーキテクチャが優れていると、多くのJavaオーバーヘッドが発生します。プロジェクトが成長している場合、cssおよびi18nのプロパティをコンパイルするのは面倒です。
「コースの馬」
プロジェクトにとって最も意味のあるものを選択してください。考慮すべき事項
プロジェクトが何であるか、あなたの経験が何であるか、そしてクライアントがさまざまなテクノロジー/フレームワークを使用することに対するオープンさについての詳細を知らなければ、ここで決定的な答えはありません。
ここから始めて、プロジェクトに関係する他の人たちと話し合って結論を出すため、一方の説得力のある議論のリストを作成します。
答えは簡単ではありません。答えは「依存する」です。
GWT:
jQuery:
個人的には、ほとんどのプロジェクトにGWTをお勧めしますが、jQueryには長所もあり、jQueryを好む人もいます。
GWTは抽象化が多すぎると思います。 Javascriptは実際には強力な言語です。オブジェクト指向コードを記述し、名前空間を使用できます。 jQueryのようなライブラリを使用すると、ほとんどの操作でブラウザの互換性の問題を心配する必要がなくなります。すべての主要なブラウザで利用可能なすべての優れたブラウザ開発者ツール(Firebugなど)を使用して、JavaScriptを簡単に操作できるようになりました。 javascriptエラーが発生すると、コード内で発生した場所を簡単に特定できます。 (GWTとは異なり)私が書いたコードに対して作業しているため、変数を監視し、進行中のすべてを詳細に知ることができます。
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ラッパーもありますが、最初の項目に戻って、本物で作業する選択肢がある場合、翻訳/エミュレーションを必要とするソリューションを選択する理由は何ですか?
がんばろう。
Russ Camは、あなたのチームが何に精通しているかに依存することに同意します。個人用ビジネスアプリの仕事をしているときは、GWTを好みます。 jqueryを使用しても、javascriptがオブジェクト指向の構文に迷惑をかけることがわかりました。 10,000行のUIコードを持つアプリがある場合、jqueryを使用すると、再利用が不十分でコードを維持するのが非常に困難になります。
誰かがjqueryで行われた大規模プロジェクトを知っていますか?
結果のファイルサイズからすべての最後のバイトを圧縮しようとしている場合、ライブラリを使用せずにゼロからjavascriptを記述してください(つまり、Googleホームページのフェード効果)。
Javascript/jquery対gwtについて考えること。一般的なオブジェクト指向の原則と設計パターンを使用すると、gwtを使用したコードのパフォーマンスが向上する可能性があります。どうして?
多態性の例を見てみましょう。 JavaScriptで重度のポリモーフィズムを使用するアプリを作成する場合、これが提供する保守性とコードの再利用の利点が得られます。ただし、コードはポリモーフィズムを使用することでパフォーマンスに影響を与えます。
これで、gwtを使用した場合、これが提供する保守性とコード再利用の利点も得られますが、gwtコンパイラーはポリモーフィズムを具体的なクラスの使用に最適化するため、パフォーマンスが向上します。
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をほとんど理解しておらず、ほとんどがプログラマーではありません。
すべての素晴らしいヒントとJSNIについて誰も話しませんでした!必要に応じてJavaScriptを使用できるGWTの機能。
https://developers.google.com/web-toolkit/doc/latest/DevGuideCodingBasicsJSNI
GWTはコンパイラー(JavaからJavaScript)であり、jQueryはフレームワークです。どちらかを選択する必要はありません。両方を使用することも、どちらも使用しないこともできます。
たとえば、Java既存のソースコードが必要な場合、または他のソースコードにjQueryを使用する場合は、コードを記述できます。ラッパーはありますが、GWTはJavaScriptを呼び出すことができます。 http://svenbuschbeck.net/wordpress/2012/06/how-to-use-jquery-in-gwt/
私の個人的な意見はjQueryに対するものですが、それはJavaを使用せず、jQueryプラグインの使用が本当に好きだからです。
アクティブなユーザーグループと最近の人気の高まりは、jQueryが勝者であることを明確に示しています。