WebView具有内置的javascript引擎。它使用什么引擎?openjdk和oracle jdk是否相同?可以像JSR 223引擎那样与WebView分开使用吗?
Oracle JRE中的JavaScript运行时
完整的Oracle Java Runtime 8附带两个JavaScript引擎:
WebView和JavaFX应用程序使用的JavaScript运行时
JavaFX Webkit不使用Nashorn,它使用JavaScriptCore。
您可以使用Nashorn来编程JavaFX应用程序和API(作为Java编程的替代方法),并且可以将Nashorn用作JavaFX FXML文档的JavaFX脚本引擎,但是不能在WebView中将Nashorn用作JavaScript引擎。
背景源信息
有一些在WebView中的JavaScript实现信息通过JavaFX的邮件列表上的JavaFX的开发商提供。引用Oracle JavaFX开发人员Richard Bair(后者引用WebKit开发人员Olivier Hunt):
出色地…。它是这样的。WebKit默认情况下带有JavaScriptCore,这是我们使用的JS引擎。很好 我的理解是JavaScriptCore(aka SquirrelFish aka Nitro)与Safari使用的JS引擎相同。当Chrome和Apple都是WebKit的一部分时,Google放入WebKit的抽象层之一就是交换JavaScript引擎的能力。当Google将WebKit分支到Blink中时,对WebKit项目具有对另一个JS VM的抽象的需求就消失了。结果,WebKit的家伙一直在讨论删除那些抽象,这样您就不能换掉JS引擎,[更多信息]。如果/当发生这种情况时,将很难(或不可能)切换到Nashorn for WebView。我们不会派发WebKit,因此我们必须遵循WebKit的功能。
“支持V8给webkit带来了相当大的负担,支持多个JS引擎需要大量,繁琐和昂贵的抽象(请参阅许多年前对该主题的原始讨论)。
另外,我们将仅在WebKit2中支持JSC,因此,我认为没有任何理由至少可以说服我,保持对多个JS引擎的支持对该项目是有利的。”-Oliver Hunt
免责声明
这个答案仅与Oracle Java 8版本有关;备用和将来的JavaFX和Java实现可能具有不同的内部实现。
可以像JSR 223引擎那样与WebView分开使用吗?
WebView中的JavaScriptCore不能作为JSR 223引擎与WebView分开使用(据我所知)。
我认为最好将支持WebView的JavaScriptCore实现视为WebView组件的内部实现细节,而不是将JavaScript实现视为要在其他地方使用的通用JavaScript运行时。它不是WebView特定用途之外的官方支持组件,并且在其中使用时,公共WebView API使您无法使用它所使用的JavaScript运行时的实现细节:这样,对于用户来说,它是故意不透明的实际上用于在WebView组件内执行JavaScript。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句