36

HTML5 UIとJavaバックエンドがあり、プレーンJavaでHTML UIを再構築することを避けたいので、ローカルWebサーバーを実行し、Webビューを使用して「ネイティブ」ウィンドウでレンダリングすることを考えました。解決策は、swingに埋め込むことができるJavaFXWebViewを使用することのようです。紙の上では、それは素晴らしいように聞こえます(特に、Chrome / SafariのUIのパフォーマンスが大幅に向上したWebKitを使用していると主張しているため)。

それは動作しますが、パフォーマンスは信じられないほど悪いです。Chrome、Safari(またはさらに遅いFirefox)の同じものよりも桁違いに遅くなります。文字通り使用できません(私のUIはJQuery / JSをかなり多用しています)。ところで、私はこの投稿のコードを使用しています。

質問は:

  1. 誰かが私の経験を二番目にすることはできますか?私は単に何か間違ったことをしているのですか、それともこれはJavaFXが原因であり、したがって「正常」ですか?

  2. これを達成するためのより良いアイデアはありますか?私は現在、動作するシステムブラウザを起動しているだけですが、それほど良くはありません(統合されているようには見えません)。 

4

5 に答える 5

46

私は WebView をかなり使用してきましたが、通常、パフォーマンスは完全に良好で、非常に使いやすいものでした。

  • Html5 への準拠は良好です。
  • JavaScript のパフォーマンスはさまざまですが、Google の V8 ベンチマーク (Chrome はおそらくこれに対して調整されている) によると、最近のバージョンの Chrome の速度の約 3 分の 1 であることがわかりました。
  • レンダリングのパフォーマンスはあまり問題にならなかったようです。
  • Chrome 実験ライブラリの一部など、非常に集中的な HTML Web アプリケーションは、他の一部のブラウザほど速く起動しませんでした。
  • WebGL はサポートされていないため、WebGL からのグラフィックのソフトウェア レンダリングにフォールバックするサイトは非常に遅くなります。

私が WebView で抱えていた最大の問題は、最先端の機能や集中的な使用に対して他のブラウザーほど安定していないことですが、実際には深刻なパフォーマンスの問題はありません.

いくつかのベンチマーク統計を次に示します (使用された WebView バージョンは、JavaFX 2.2 ビルド 9 から取得されました)。

コンプライアンス

html5 コンプライアンスをテストするためのhtml5テストの実行(500 点満点):

クロム 19 402 + 13 ボーナス ポイント
Firefox 12 345 + 9 ボーナス ポイント
WebView 2.2b9 296 + 7 ボーナス ポイント
IE 9.0.6 138 + 5 ボーナス ポイント

acid3テストを実行すると、webview のスコアは他のテスト ブラウザーと同じ 100/100 ですが、IE9 と同様に、最終的なレンダリングにはわずかな不完全性があります。

Javascript

Sunspider Javascript ベンチマーク (低いほど良い):

IE 9.0.6 146.7 ミリ秒
クロム 19 151.5ms
Firefox 12 185.8ms
WebView 2.2b9 199.5ms

Google V8 Javascript ベンチマーク (高いほど良い):

クロム 19 15323
Firefox 12 9557
WebView 2.2b9 5145
IE 9.0.6 3661

Mozilla Kraken Javascript ベンチマーク (低いほど良い):

クロム 19 2416.8ms
Firefox 12 2112.9ms
WebView 2.2b9 7988.9ms
IE 9.0.6 9403.0ms

インテンシブ キャンバス

回転する 3D ブッダ(高いほど良い):

クローム19 60fps
ファイアフォックス12 43fps
IE9.0.6 16fps
WebView 2.2b9 7fps

JQuery

JQuery テスト スイートの実行 (低いほど良い):

クロム 19 21826ms
WebView 2.2b9 22742ms
Firefox 12 23554ms
IE 9.0.6 28247 ミリ秒

上記のベンチマーク (Windows 7 デスクトップで実行) に基づくと、WebView が安定しており、十分に機能している限り、WebView と他のブラウザーのパフォーマンスは問題になりません (アプリに多くの機能がない限り)。 3D 回転仏 . . . :-)。

アップデート

utaの回答が述べているように、JavaFX 2.2のWin 32ビットビルドではJavaScript JITコンパイラがオンになり、JavaFX 2.2のWin 64ビットビルドではオフになります。これは、64 ビット JavaFX バージョンと 32 ビット JavaFX バージョンを実行すると、WebView JavaScript ベンチマークが大幅に遅くなる (通常は 4 ~ 5 倍遅い) ことを意味します。

于 2012-05-26T02:56:07.950 に答える
8

JavaScript JITは、WebNode forWindowsx64ではオフになっています。それがあなたの問題の原因かもしれません。

于 2012-07-25T12:25:21.330 に答える
6

また、Web サイト ( https://mdemo.cqg.com )で JavaFX WebView のパフォーマンスの低下 (遅さ、再描画の問題) が発生しました。グーグルで調べた後、トピックIntegrating JavaFX 2.0 WebView into a Swing Java SE 6 Applicationに出会いました。回答の中には、 Java 用の Chromium ベースの Swing/JavaFX コンポーネントであるJxBrowser ( http://www.teamdev.com/jxbrowser ) を使用する提案があります。サイト用に作ってみました。サイトのパフォーマンスは良好でした -- 速度低下や再描画の問題 (元の WebView で発生) はありません。

于 2015-06-18T15:45:25.950 に答える
5

この状況にいるのはあなただけではありません。私はまだウェブビューとグーグルマップに問題があります。以下のリンクをご覧ください。今のところ、私はあなたに何の答えも持っていません。とても不愉快です...

私の投稿の例: - https://community.oracle.com/message/12356161

可能であれば、これに賛成票を投じてください: - https://javafx-jira.kenai.com/browse/RT-33217

于 2014-04-04T12:09:20.643 に答える
4

JavaFX webView が遅く見える理由の 1 つは、Web ブラウザーとは異なり、何もキャッシュしないためです。これは実装する必要があります。

于 2013-07-29T07:03:04.667 に答える