JavaFX中WebView的性能

Dan*_*iel 34 java performance swing javafx webview

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

它有效,但是:性能难以置信.在Chrome,Safari(甚至是速度较慢的Firefox)中,数量级比同样的速度慢.它几乎无法使用(我的UI大量使用JQuery/JS).顺便说一句,我正在使用这篇文章中的代码.

问题是:

  1. 任何人都可以介绍我的经验吗?我只是做错了什么或者这是由JavaFX引起的,因此"正常"?

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

jew*_*sea 45

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

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

我使用WebView时遇到的最大问题是它不像其他浏览器那样对于尖端功能和密集使用不太稳定,但实际上并没有任何严重的性能问题.

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

合规

运行html5测试以测试html5合规性(分数超过500):

Chrome 19      402 + 13 bonus points
Firefox 12     345 +  9 bonus points
WebView 2.2b9  296 +  7 bonus points 
IE 9.0.6       138 +  5 bonus points

运行acid3测试,webview得分与其他测试浏览器相同100/100,但是,与IE9一样,最终渲染有一点点不完美.

使用Javascript

Sunspider Javascript基准测试(越低越好):

IE 9.0.6       146.7ms 
Chrome 19      151.5ms
Firefox 12     185.8ms
WebView 2.2b9  199.5ms 

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

Chrome 19      15323
Firefox 12     9557
WebView 2.2b9  5145
IE 9.0.6       3661

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

Chrome 19      2416.8ms
Firefox 12     2112.9ms
WebView 2.2b9  7988.9ms
IE 9.0.6       9403.0ms

密集画布

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

Chrome 19      60fps
Firefox 12     43fps
IE 9.0.6       16fps
WebView 2.2b9  7fps

JQuery的

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

Chrome 19      21826ms
WebView 2.2b9  22742ms
Firefox 12     23554ms
IE 9.0.6       28247ms

基于上述基准测试(在我的Windows 7桌面上运行),只要WebView稳定且功能足够您,那么WebView与其他浏览器的性能不应成为问题(只要您的应用程序不具备大量功能) 3D旋转佛...... :-).

更新

正如uta的回答所述,JavaScript JIT编译器在JavaFX 2.2的Win 32位版本中打开,在JavaFX 2.2 的Win 64位版本中启用.这意味着在运行64位JavaFX版本与32位JavaFX版本时,WebView JavaScript基准测试速度要慢得多(通常慢4到5倍).


小智 8

JavaScript JIT在WebNode for Windows x64中关闭.这可能是您遇到问题的原因.

  • 这仍然是这样吗? (2认同)

Sta*_*kov 6

我的网站(https://mdemo.cqg.com)也遇到了JavaFX WebView性能不佳(缓慢,重新绘制问题).经过一些谷歌搜索后,我遇到了将JavaFX 2.0 WebView集成到Swing Java SE 6应用程序中的主题.在这些答案中,有一个建议使用JxBrowser(http://www.teamdev.com/jxbrowser) - 基于Chromium的Swing/JavaFX组件用于Java.我为我的网站试过了.网站表现良好 - 没有缓慢或重绘问题(在原始WebView中发生).


flo*_*710 5

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

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

如果可以的话,请提出以下建议: - https://javafx-jira.kenai.com/browse/RT-33217