我有一个HTML5 UI和一个Java后端,并希望避免在纯Java中重建HTMLui,所以我的想法是运行一个本地Web服务器,并使用WebView在“本机”窗口中呈现它。解决方案似乎是使用可以嵌入到swing中的JavaFXWebView。在纸上听起来很不错(尤其是因为他们声称使用WebKit,对于我在Chrome /Safari中的UI而言,它的性能要好得多)。
它有效,但是:性能令人难以置信。比Chrome,Safari(甚至更慢的Firefox)中的同一个对象慢几个数量级。这实际上是不可用的(我的UI大量使用了JQuery/JS)。顺便说一句,我使用从代码这个职位。
问题是:
有人可以支持我的经验吗?我是在做错什么,还是这是JavaFX造成的,因此是“正常”的?
有什么更好的主意如何实现这一目标?我目前只是在启动系统浏览器,该浏览器可以运行,但是效果不佳(看起来不像集成的那样)。
我已经使用WebView了很多,通常性能非常好并且非常有用。
我对WebView的最大问题是,它对尖端功能和广泛使用的稳定性不如其他浏览器稳定,但实际上并没有任何严重的性能问题。
以下是一些基准统计数据(所使用的WebView版本来自JavaFX 2.2 build 9):
合规
运行html5测试以测试html5符合性(满分为500):
Chrome 19402 + 13奖励积分
Firefox 12345 + 9奖励积分
WebView 2.2b9 296 + 7奖励积分
IE 9.0.6 138 + 5奖励积分
运行acid3测试,Webview与其他测试浏览器的得分相同,为100/100,但是,与IE9一样,最终呈现效果略有缺陷。
Java脚本
Sunspider
Javascript基准测试(越低越好):
IE 9.0.6 146.7毫秒
Chrome 19 151.5毫秒
Firefox 12 185.8ms
WebView 2.2b9 199.5毫秒
GoogleV8
Javascript基准测试(越高越好):
铬19 15323
的Firefox 12 9557
网页浏览器2.2b9 5145
IE 9.0.6 3661
Mozilla Kraken
Javascript基准测试(越低越好):
Chrome 19 2416.8ms
Firefox 12 2112.9ms
WebView 2.2b9 7988.9毫秒
IE 9.0.6 9403.0毫秒
密集帆布
旋转3D佛(越高越好):
Chrome 19 60fps
Firefox 12 43fps
IE 9.0.6 16帧/秒
WebView 2.2b9 7帧/秒
jQuery查询
jQuery测试套件执行(越低越好):
Chrome 19 21826ms
WebView 2.2b9 22742毫秒
Firefox 12 23554ms
IE 9.0.6 28247毫秒
根据上述基准(在Windows7桌面上运行),只要WebView对您来说足够稳定和功能正常,那么WebView与其他浏览器的性能就不会成为问题(只要您的应用程序没有很多功能,3D旋转佛.... :-)。
更新资料
正如uta的回答所言,对于JavaFX 2.2的Win 32位版本,JavaScript JIT编译器已打开;对于JavaFX 2.2 的Win
64位版本,JavaScriptJIT编译器已关闭。这意味着与运行32位JavaFX版本相比,运行64位JavaFX版本时,WebView
JavaScript基准测试明显慢得多(通常慢4至5倍)。
我正在自己学习Oracle的JavaFX教程。在做了很多年(很久以前)之后,我对Swing的新智能功能非常着迷,包括。属性。我惊讶地发现,这些示例(例如:https://docs.oracle.com/javafx/2/ui_controls/table-view.htm)并没有以我认为“正确”的方式使用它们。 该示例创建一个类,其属性为字段: 但是getter不是用于属性,而是用于它们的值
我现在正在使用JavaFX,我正在跟随一个教程来学习Java的这一部分。不过,我有一个关于属性的问题: 如何正确处理JavaFX中的派生属性? 让我以一个例子来澄清。假设您有一个具有简单属性的模型: null 但是,表视图不接受整数,而只接受可观察的整数。如果有人更改用户的生日,我希望表自动更改。 我可以在中创建,但我不认为这是一个解决方案。我还可以在类中创建一个名为的,但我听起来不太对,因为ag
我是JavaFx新手。我设计了一个table thorugh scenebuilder,其中第1列有一个按钮,第2列有一个复选框。单击按钮时,我希望获得checkbox属性的内容。但问题是,我的输出总是错误的。这是我的密码 模型JAVA 在我的控制器类中,我按照以下方式设计了initialize()方法 控制器。JAVA 这里是
主要内容:JavaFX属性的类型,读/可写属性,只读属性,JavaFX JavaBean,属性更改事件JavaFX属性存储控件的内部状态,并允许我们监听来自JavaFX UI控件的状态更改。JavaFX属性可以彼此绑定。绑定行为允许属性根据来自另一个属性的更改值来同步其值。 JavaFX属性的类型 有两种类型的JavaFX属性: 读写(Read/Writable) 只读(Read-Only) JavaFX的属性包含实际值,并提供更改支持,无效支持和绑定功能。所有JavaFX属性类都位于包命名空间
我一直在努力提高JavaFX中线形图的性能,但没有取得很大的成功。我还发现,这似乎是一些程序员在试图显示大数据时发现的一个常见问题(big在这里代表数据大小 好吧,我在stackoverflow中发现了两个帖子,其中有一个类似的问题,即具有65000个数据点的JavaFX LineChart和JavaFX LineChart-绘图数组的性能问题。主题具有65000个数据点的JavaFX LineC
我试图将Lombok与JavaFX属性结合使用: 这将为属性本身生成getter和setter: null getID():int 集合id(int id) GetIdProperty():SimpleIntegerProperty getName():string setName(字符串名称) GetNameProperty():SimpleStringProperty ... 这在龙目岛支持吗