熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

JSR-223(Scripting for the Java&nbs

2022-06-13   來源: JSP教程 
最新的Java主版本(Java SE 又稱Mustang)現在正處於beta版本階段雖然該版本並不像Java 的更新那麼多但是它確實有一些有趣的新特性毋庸置疑其中的一個就是對腳本編寫語言的支持
 
  諸如PHPRubyJavaScriptPython(或Jython)之類的腳本編寫語言被廣泛應用於許多領域並由於其靈活性和簡單性而大受歡迎由於腳本是被解釋而不是被編譯的所以可以輕松地從命令行運行和測試它們這就壓縮了編碼/測試周期並提高了開發人員的生產率腳本通常是動態鍵入的其語法極富表現力所編寫出的算法要比Java中的等效算法簡明得多使用起來通常也很有趣
 
  在很多情況下從Java使用腳本編寫語言會很有用比如為Java應用程序提供擴展以便用戶可以編寫自己的腳本進行擴展或定制化核心功能腳本編寫語言可讀性更強也更容易編寫所以(從技術上來說)它們是用於為終端用戶提供根據需求定制化產品的可能性的理想語言
 
  早已經有許多Java可用的獨立腳本編寫包了包括RhinoJaclJythonBeanShellJRuby等新消息是Java 通過一個標准接口為腳本編寫語言提供了內置支持
 
  Java 提供對JSR規范的全面支持該規范提供了一種從Java內部執行腳本編寫語言的方便標准的方式並提供從腳本內部訪問Java資源和類的功能Java 附帶了與Mozilla Rhino的JavaScript 實現的內置集成基於該規范對諸如PHPGroovy和BeanShell之類的其它腳本編寫語言的支持也正在進行中本文關注的是Rhino實現但是其它語言應該是基本相同的
 
  那麼如何在Java 中使用JSR的實現呢? 偶經過仔細地研究 終於找到了解決方法 
 
      干活要從理論開始
 
     根據JavaDoc的說法 javaxscriptScriptEngineManager 是通過JAR規范中所謂的服務提供商(Service Provider)方法來在庫中檢索 javaxscriptScriptEngineFactory 實現類並自動注冊的 OK 了解了這個就好辦了 准備開始干活哈
 
      開始動手干活了 :)
 
     首先制作JSR規范實現的包(包括SUN的JavaScript默認實現):
     使用WinRAR等壓縮工具打開JRE中rtjar文件(注意要提前備份!我的就是備份為jsrjar) 如圖所示:

 rtjar的目錄結構

     OK下面開始刪除文件 除了comsunscriptjavaxscriptMETAINF目錄之外其余的目錄全都刪除刪除後如下圖所示

 刪除後的目錄結構

     目錄做好之後下面開始按照JAR規范所描述的Service Provider方法來創建文件以便於 javaxscriptScriptEngineManager 的檢索

    在METAINF目錄下建立一個名稱為 services 的目錄

    在 services 目錄中新建名稱為 javaxscriptScriptEngineFactory 的空文件

    在 javaxscriptScriptEngineFactory 文件中寫入comsunscriptjavascriptRhinoScriptEngineFactory數據注意不寫引號

  
 新加入的services目錄和文件

     最後將所有改動保存到jsrjar文件中工作完成!

   測試包

        將jsrjar加入到項目的庫中然後編寫下面的代碼

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = managergetEngineByName(js);
engineput(age );
engineeval(if (age >= ){  +
              print(Old enough to vote!);  +
            } else { +
              print (Back to school!); +
            });

這時控制台應返回Old enough to vote! 下面是其在Eclipse下運行的截圖

 測試程序在Eclipse下的運行情況

 參考資料


    JSR(Scripting for the Java Platform)規范

    Mustang與RhinoJava 中的腳本編寫

    JAR規范中的Service Provider描述#Service%Provider

    本文的技術支持中國Eclipse社區()

    jsrjar包下載jar


From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19432.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.