`
wenxin2009
  • 浏览: 314739 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java支持脚本语言

    博客分类:
  • java
 
阅读更多

  Java SE6中添加了脚本语言API,可通过java进行灵活的操作脚本语言。以下是示例代码:

//操作属性
	public static void attributeInBindings() throws ScriptException {
		ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
		ScriptContext context = engine.getContext();
		context.setAttribute("name", "Alex", ScriptContext.GLOBAL_SCOPE);
		engine.eval("println(name);");//输出Alex
	}

 

//调用方法
	public static void invokeFunction() throws ScriptException, NoSuchMethodException{
		ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
		String scriptText = "function greet(name){println('hello,'+name);}";
		engine.eval(scriptText);
		Invocable invocable = (Invocable)engine;
		invocable.invokeFunction("greet", "wenxin");
	}
 
//调用脚本中对象成员方法
	public static void invokeMethod() throws ScriptException, NoSuchMethodException{
		ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
		String scriptText = "var obj={getGreeting:function(name){return 'hello,'+name;}};";
		engine.eval(scriptText);
		Invocable invocable = (Invocable)engine;
		Object scope = engine.get("obj");
		Object result = invocable.invokeMethod(scope, "getGreeting", "dwen");
		System.out.println(result);
	}
 
//进行脚本编译{解释执行的方式运行脚本的速度比编译之后再运行会慢些,当一段脚本需要被多次重复
	//执行时,可以对脚本进行编译。编译之后脚本在执行时不需重复解析}
	public static void compliedScript() throws ScriptException, NoSuchMethodException{
		CompiledScript script = null;
		ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
		String scriptText = "function getGreeting(name){println('hello,'+name);}";
		if (engine instanceof Compilable) {//实例判断,因为不是所有脚本语言都支持编译
			script = ((Compilable) engine).compile(scriptText);
			script.eval();
			Invocable invocable = (Invocable)engine;
			invocable.invokeFunction("getGreeting", "wenxin");
		}
	}

 操作实现java接口:

public interface IGreet {
	public String getGreeting(String name);
}
 
	//在脚本中实现java接口
	public static void useInterface() throws ScriptException{
		ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
		String scriptText = "function getGreeting(name){return 'hello,'+name;}";
		engine.eval(scriptText);
		Invocable invocable = (Invocable)engine;
		IGreet greet = invocable.getInterface(IGreet.class);
		System.out.println(greet.getGreeting("接口"));
	}
 

 

 

分享到:
评论

相关推荐

    在Java中使用脚本语言JavaScript

    * 在Java中使用脚本语言JavaScript。 * * @author LeiWen@FansUnion.cn,http://FansUnion.cn, * http://blog.csdn.net/FansUnion * * QQ:240370818 参考资料:...

    纯Java 实现的一个脚本语言 语法类似java s c r i p t.rar

    在这些情况下,一种理想的解决方案是在Java应用中提供对脚本语言解释器的支持,让脚本语言解释器读取用户编写的脚本并在应用提供的类上运行这些脚本。为了实现这个目标,你可以在Java应用所运行的JVM中,运行一个...

    脚本化Java

    另外,一些JavaScript解释器(如绑定到Java6的JavaScript解释器)支持一个功能集,该功能集允许JavaScript和Java对象交互、设置和查询字符以及调用方法。 本章首先介绍如何把JavaScript解释器嵌入到一个Java6应用...

    自制脚本语言的LR(1)编译器与解释器

    升级到GLR前的LR(1)的完整版。可定义函数,支持递归调用,可处理字符串和注释。

    深入Java7的一些新特性以及对脚本语言支持API的介绍

    本篇文章是对Java7的一些新特性以及对脚本语言支持API的概述,需要的朋友参考下

    使用LoadRunner-编写JAVA-测试脚本.docx

    本文档主要讲述的是使用LoadRunner 编写JAVA 测试脚本;Loadrunner 要支持JAVA语言必须,安装一个补丁。

    JAVA抽奖活动大转盘(含前后端源码、数据库脚本, 抽奖算法)支持一键运行

    1、采用Java语言开发,集成SpringBoot,Redis、Mybatis,SpringEvent、Maven,项目 2、包含前端、后端源码,数据库设计、SQL脚本,抽奖算法如果没有实现思路,这是一个很好的入门案例。

    Java通用代码生成器InfinityGPGenertor新版0.79支持Json,免积分下载

    5)支持Java语言的两种技术组合:Simplejee和s2sh 6)生成相应对象的CRUDFLS等常用功能 7)生成完整的Eclipse JEE版兼容的zip格式的压缩文件 8)内置SGS脚本(标准生成器脚本)编译器 9)部署请使用Java7和Tomcat7环境 10)...

    java对javascript的支持

    比较详细的介绍了jdk1.6对脚本语言的支持(以javascript为例)

    deelang:适用于Android的轻量级动态脚本语言

    Deelang-适用于Android和Java的嵌入式脚本语言Deelang是一种简单,动态,可嵌入的Java脚本语言,旨在轻松添加对Java应用程序中用户脚本操作的支持。 在Android设备上使用时,Deelang可以在运行时直接编译为DEX字节码...

    LoadRunner脚本语言之C语言

    Loadrunner几乎支持所有主流语言,比如C语言,JAVA,VB等。Web(HTTP/HTML)协议默认使用的是C语言。文中简述Loadrunner中C语言,欢迎同行下载交流。

    DELPHI SynEdit 代码编辑器 支持HTML,C#,JAVA,DELPHI 多脚本语法识别,高亮,查找,功能强大

    DELPHI SynEdit 代码编辑器 支持HTML,C#,JAVA,DELPHI 多程脚本语法识别,高亮,查找,功能强大 我在CSDN发布的有一个WEB FORM 设计器,里面有一个应用的例子

    aviatorscript:JVM上托管的高性能脚本语言

    飞行员脚本 | :open_book:中文文档AviatorScript是一门高级,轻量级寄宿于JVM之上的脚本语言。特性介绍支持数字,字符串,正则表达式,布尔值,正则表达式等,完整支持所有Java运算符及优先级等。是一等公民,支持。...

    beanshell:Beanshell脚本语言

    BeanShell-简单的Java脚本 BeanShell的官方活动项目主页。注意:待发布新版本唯一推荐的版本是master分支的手动构建。 对旧版本的支持达到了行尾,只能接受针对主版本的问题和拉取请求。 下一个版本将是概述的...

    CalclipseMath:Java数学表达式解析器和脚本解释器-开源

    CalclipseMath(简称CalM)是用Java编写的数学解析器。 用几行代码,CalM使您的应用... MComp被实现为Java类,并允许进一步扩展脚本语言。 有关CalclipseMath和其他Calclipse产品的更多信息,请访问www.calclipse.com。

    JavaScript脚本语言

    第一讲 JavaScript语言概况  Internet时代,造就了我们新的工作和生活方式,其互联性、开放性和共享信息的模式...因此,尽快掌握JavaScript脚本语言编程方法是我国广大用户日益关心的。 一、什么是JavaScript .....

    JAVA上百实例源码以及开源项目

    Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印  util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印...

    Java学习资料-Spring Boot - 结合 Redis 使用 Lua脚本

    灵活性:Lua 脚本是一种通用的脚本语言,可以适应不同的业务需求。 可读性高:Lua 脚本语法简单易懂,可以提高代码的可读性和可维护性。 易于集成:Spring Boot 提供了对 Redis 和 Lua 脚本的支持,可以方便地集成到...

    JAVA上百实例源码以及开源项目源代码

    Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印  util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印...

Global site tag (gtag.js) - Google Analytics