ScriptEngineManager 類
ScriptEngineManager 可能是腳本包中惟一一個經常使用的具體類;其他大多數都是接口。它或許是腳本包中惟一的一個要直接或間接地(通過 Spring Framework 之類的依賴性注入機制)實例化的類。ScriptEngineManager 可以使用以下三種方式返回腳本引擎:
·通過引擎或語言的名稱,比如說 清單 1 請求 JavaScript 引擎。
·通過該語言腳本共同使用的文件擴展名,比如說 Ruby 腳本的 .rb。
·通過腳本引擎聲明的、知道如何處理的 MIME 類型。
本文示例為什么要使用 JavaScript?
本文中的 Hello World 示例使用了部分 JavaScript 腳本,這是因為 JavaScript 代碼易于理解,不過主要還是因為 Sun Microsystems 和 BEA Systems 所提供的 Java 6 運行時環境附帶有基于 MozillaRhino 開源 JavaScript 實現的 JavaScript 解釋器。使用 JavaScript,我們無需在類路徑中添加腳本語言 JAR 文件。
ScriptEngineManager 間接查找和創建腳本引擎。也就是說,當實例化腳本引擎管理程序時,ScriptEngineManager 會使用 Java 6 中新增的服務發現機制在類路徑中查找所有注冊的 javax.script.ScriptEngineFactory 實現。這些工廠類封裝在 Java 腳本 API 實現中;也許您永遠都不需要直接處理這些工廠類。
ScriptEngineManager 找到所有的腳本引擎工廠類之后,它會查詢各個類并判斷是否能夠創建所請求類型的腳本引擎 —— 清單 1 中為 JavaScript 引擎。如果工廠說可以創建所需語言的腳本引擎,那么管理程序將要求工廠創建一個引擎并將其返回給調用者。如果沒有找到所請求語言的工廠,那么管理程序將返回 null,清單 1 中的代碼將檢查 null 返回值并做出預防。
編輯推薦
(責任編輯:zyc)