2012-02-14 4 views
4

私はGWTの使用に深刻な疑念を持っています。 GWTは、クライアントコードがJavaScriptとHTMLにコンパイルされていると主張していますが、コードをコンパイルした後も、プロジェクトのクライアントコードの.classファイルを見ています。もちろん、私はWEB-INFディレクトリにいくつかのjsとhtmlファイルを持っていますが、Javaクライアントコードがjsとhtmlに完全にコンパイルされていると、なぜプロジェクトに.classファイルがあるのでしょうか?GWTは実際にクライアントコードをJavaScriptとHTMLにコンパイルしていますか?

+0

アプリケーションがサーバーにRPC呼び出しを行う場合、あなたの* 'server' *コードはまだコンパイルされたJavaクラスファイルです。クライアントサイドコードのみがjavascriptにコンパイルされます。 – Strelok

+1

.classファイルは愚かなEclipseのせいで、目を覚ます可能性のあるJavaファイルを無意識にコンパイルするためです。 RPCまたはRequestFactoryクラスのサーバー側でない限り、それらは無用です。 –

答えて

4

GWTがわかっている場合、これは非常に簡単です。ウィキペディアによると:

GWTアプリケーションは、2つのモードで実行できます。

  • 開発モード(旧ホストモード):アプリケーションはJava仮想マシン内のJavaバイトコードとして実行される(JVM )。このモード は通常、コード のホットスワッピングとデバッグをサポートする開発に使用されます。
  • 生産モード(以前のウェブモード):アプリケーションは、Javaソースからコンパイルされた純粋なJavaScriptとHTMLとして実行されます。通常、このモードは です。

私はあなたがJavaバイトコードファイル(.classファイル)を見ているなぜあなたはあなたのプロジェクトである理解だと思います。これを確認するには、プロジェクトを開始し、gwtによって生成されたWebページを開き、クライアントパッケージから.classファイルを削除しても機能しません。しかし、プロダクションモードではいくつかの.classファイルに依存しないので正しく動作します。たとえば、UIを構築するクラスです。

+0

唯一の例外はサーバークラスで、クラスは両方に共通して役立ちます(サーバーによっても必要です)。どちらの場合も、サーバーJVMは実際にクラスをロードするため、コンパイルする必要があります。 –

+0

@ColinAlworthそれはいくつかの.classに依存しないと言って、私は例えばMyModuleEntryPointのようなUIを構築する責任があるクラスを意味するので、コンパイルされたjsとhtmlが動作するクラスはありません。 –

+0

うん、クライアントパッケージ内のすべての.classファイルを削除すると、何らかの破損が起こる可能性があることを明確にしたい。 –

0

GAEにデプロイすると、ディレクトリ "WAR"が表示されます。このWARはサーバーにデプロイされ、クライアント側コード用の純粋なJS + HTMLコードを持っています。

関連する問題