36

我有一个 HTML5 UI 和一个 Java 后端,并且希望避免在纯 Java 中重建 HTML ui,所以我的想法是运行本地网络服务器并使用 webview 在“本机”窗口中呈现它。解决方案似乎是使用可以嵌入到 swing 中的 JavaFX WebView。在纸上听起来很棒(特别是因为他们声称使用 WebKit,它在 Chrome / Safari 中对我的 UI 具有明显更好的性能)。

它有效,但是:性能非常糟糕。比 Chrome、Safari(甚至更慢的 Firefox)中的相同速度慢几个数量级。它实际上是不可用的(我的 UI 大量使用了 JQuery / JS)。顺便说一句,我正在使用这篇文章中的代码。

问题是:

  1. 有人可以支持我的经验吗?我只是做错了什么还是这是由JavaFX引起的,因此是“正常的”?

  2. 任何更好的想法如何实现这一目标?我目前只是启动系统浏览器,它可以工作但不是很好(看起来不像集成的)。 

4

5 回答 5

46

我已经使用了很多 WebView,通常性能非常好并且非常有用。

  • Html5 合规性很好。
  • JavaScript 性能各不相同,但根据 Google 的 V8 基准测试(Chrome 可能针对该基准进行了调整),我发现它的速度大约是最新版 Chrome 的三分之一。
  • 渲染性能似乎不是什么大问题。
  • 非常密集的 HTML Web 应用程序(例如 Chrome 实验库中的一些应用程序)的启动速度不如其他一些浏览器快。
  • 不支持 WebGL,因此使用 WebGL 图形软件渲染的网站要慢得多。

我在使用 WebView 时遇到的最大问题是,它在尖端功能和密集使用方面不如其他浏览器那么稳定,但实际上并没有任何严重的性能问题。

以下是一些基准统计数据(使用的 WebView 版本来自 JavaFX 2.2 build 9):

遵守

运行html5测试以测试 html5 合规性(得分为 500):

Chrome 19 402 + 13 积分
火狐 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.7ms
铬 19 151.5 毫秒
火狐 12 185.8 毫秒
WebView 2.2b9 199.5ms

Google V8 Javascript 基准测试(越高越好):

铬 19 15323
火狐 12 9557
网络视图 2.2b9 5145
即 9.0.6 3661

Mozilla Kraken Javascript 基准测试(越低越好):

铬 19 2416.8ms
火狐12 2112.9ms
WebView 2.2b9 7988.9ms
IE 9.0.6 9403.0ms

密集帆布

旋转3D 佛像(越高越好):

铬 19 60fps
火狐12 43fps
IE 9.0.6 16fps
WebView 2.2b9 7fps

jQuery

JQuery 测试套件执行(越低越好):

铬 19 21826 毫秒
WebView 2.2b9 22742ms
火狐 12 23554 毫秒
IE 9.0.6 28247ms

基于上述基准(在我的 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 在 Windows x64 的 WebNode 中已关闭。这可能是您的问题的原因。

于 2012-07-25T12:25:21.330 回答
6

我的网站(https://mdemo.cqg.com )也遇到了 JavaFX WebView 性能不佳(缓慢、重绘问题)。经过一番谷歌搜索后,我遇到了Integrating JavaFX 2.0 WebView into a Swing Java SE 6 Application主题。在答案中,有一个建议使用 JxBrowser ( http://www.teamdev.com/jxbrowser )——用于 Java 的基于 Chromium 的 Swing/JavaFX 组件。我为我的网站尝试过。网站表现良好——没有缓慢或重绘问题(在原始 WebView 中发生)。

于 2015-06-18T15:45:25.950 回答
5

在这种情况下,您并不孤单。我仍然对 webview 和谷歌地图有问题。你可以看到下面的链接。目前我没有任何答案给你,我知道这很不愉快......

我的帖子的一些例子: - https://community.oracle.com/message/12356161

如果可以的话,请投票: - https://javafx-jira.kenai.com/browse/RT-33217

于 2014-04-04T12:09:20.643 回答
4

JavaFX webView 看起来速度较慢的一个原因是,与 Web 浏览器不同,它不缓存任何内容。这是必须执行的。

于 2013-07-29T07:03:04.667 回答