2017-03-01 28 views
8

是否安全對我來說,像這樣的進口編寫Java程序:Java:從jdk導入安全嗎?*?

import jdk.nashorn.api.scripting.NashornScriptEngineFactory; 
import jdk.nashorn.api.scripting.ClassFilter; 

注: 在我的例子我進口犀牛,但也可能是任何其他的JDK包。

注:。我知道,這是安全/正確的從Java中輸入*,使用javax *和不安全/不支持從太陽導入*

我看到了一個很好的文章在這裏:http://www.oracle.com/technetwork/java/faq-sun-packages-142232.html

我不能告訴我一個這樣或那樣的

回答

7

你應該通過javax.script使用它們作爲解釋

感謝Java的官方文檔中發現任何地方

包裝jdk.nashorn.api.scripting說明

此包提供了javax.script整合,這是使用犀牛的首選方式。你會通常這樣做是爲了獲得一個犀牛腳本引擎的一個實例:

import javax.script.*; 
... 
ScriptEngine nashornEngine = new ScriptEngineManager().getEngineByName("Nashorn"); 

但回答你的問題,我會說:「大概不會」。唯一官方保證的支持包是java.*,javax.*org.*

由於這些是唯一支持的軟件包,因此全部其他軟件包不受支持。

由於Oracle現在擁有Java,因此不會將任何新的不受支持的軟件包命名爲sun.*

由於sun.*不再可用,很可能有人選擇jdk.*作爲新的不受支持的軟件包前綴。

也就是說,他們很快就會刪除它,除非他們決定將其替換爲另一個Javascript引擎,就像他們之前做過的那樣。

另一個潛在的問題是您的程序不能在另一個不包含Nashorn的JDK上運行。

+1

另一個明確,發生難度從Oracle遷移Java9指導。 http://docs.oracle.com/javase/9​​/migrate/toc。htm#JSMIG-GUID-F7696E02-A1FB-4D5A-B1F2-89E7007D4096 – Alexander

+0

我的問題:是通用的。從jdk導入安全嗎?*? 顯然我想直接訪問這些類,因爲有額外的功能。我會更新我的問題的文字。謝謝 – Zo72

+0

我更新了答案。唯一明確支持的包是'java。*','javax。*'和'org。*'。這意味着'jdk。*'沒有明確的支持。 –

0

jdk.nashorn.api。*包是nashorn腳本引擎特定的API(而javax.script是獨立於腳本語言的API)。如果你在你的代碼中使用nashorn,並且你想要nashorn特定的訪問權限(比如像使用jdk.nashorn.api.scripting.ScriptObjectMirror反射地從Java代碼訪問腳本對象),那麼你可以使用這些API。如果你想保持你的java代碼獨立於特定的腳本語言實現,那麼你可能想要堅持javax.script。

的javadoc犀牛的API是在這裏:https://docs.oracle.com/javase/8/docs/jdk/api/nashorn/