国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java SE 6 入門之腳本引擎加大程序功能

2019-11-17 05:56:57
字體:
來源:轉載
供稿:網友

java SE 6較Java SE5有了很大的改進,它的功能更強,而且是專為Vista所設計,這就意味著Java SE 6將是Vista上的最佳選擇。而Java SE 6所提供的最眾多的新功能必將成為它的最大賣點。

Java SE 6最引人注目的新功能之一就是內嵌了腳本支持。在默認情況下,Java SE 6只支持javascript,但這并不以為著Java SE 6只能支持Javascript。在Java SE 6中提供了一些接口來定義一個腳本規范,也就是JSR223。通過實現這些接口,Java SE 6可以支持任意的腳本語言(如php或Ruby)。

運行第一個腳本程序

在使用Java SE 6運行腳本之前,必須要知道你的Java SE 6支持什么腳本語言。在javax.script包中有很多的類,但這些類中最主要的是ScriptEngineManager。可以通過這個類得到當前Java SE 6所支持的所有腳本。如下面例子將列出所有可以使用的腳本引擎工廠。

import javax.script.*; import java.io.*; import java.util.*; import static java.lang.System.*; public class ListScriptEngines  {  public static void main(String args[])   {   ScriptEngineManager manager = new ScriptEngineManager();   // 得到所有的腳本引擎工廠   List<ScriptEngineFactory> factories = manager.getEngineFactories();   // 這是Java SE 5 和Java SE 6的新For語句語法   for (ScriptEngineFactory factory: factories)    {    // 打印腳本信息    out.

上面的例子必須要在Java SE 6中編譯。其中import static java.lang.System.*是新的語法,將System中的所有靜態成員進行引用,以后就可以直接使用out、in或err了。

通過運行java ListScriptEngines,將顯示如下信息

Name: Mozilla Rhino Version: 1.6 release 2 Language name: ECMAScript Language version: 1.6 Extensions: [js] Mime types: [application/javascript, application/ecmascript, text/javascript, text/ecmascript] Names: [js, rhino, JavaScript, javascript, ECMAScript, ecmascript]

在最下面一行是腳本的別名,也就是使用它們中的任意一個都可以。得到一個具體的腳本引擎有3種方法。

·根據擴展名得到腳本引擎

ScriptEngine engine = manager.getEngineByExtension("js");

getEngineByExtension的參數就是Extensions:[js]中[…]里的部分。

·根據Mime類型得到腳本引擎

ScriptEngine engine = manager.getEngineByMimeType("text/javascript");

getEngineByMimeType的參數可以是Mime types: [application/javascript, application/ecmascript, text/javascript, text/ecmascript]中的任何一個,可以將text/javascript改成text/ecmascript。

·根據名稱得到腳本引擎

ScriptEngine engine = manager.getEngineByName("javascript");

getEngineByName后的參數可以是Names: [js, rhino, JavaScript, javascript, ECMAScript, ecmascript]中的任何一個,如可以將javascript改成ecmascript。

上面已經討論了執行腳本的第一步,就是得到一個可用的腳本引擎。在完成這項工作之 后就可以利用這個腳本引擎執行相應的腳本了。我們可以使用ScriptEngine的eval方法來執行腳本。eval方法被重載的多次,但最常用的是public Object eval(String script)。


下面的例子演示了如何使用eval方法來執行javascript腳本。

import javax.script.*; import java.io.*; import static java.lang.System.*; public class FirstJavaScript  {  public static void main(String args[])   {   ScriptEngineManager manager = new ScriptEngineManager();   // 得到javascript腳本引擎   ScriptEngine engine = manager.getEngineByName("javascript");   try    {    // 開始運行腳本,并返回當前的小時    Double hour = (Double)engine.eval("var date = new Date();" +"date.getHours();");    String msg;    // 將小時轉換為問候信息    if (hour < 10)     {     msg = "上午好";    }     else if (hour < 16)     {     msg = "下午好";    }     else if (hour < 20)     {     msg = "晚上好";    }     else     {     msg = "晚安";    }    out.printf("小時 %s: %s%n", hour, msg);   }   catch (ScriptException e)    {    err.println(e);   }  } }

上面的例子通過得到當前的小時,并將其轉化為問候語。上面的程序的輸出信息為:

小時9.0:上午好

這個例子最值得注重的是執行的2句腳本,最后一句是date.getHours()。并未將這個值賦給一個javascript變量。這時,eval方法就將這樣的值返回。這有些類似C語言的(…)運算符。如(c=a+b, c + d),這個表達式的返回值是a+b+d。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南澳县| 通山县| 肃宁县| 曲松县| 凌海市| 紫金县| 宜昌市| 济阳县| 武威市| 通州市| 溆浦县| 黑水县| 革吉县| 会泽县| 恭城| 班玛县| 论坛| 新蔡县| 屯昌县| 方正县| 弥渡县| 石城县| 辽宁省| 昭平县| 万年县| 津市市| 西和县| 张家港市| 凤凰县| 丹寨县| 梓潼县| 旬邑县| 仪陇县| 安陆市| 滁州市| 长丰县| 翁源县| 潮安县| 道真| 宁城县| 杭锦后旗|