`

Java动态性--->3 java脚本引擎Rhino

 
阅读更多

 

 

 

1 Java脚本引擎简介:

 

 



 

 



 

 



 

 

2  使用Rhino 让Java和JS相互操作:

 

java :

public class Demo02 {
	public static void main(String[] args) throws Exception {
		//获得脚本引擎
		ScriptEngineManager sem = new ScriptEngineManager();
		ScriptEngine engine = sem.getEngineByName("javascript");
		//定义变量
		engine.put("msg", "zm is not a good man!");// 向引擎上下文中定义一个变量, 这样java js都可以从中获取
		String str = "var user = {name:'zm',age:30,schools:['北理工','iteye']}; ";
		str += "println(user.name);";
		//执行脚本 
		engine.eval(str); // 通过脚本获取 结果---> zm
		engine.eval("msg='zm is a old man';"); // 修改变量 msg的值  
		System.out.println(engine.get("msg")); // 通过Java端代码获取值 结果---> zm is a old man
		System.out.println("########################");
		
		// 定义函数
		engine.eval("function add (a, b) {var sum = a + b; return sum; }");
		// 取得调用接口
		Invocable jsInvoke = (Invocable) engine;
		//执行脚本中定义的方法
		Object result1 = jsInvoke.invokeFunction("add", new Object[] { 13, 20 });
		System.out.println(result1);  // 33.0

		// 导入其他java包,使用其他包中的java类
		String jsCode = "importPackage(java.util); var list = Arrays.asList([\"北京iteye\",\"清华大学\",\"北京大学\"]); ";
		engine.eval(jsCode);
		List<String> list2 = (List<String>) engine.get("list");
		for (String temp : list2) {
			System.out.println(temp);  // 北京iteye  清华大学  
		}

		//执行一个js文件(我们将a.js至于项目的src下即可)
		URL is = Demo02.class.getClassLoader().getResource("a.js");
		
		Reader r = new FileReader(is.getPath());
		engine.eval(r); // 结果----> 7
		
	}
}



a.js:



//定义test方法
function test(){
	var a = 3;
	var b = 4;
	println("invoke js file:"+(a+b));
}

//执行test方法
test();

 



 

 

 

  • 大小: 99.8 KB
  • 大小: 106.9 KB
  • 大小: 42.4 KB
  • 大小: 3.7 KB
分享到:
评论

相关推荐

    java运行js脚本引擎-----rhino

    Java运行JavaScript脚本引擎Rhino是一个强大的工具,它允许Java应用程序执行JavaScript代码并利用JavaScript的灵活性和动态性。Rhino是Mozilla基金会开发的一个开源项目,它完全用Java编写,因此可以无缝集成到Java...

    Rhino脚本引擎技术介绍

    Rhino脚本引擎在Java程序中的使用,为Java程序引入了脚本化编程的特性,使得Java程序可以更加灵活地处理动态语言的任务,同时也使得那些熟悉JavaScript语法的开发者能够在Java环境中快速上手。Rhino的引入,降低了...

    Java 8 Nashorn 脚本引擎

    Java 8 Nashorn脚本引擎是Java平台上的一个强大工具,它允许开发者在Java应用程序中直接执行JavaScript代码,极大地增强了Java与动态语言的交互能力。Nashorn引擎首次引入于Java 8,作为对之前Rhino JavaScript引擎...

    深入浅出Rhino:Java与JS互操作

    这种互操作性为开发者提供了极大的灵活性,可以利用JavaScript的动态性和表达力来增强Java应用的功能。 3. **Java API的使用**:书中会详细讲解如何通过Rhino的API在JavaScript中调用Java方法、访问Java变量和类。...

    java脚本引擎.pdf

    使用Java脚本引擎和Rhino,开发者可以利用JavaScript的灵活性和简洁性,来简化Java程序中复杂或易变的业务逻辑处理。这样做的好处是,可以使用脚本语言的动态特性来处理那些在编写Java代码时难以预料的变化,同时也...

    JDK12-java-scripting-programmers-guide.pdf

    Java Scripting API提供了多种脚本引擎,包括 Rhino引擎、 Nashorn引擎等。每种引擎都有其特点和优点,开发人员可以根据需要选择合适的引擎。 脚本上下文 脚本上下文是指脚本执行时的环境设置,包括脚本变量、函数...

    FF的js引擎rhino源码,java编写

    Rhino在JavaScript的世界里扮演着重要角色,因为它将JavaScript的动态性和灵活性带入了Java平台,使得开发者可以利用JavaScript进行服务器端编程、脚本控制、嵌入式应用等。 Rhino的源码对于学习JavaScript引擎内部...

    第 1 部分: 引入 Java 脚本 API

    虽然描述中没有提供具体信息,但通常介绍一个引入Java脚本API的主题可能涉及如何将脚本引擎集成到Java应用中,以及如何使用这些引擎来执行动态代码。在实际开发中,这可能包括以下步骤: 1. **添加依赖**:为了使用...

    为Java应用程序加入脚本引擎

    BeanShell作为一种强大的脚本引擎,不仅能够提高Java应用程序的灵活性和可扩展性,还能让非专业程序员也能参与到应用程序的定制化开发过程中。通过本文的介绍,相信您已经掌握了BeanShell的基本特性和集成方法,希望...

    吴天雄-Java注解及动态性详解.doc

    反射机制是Java动态性的核心组成部分,它允许在运行时检查类、接口、字段和方法的详细信息,包括注解。通过`java.lang.reflect`包中的类,如`Class`、`Method`和`Field`,我们可以获取到带有注解的元素,并读取注解...

    脚本化Java

    【脚本化Java】是指将JavaScript这种脚本语言与Java编程语言相结合,使得JavaScript能够用于控制和定制Java应用程序。...这涵盖了JavaScript如何在浏览器环境中与Java代码交互,增强了Web应用程序的功能和动态性。

    Java脚本语言程序员手册

    综上所述,《Java脚本语言程序员手册》不仅涵盖了Java中脚本语言的基本概念,还深入探讨了如何在实际项目中有效地运用Java Scripting API,以及如何与Rhino和Nashorn等脚本引擎进行交互。对于任何希望提升Java应用...

    Rhino-Security-Administration-a simple POC to manage Rhino Secur

    【Rhino-Security-Administration】是一个针对Rhino Security的数据管理概念验证项目,旨在提供一个简单易用的平台来管理和操作安全相关的数据。Rhino Security可能是一个虚构的安全框架或组件,这个POC(Proof of ...

    hugo110-java_run_groovy-master_java_

    综上所述,这个项目可能是为了帮助开发者理解和实践如何在Java项目中集成和运行Groovy,以便更好地利用Groovy的动态性和简洁性,同时为实现定时任务和动态代码执行场景做准备。通过学习和实践这个项目,你可以掌握...

    Mozilla Rhino 介绍

    最初,Rhino通过将JavaScript编译成Java字节码的方式来获得最佳性能,但由于这种方式在垃圾回收、编译和加载方面的开销较大,无法满足某些场景下的需求,Rhino随后提供了动态解释执行模式。 随着Rhino的开源,...

Global site tag (gtag.js) - Google Analytics