1

以下のリンクから、GWT がクライアント側で次のパッケージのクラスまたはメソッドのサブセットのみをサポートしていることがわかりました。

java.lang
java.lang.annotation
java.util
java.io
java.sql

https://developers.google.com/web-toolkit/doc/1.6/RefJreEmulation#Package_java_lang

なぜそうなのですか?私はGWTクライアントのみを使用し、サーバーの代わりにREST Webサービスを使用しているため、開発でより多くの問題が発生すると思います.

上記のパッケージのすべてのクラスとメソッドを使用するためのgwtxのような jar の新しいリリース (永続性、注釈などをサポートするための新しいリリース) はありますか。私の主な疑問は、なぜ彼らがすべてをサポートしていないのかということです?

4

1 に答える 1

9

Java から JavaScript への変換をサポートするには、すべての標準クラスエミュレートする必要があります。つまり、GWT コンパイラが JavaScript への変換方法を認識できるように再作成する必要があります。ArrayListたとえば、 JavaScript に基づいておりArray、メソッドは JavaScriptのString上でエミュレートする必要がありますString

また、エミュレートできないものもあります (ファイル、ソケット)。エミュレートされたバージョンは、技術的には可能ですが、ブラウザー API のより直接的なマッピングよりもはるかにパフォーマンスが低く、GWT はパフォーマンス (GWTx などのサードパーティ ライブラリ必要に応じてそのようなエミュレーションを提供できます)互換性以上のものです(言語として Java を選択したのは主にツールを活用するためであり、既存のライブラリの再利用を可能にする互換性レイヤーを提供するためではありません)。

最後に、リフレクションはサポートされていません。これは、コンパイラがデッド コードを削除してすべての最適化を行うことが不可能になるためです。特定のクラス、フィールド、またはメソッドが、直接呼び出しではなくリフレクションによって実際に使用されていないことをどのように知るのでしょうか?

于 2013-02-05T12:29:56.257 に答える