2015-05-07 51 views

回答

19

的JavaScript運行時在Oracle JRE

完整的Oracle Java運行時8個附帶兩個JavaScript引擎:

  1. Nashorn:「犀牛的目標是實現一個輕量級的高性能JavaScript運行在這個項目旨在讓Java開發人員通過JSR-223將JavaScript嵌入到Java應用程序中,並使用jrunscript命令行工具開發獨立的JavaScript應用程序。「
  2. JavaScriptCore:內置於WebKit實現中的JavaScript引擎由包含在JavaFX系統中的WebView組件組成。

JavaScript運行通過的WebView和JavaFX應用程序

的JavaFX的Webkit不使用犀牛使用,它使用的JavaScriptCore。

您可以使用Nashorn to program JavaFX applications and APIs (as an alternative to programming in Java),你可以使用犀牛作爲JavaFX的FXML文檔的JavaFX腳本引擎,但你不能用犀牛作爲的WebView中的JavaScript引擎。

背景源信息

有使用JavaFX郵件列表上的JavaFX開發者提供了一些information on the JavaScript implementation in WebView。引用Oracle JavaFX開發人員Richard Bair的話(他引用WebKit開發人員Olivier Hunt的話):

那麼......。它是這樣的。 WebKit默認帶有JavaScriptCore,這是我們使用的JS引擎。這很不錯。我的理解是JavaScriptCore(又名SquirrelFish aka Nitro)是the same JS engine used by Safari。當Chrome和Apple都是WebKit的一部分時,Google將其放入WebKit的抽象層之一是能夠更換JavaScript引擎。當Google將WebKit分爲Blink時,WebKit項目對不同JSVM的抽象需求就消失了。因此,WebKit人員一直在討論如何去除那些抽象,如you won't be able to swap out the JS engine,[further info]。如果/當發生這種情況時,我們很難(或不可能)切換到Nashorn WebView。我們不打算分叉WebKit,所以我們必須遵循什麼WebKit。

「支持V8放在WebKit的一個相當大的負擔,也有一些 用於支持多個 JS引擎需要大,笨重和昂貴的抽象(見從多年的話題原來討論前)。

此外,我們只會在WebKit2中支持JSC,所以我認爲任何東西都不能說服我至少說,維持對多個JS引擎的支持對於項目來說是有益的。 - 奧利弗亨特

免責聲明

這個答案是關係到甲骨文的Java 8個釋放;備用和未來的JavaFX和Java實現可能有不同的內部實現。


願它從WebView中單獨使用,就像JSR 223的發動機?

WebView中的JavaScriptCore不能作爲JSR 223引擎與WebView分開使用(據我所知)。

我認爲最好將JavaScriptCore實現視爲支持WebView作爲WebView組件的內部實現細節,而不是將JavaScript實現視爲其他地方使用的通用JavaScript運行時。它不是在WebView中特定用途以外的正式支持的組件,並且在那裏使用時,公共WebView API將屏蔽您使用它的JavaScript運行時的實現細節:這對於JavaScript運行時所用的用戶來說是故意不透明的實際上用於在WebView組件中執行JavaScript。

4

更新

由於OP更關心的JavaFX的WebView,它使用JavaScriptCore。請閱讀JewelSea's answer以獲得更好的理解。

的JavaFX的Webkit不使用犀牛,它使用的JavaScriptCore

Oracle Nashorn是Java 8中的JavaScript引擎,直到Java 7中,所使用的JavaScript引擎是基於Mozilla Rhino

是的,Oracle JDK和OpenJDK是一樣的。

你可以在Oracle Site找到更多關於Nashorn的信息。

+0

您確定要使用webkit嗎?它是一個本地組件,所以它可能會使用它自己的v8 – ayvango

+0

在Java 8中的WebVIew不使用Nashorn,也不使用V8。 – jewelsea

相關問題