`
小网客
  • 浏览: 1244165 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JDK6.0对Script的支持参考例子

    博客分类:
  • Java
 
阅读更多

概述:

 

        JDK6.0中对Script语言的支持,默认支持javascript,从而使得开发变的简洁,适用场景如下:

有个业务逻辑处理,需要根据提供的工资,然后计算出应缴的税,2009年假定为(工资-800)*20%为上缴的税

采用java实现的方式如下:

 

public double geTax(double salary){
       Return (salary-800)*0.2;
}

 到2010年发生了变化,变为(工资-2000)*20%为上缴的税

 

修改代码,重启服务,代码如下:

 

public double geTax(double salary){
       Return (salary-3000)*0.2;
}

 然后又发生了变化......,

 

针对此类可以通过javascript进行实现,从而实现热部署。

调用脚本步骤:

Step1.创建ScriptEngineManager

 

ScriptEngineManager sem = new ScriptEngineManager();

 Step2.根据ScriptEngineManager创建ScriptEngine

 

 

ScriptEngine engine = sem.getEngineByName("ECMAScript");

 Step3.通过ScriptEngine加载脚本

 

 

engine.eval(scriptStr);

 Step4.脚本的调用执行

 

 

//执行方法的采用Invocable

//执行内置对象的需要先获取内置对象然后调用callMethod进行执行

 

调用脚本中的对象方法:

定义脚本如下:F:\script\oo.js

 

function Person(name) {   
     this.name = name;   
};    
Person.prototype.say = function(str) {  
      return this.name+" can say :"+str;
};  

 Java中调用: 

 

 

String filepath = "F:/script/oo.js";
File file = new File(filepath);
FileReader scriptReader = new FileReader(file);
ScriptEngineManager sem = new ScriptEngineManager();//
ScriptEngine engine = sem.getEngineByName("ECMAScript");
engine.eval(scriptReader);
Invocable inv = (Invocable) engine;
Object obj = inv.invokeMethod(engine.eval("new Person('baidu');"), "say",
	"www.someabcd.com 是个好网站!");
System.out.println(obj);

 调用脚本中的方法:

 

1.定义脚本如下:

 

F:\script\fun.js
function getMax(a, b){
    return a>b?a:b;
}

 2.Java中调用:

 

String filepath = "F:/script/fn.js";
File file = new File(filepath);
FileReader scriptReader = new FileReader(file);
ScriptEngineManager sem = new ScriptEngineManager();//
ScriptEngine engine = sem.getEngineByName("ECMAScript");
engine.eval(scriptReader);
Invocable inv = (Invocable) engine;
Object obj = inv.invokeFunction("getMax", 100, 101);
System.out.println(String.format("the max value is:%s", obj));

 调用脚本中的内置对象:

1.定义脚本如下: F:\script\reg_exp.js

var reg = new RegExp("a+b");

 2.Java中调用:

String filepath = "F:/script/reg_exp.js";
File file = new File(filepath);
FileReader scriptReader = new FileReader(file);
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine engine = sem.getEngineByName("ECMAScript");
engine.eval(scriptReader);
NativeRegExp nre = (NativeRegExp) engine.get("reg");
String input = "aaaaaaaaaaaab";
Object result = NativeRegExp.callMethod(nre, "test", new Object[] {input });
System.out.println(String.format("call regular expression:%s  input:%s output :%s",
        nre.toString(), input, result));

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    JDK 6.0.zip

    1. **改进的Swing组件**:JDK 6.0对Swing UI库进行了增强,提供了更好的外观和感觉,支持更多的操作系统主题,并且增强了性能。 2. **JavaScript交互**:通过Java Web Start和Nashorn JavaScript引擎,JDK 6允许...

    官方JDK6.0中文版

    中文版的JDK6.0旨在为中文使用者提供更友好的体验,使开发者更容易理解和使用Java API。 **1. JDK6.0的主要特性:** - **增强的动态代理:** JDK 6.0引入了改进的动态代理机制,允许开发者创建能够处理多个接口的...

    深入jdk6.0源码

    此外,IDE如Eclipse和IntelliJ IDEA等也提供了对JDK6.0的支持,使得开发过程更为便捷。 深入JDK6.0的源码,我们可以看到Java核心库的实现细节,如集合框架、多线程、I/O流等。例如,HashMap和ArrayList的内部结构,...

    jdk6.0中文文档

    这份"jdk6.0中文文档"是针对JDK 6.0的官方帮助文档,它提供详尽的API参考、教程和指导,对于理解和使用JDK 6.0至关重要。 **一、JDK 6.0的主要特性** 1. **增强的Swing组件**:JDK 6.0在Swing UI库中进行了大量...

    java学习笔记JDK6.0课件和代码

    这个压缩包中包含的"java学习笔记JDK6课件和课本代码"是学习JDK 6.0的重要参考资料,可以帮助你深入理解Java编程的核心概念和实践技巧。 1. **Java基础**:Java是一种面向对象的编程语言,它的基础包括类、对象、...

    JDK6.0API官方中文版CHM

    4. **Swing组件增强**:JDK 6.0对Swing组件进行了一些改进,如JTable性能优化,以及对 Nimbus Look and Feel 的支持。 5. **NIO.2(New I/O 2)**:引入了新的文件系统API,提供异步I/O操作,如...

    JDK6.0简体中文

    在JDK 6.0中,还引入了一些其他重要特性,例如改进的Swing GUI组件,包括更好的外观和感觉,以及对桌面应用的支持。新的I/O流API扩展了NIO(非阻塞I/O),使得处理大量并发I/O操作更加高效。此外,改进的异常处理...

    jdk 6.0 API Document 文档

    jdk 6.0 API Document 文档,jdk 6.0 API Document 文档,jdk 6.0 API Document 文档,jdk 6.0 API Document 文档,jdk 6.0 API Document 文档,jdk 6.0 API Document 文档

    安装和配置jdk6.0和tomcat6.0

    JDK6.0 是 Oracle 公司发布的一个版本,提供了对 Java SE 6 平台的支持。以下是安装和配置 JDK6.0 的步骤: 1. **下载 JDK**: 首先,你需要从 Oracle 官方网站或可靠的第三方资源下载 JDK6.0 的安装包。 2. **安装 ...

    最全 JDK6.0 API 文档

    JDK 6.0 API 文档是Java开发者的重要参考资料,它包含了Java开发工具包的所有公开接口、类和方法的详细说明。这份文档是理解和利用Java 6平台功能的基础,为程序员提供了全面的类库信息,使得开发过程更加高效且有据...

    JDK6.0的安装与配置

    ### JDK 6.0 的安装与配置详解 #### 一、安装 JDK 6.0 在开始之前,确保已经从官方渠道下载了适用于您操作系统的 JDK 6.0 安装包。对于 Windows 用户,推荐下载针对 Windows 环境的安装包。例如,对于 32 位操作...

    jdk6.0-04.zip

    JDK 6.0对国际化和本地化支持进行了增强,包括日期、时间、货币格式的改进,以及对更多语言和地区的支持,使得开发多语言应用更为简便。 十、诊断和监控工具 JDK 6.0提供了丰富的诊断和监控工具,如jconsole、...

    jdk6.0中文版api

    jdk6.0中文版jdk。不错的开发者文档!希望你能喜欢!

    jdk6.0环境变量设置

    ### JDK 6.0环境变量设置详解 #### 安装JDK 6.0 在开始设置环境变量之前,首先需要正确安装JDK 6.0。安装过程并不复杂,但选择合适的安装路径至关重要,避免将JDK安装在默认的`C:\Program Files\`目录下,因为该...

    JDK 6.0 Documentation 中文文档 CHM Part1

    JDK 6.0 Documentation 中文文档 CHM 从网上找到的,如果不对请见谅哈,小弟不敢独享,初来乍到,大家多包涵

    jdk6.0.chm

    JDK 6.0包含了对XPath 2.0和XSLT 2.0的支持,方便XML数据的查询和转换。 10. **JDBC 4.0** JDBC 4.0在JDK 6.0中发布,引入了自动连接管理和新的Java类型映射,提高了数据库访问的便利性。 以上只是JDK 6.0中的一...

    jdk6.0 API文档中文版

    JDK 6.0 API 文档是Java开发者的重要参考资料,它包含了Java平台标准版6.0的所有公共类、接口、方法和异常的详细说明。这个文档以HTML形式提供,便于用户在线浏览和查询,确保了程序员在开发过程中能够快速、准确地...

    java_jdk6.0api参考手册

    《Java JDK6.0 API参考手册》是Java开发工程师的重要参考资料,它详尽地阐述了JDK6.0版本中的各种API(Application Programming Interface)功能和用法。这份手册以中文呈现,旨在帮助国内开发者更好地理解和应用...

    JDK 6.0 API 中文版

    JDK 6.0 API 中文版 开发新手的必备 , 绝对完美的中文版

    JDK6.0 中文文档

    5. **JavaScript集成(Scripting Engines)**:JDK 6.0添加了对脚本语言的支持,如JavaScript引擎Rhino,使得在Java应用中可以嵌入和执行JavaScript代码。 6. **JDBC 4.0**:更新了Java数据库连接API,增加了自动...

Global site tag (gtag.js) - Google Analytics