`
ferreousbox
  • 浏览: 284881 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java脚本框架介绍与应用(1)

    博客分类:
  • java
阅读更多

    脚本语言因其方便、简洁等特性越来越受到关注,如javascript和groovy。在某些时候,使用脚本语言完成和java一样的功能时会编写得更快更方便,拿java中列表来说,使用java代码和groovy代码的比较如下:

 

 

// 这是java代码
List<String> list = new ArrayList<String>();
list.add("obj1");
list.add("obj2");

// 这是groovy代码
list = ["obj1", "ojb2"];

 

    可以看到,脚本语言更加简洁快速。脚本语言往往是解释性的语言,因此在运行期间动态更改更加利于我们进行测试而无须编译。所以,在需要进行快速编写和频繁修改的前提下,脚本语言的优势得以体现。java从1.6开始就已经将脚本语言的支持加入到标准API中来了,在javax.script包中可以看到该脚本框架的所有功能。如果有用过BSF的话,相信对脚本框架也应该相对比较熟悉了,java脚本语言框架提供的主要功能有:

 

1、使用ScriptEngine标准接口来执行脚本语言(包括代码段、函数、获取返回值等)

 

     该接口是主要的使用接口,可以通过字符串、文件来执行给定的脚本并获取返回值。背后是各个脚本语言引擎的实现

 

2、使用Binds和ScriptContext提供java和脚本语言间的参数传递(支持命名空间)

 

     对每个脚本引擎而言都有独立的命名空间来进行参数传递,同时也提供全局的命名空间和自定义命名空间。java程序和脚本语言可以通过命名空间相互传递参数

 

3、提供对脚本语言的编译/解析缓存(如groovy)以提高执行效率

 

     这是针对实现了Compilable接口的引擎而言的,可以用来缓存编译/解析结果以提供重复执行的效率。比如groovy可以将代码编译为java字节码来执行,效率提高是非常明显的。

 

4、其他功能

 

    其实我们使用前3个主要功能就够了,足可以满足我们在java程序中使用脚本语言的便利。java1.6版的JRE已经自带了javascript脚本语言的实现引擎,采用的是ECMAScript规范的实现Mozilla Rhino。因此,默认我们就可以使用脚本框架在java程序中执行和调用javascript代码了。对于javascript而言,和我们平常在浏览器中使用的基本上都一样,因为都是兼容ECMAScript规范的。有区别的是浏览器中的javascript扩展了可以对DOM对象操作的功能,这是ECMAScript规范中没有的,所以不用指望可以使用类似alert等这样的方言功能了(所有window对象的属性和方法都不可用用的)

 

    使用脚本框架执行javascript是非常简单的,举个简单的例子如下,只需要3个步骤就可以:

 

 

// 脚本引擎管理器,用来动态查找所有的脚本引擎
ScriptEngineManager sem = new ScriptEngineManager();

// 获取js引擎
ScriptEngine jsEngine = sem.getEngineByExtension("js");

// 执行一个js中的打印方法
jsEngine.eval("println('Hello world')");

 

    ScriptEngineManager的动态查找方式是:搜索classpath路径中的所有jar文件,并读取jar文件中

/META-INF/services/javax.script.ScriptEngineFactory文件的内容,该文件就是指定了实现ScriptEngineFactory接口的

实现类。我们可以在jre/lib/resources.jar文件中找到javascript引擎的实现注册。

 

    ScriptEngine负责执行脚本,我们这里使用的是字符串,还可以是Reader对象从流中读取脚本内容。我们写一个js文件存放在类目录下,名称为js-1.js:

 

 

var array = [12,13,15,16,18];
for (var i = 0; i < array.length; i ++) {
	println("index:" + i + ",value:" + array[i]);
}

var obj = {};
obj.a = 'i am a';
obj.b = 'i am b';
for (var p in obj) {
	println("Attribute:" + p + ",value:" + obj[p]);
}
 

    然后写如下java代码保存在ScriptDemo类文件中执行:

 

 

ScriptEngineManager sem = new ScriptEngineManager();

ScriptEngine jsEngine = sem.getEngineByExtension("js");

jsEngine.eval(new InputStreamReader(ScriptDemo.class.getResourceAsStream("js-1.js")));

 

    运行后,我们就可以在控制台打印我们想要的结果了。如果想使用其他脚本语言的支持,直接将其实现了java脚本框架的jar包扔到classpath中即可。比如groovy的发行包已经实现了该规范,只需要将其发行包放入到classpath中然后调用即可。

 

 

    时间原因,暂时就写这么多吧,后面再慢慢补其他特性。。。

分享到:
评论
1 楼 liang1022 2009-09-16  
請問一下JDBC的存取可以寫在腳本裏嗎?
例如:
Class.forName("org.apache.derby.jdbc.EmbeddedDriver"); Connection conn=DriverManager.getConnection("jdbc:derby:数据库名;create=true");

相关推荐

    Java脚本编程:语言框架与模式

    资源名称:Java脚本编程:语言框架与模式内容简介:《Sun公司核心技术丛书·Java脚本编程语言、框架与模式》讲解了脚本语言的基本概念和使用方法,概括了Java开发人员可以使用的解决方案,并探讨了在Java应用程序中...

    高效Java Configure实现的SSM框架应用源码

    项目标题:高效配置的Java SSM框架应用源码 技术栈:主要采用Java语言,辅以CSS和JavaScript进行界面优化与交互。 文件构成:项目共包含40个文件,具体分布如下: - Java源文件:10个,涉及核心业务逻辑及配置实现...

    基于Java和SSM框架的leave-ssm7应用程序设计源码

    本资源提供了一套基于Java和SSM框架的leave-ssm7应用程序设计源码,包含44个文件,其中包括13个Java源代码文件,9个XML配置文件,9个JSP页面文件,4个JPEG图片文件,2个Git忽略文件,2个CSS样式文件,2个JavaScript...

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

    这些支持框架能够让你的Java应用在不作大量修改的情况下,运行Tcl、Python和其他语言编写的脚本。 在Java应用中集成了脚本解释器之后,用户编写的脚本能够直接引用Java应用的类,就如这些脚本属于Java程序的一部分...

    Java SSM框架集成的日志功能增强Demo源码

    项目名称:Java SSM框架集成日志功能增强Demo 主要编程语言:Java ...项目利用Java动态代理机制,通过实现InvocationHandler接口,巧妙地运用AOP(面向切面编程)实现了日志功能,增强了应用的可追踪性与维护性。

    Java 项目-java的JAVA SMART系统-系统框架设计与开发(1).zip

    Java 项目,包含:项目源码、数据库脚本、部署说明等,前后端代码都在里面 。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 一. 技术组成 技术栈:Java,使用 jdk1.8 即可 ...

    JSF Java Server Faces (JSF)框架

    JSF是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准)。JSF(Java Server Faces)技术为开发基于网络用户界面的Java开发者提供了标准的编程接口API以及标签库。就像Struts框架...

    JAVA多服务器通讯框架-聊天功能演示程序 V0.1 alpha

    JAVA多服务器通讯框架是基于NIO开发的Socket通讯框架,实现了客户端和服务器,服务器与服务器之间的通讯功能,适合应用于大型聊天服务器,大型游戏服务器。 本演示程序实现了一个基本的命令行聊天功能,以演示...

    基于Java和SSH的企业级Web应用开发框架设计源码

    本资源提供了一套基于Java和SSH的企业级Web应用开发框架设计源码,包含2438个文件,其中包括672个JavaScript脚本文件,456个PNG图片文件,354个Java源代码文件,172个GIF图片文件,122个CSS样式文件,101个JSP页面...

    JAVA凤凰框架v118应用代码(包含项目调试方法,附整个源码)

    凤凰框架继承了主流框架的特点,应用于大型网站及基于Web的应用。其开发目标是稳定,独立,精炼,简便 相对于117解决了以下问题 * 安全过滤器中屏蔽掉一处跨站脚本攻击的漏洞 * 如果文件没有日志信息,则不执行...

    高效Java Configure实现的SSM框架完整源码

    项目概述: 本项目是一个基于Java Configure配置的高效SSM框架完整源码实现。主要采用Java语言开发,辅以CSS和...简而言之,本项目提供了一套结构清晰、配置高效的SSM框架源码,方便开发者快速构建Java应用程序。

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

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    java开源包1

    JGraphEd 是一个 Java 的图形编辑应用和绘图框架。 Java 穿越NAT方案 JSTUN.tar JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM...

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

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    java源码包---java 源码 大量 实例

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    深入了解Java 脚本化api编程

    Java 脚本 API 是一种独立于框架的脚本语言,使用来自于Java代码的脚本引擎 。可以使用Java语言编写定制/可扩展的应用程序并将自定义脚本语言选择留给最终用户 。下面我们来详细了解一下吧

    Java实战项目-基于SSM框架的药房管理系统(源码+数据库脚本).zip文件

    本文将介绍如何使用SSM框架搭建一个药品管理系统。 1. 技术栈选择和环境搭建 后端框架:选择SSM框架,即Spring+Spring MVC+MyBatis,用于实现后端业务逻辑和数据库操作。 前端框架:选择合适的前端框架,如Bootstrap...

Global site tag (gtag.js) - Google Analytics