[英]Java: Is it safe to import from jdk.*?
用這樣的導入編寫Java程序對我來說是否安全:
import jdk.nashorn.api.scripting.NashornScriptEngineFactory;
import jdk.nashorn.api.scripting.ClassFilter;
注意: 在我的示例中,我導入Nashorn,但它可以是任何其他jdk包。
注意:我知道從java。*,javax。*和不安全/不支持從sun導入是安全/正確的。*
我在這里看到一篇好文章: http : //www.oracle.com/technetwork/java/faq-sun-packages-142232.html
我在Java官方文檔中找不到任何方式告訴我這種或那種方式
謝謝
您應該通過javax.script
使用它們,如https://docs.oracle.com/javase/8/docs/jdk/api/nashorn/jdk/nashorn/api/scripting/package-summary.html中所述。
包jdk.nashorn.api.scripting描述
這個包提供了
javax.script
集成,這是使用Nashorn的首選方法。 您通常會這樣做以獲取Nashorn腳本引擎的實例:
import javax.script.*;
...
ScriptEngine nashornEngine = new ScriptEngineManager().getEngineByName("Nashorn");
但要回答你的問題,我會說“可能不是”。 唯一官方保證支持的包是java.*
, javax.*
和org.*
。
由於這些是唯一受支持的軟件包,因此不支持所有其他軟件包。
任何新的不支持的軟件包都不會命名為sun.*
因為Oracle現在擁有Java。
有人可能會選擇jdk.*
作為新的不支持的包前綴,因為sun.*
不再可用。
也就是說,他們不太可能很快將其刪除,除非他們決定將其替換為另一個Javascript引擎,就像他們之前已經做過的那樣。
另一個潛在的問題是您的程序不會在另一個不包含Nashorn的JDK上運行。
jdk.nashorn.api。*包是nashorn腳本引擎特定的API(而javax.script是腳本語言獨立的API)。 如果您在代碼中使用nashorn並且您希望使用nashorn特定訪問(例如,使用jdk.nashorn.api.scripting.ScriptObjectMirror反射性地從Java代碼訪問腳本對象),則可以使用這些API。 如果你想讓你的java代碼獨立於特定的腳本語言實現,那么你可能想要堅持使用javax.script。
nashorn API的javadoc在這里: https ://docs.oracle.com/javase/8/docs/jdk/api/nashorn/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.