Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7249337
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68080
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:49:21

下载本文示例代码
            推荐:Java初学者专区  现在Java SE 5已经发布,在明年Java SE 6也将发布。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 factories = manager.getEngineFactories();  // 这是Java SE 5 和Java SE 6的新For语句语法  for (ScriptEngineFactory factory: factories)   {   // 打印脚本信息   out.printf("Name: %s%n"     "Version: %s%n"     "Language name: %s%n"     "Language version: %s%n"     "Extensions: %s%n"     "Mime types: %s%n"     "Names: %s%n",    factory.getEngineName(),    factory.getEngineVersion(),    factory.getLanguageName(),    factory.getLanguageVersion(),    factory.getExtensions(),    factory.getMimeTypes(),    factory.getNames());   // 得到当前的脚本引擎   ScriptEngine engine = factory.getScriptEngine();  } }}  上面的例子必须要在Java SE 6中编译。其中import static java.lang.System.*是新的语法,将System中的所有静态成员进行引用,以后就可以直接使用out、in或err了。  通过运行java ListScriptEngines,将显示如下信息 Name: Mozilla RhinoVersion: 1.6 release 2Language name: ECMAScriptLanguage version: 1.6Extensions: [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。第1页:运行第一个脚本程序 第2页:和脚本语言进行交互 第3页:让脚本运行得更快 第4页:动态调用脚本语言的方法 第5页:动态实现接口             推荐:Java初学者专区  现在Java SE 5已经发布,在明年Java SE 6也将发布。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 factories = manager.getEngineFactories();  // 这是Java SE 5 和Java SE 6的新For语句语法  for (ScriptEngineFactory factory: factories)   {   // 打印脚本信息   out.printf("Name: %s%n"     "Version: %s%n"     "Language name: %s%n"     "Language version: %s%n"     "Extensions: %s%n"     "Mime types: %s%n"     "Names: %s%n",    factory.getEngineName(),    factory.getEngineVersion(),    factory.getLanguageName(),    factory.getLanguageVersion(),    factory.getExtensions(),    factory.getMimeTypes(),    factory.getNames());   // 得到当前的脚本引擎   ScriptEngine engine = factory.getScriptEngine();  } }}  上面的例子必须要在Java SE 6中编译。其中import static java.lang.System.*是新的语法,将System中的所有静态成员进行引用,以后就可以直接使用out、in或err了。  通过运行java ListScriptEngines,将显示如下信息 Name: Mozilla RhinoVersion: 1.6 release 2Language name: ECMAScriptLanguage version: 1.6Extensions: [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。第1页:运行第一个脚本程序 第2页:和脚本语言进行交互 第3页:让脚本运行得更快 第4页:动态调用脚本语言的方法 第5页:动态实现接口 下载本文示例代码


Java SE 6之脚本引擎 让程序如虎添翼Java SE 6之脚本引擎 让程序如虎添翼Java SE 6之脚本引擎 让程序如虎添翼Java SE 6之脚本引擎 让程序如虎添翼Java SE 6之脚本引擎 让程序如虎添翼Java SE 6之脚本引擎 让程序如虎添翼Java SE 6之脚本引擎 让程序如虎添翼Java SE 6之脚本引擎 让程序如虎添翼Java SE 6之脚本引擎 让程序如虎添翼Java SE 6之脚本引擎 让程序如虎添翼Java SE 6之脚本引擎 让程序如虎添翼Java SE 6之脚本引擎 让程序如虎添翼Java SE 6之脚本引擎 让程序如虎添翼Java SE 6之脚本引擎 让程序如虎添翼Java SE 6之脚本引擎 让程序如虎添翼
阅读(553) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~