0

私はGWTの実装JREライブラリエミュレーションテクノロジーに興味があります。

GWTはJavaライブラリをどのようにエミュレートしますか?

JavaScriptでHashMapをどの程度効果的に実装しましたか?純粋なJavaScriptで実装されていますか、それともコードで使用されている場合はJavaソースとしてコンパイルされていますか?

開発(ホスト)モードのgwt-devライブラリにいくつかの実装が存在することを理解しています。プロダクションコードの実装は同じですか?

4

2 に答える 2

4

エミュレートされたJREライブラリはここで確認できます。それらのほとんどについて、GWTは対応するJavaScriptを使用しますが、GWTが独自のJavaScript実装バージョンを持っている場合があります。

HashMapsの場合、組み込みのJavaScriptバージョンは文字列->値マップのみを提供するため、GWTはオブジェクト->オブジェクトマップをサポートする独自の実装を使用します。詳細については、こちらをご覧ください。

また、本番(コンパイル済み)モードと開発モード(デバッグ)の違いを理解するには、「コンパイルとデバッグ」セクションを確認してください。

于 2012-10-16T15:57:17.517 に答える
2

コードをオンラインで閲覧できます。たとえば、HashMap、またはもっと興味深いことにAbstractHashMapです。ご覧のとおり、いくつかのJSNIメソッド(nativeキーワードと/*-{ ... }-*/構文を持つメソッド)があります。ただし、エミュレーションコードの多くのメソッドは、JSNIメソッドの上に構築されています。これらは「高レベル」のJavaメソッドとして記述されています。

このエミュレーションコードは、独自に作成するのと同じように、実際には単純なGWTコードです(ただし、もちろん、JSNIコードの割合は統計的に高くなっています)。そして、<super-source>このメカニズムを使用します。このように、同じクラスのクライアントコードは、開発モードと本番モードで異なる場合があります。

于 2012-10-16T19:05:33.033 に答える