使用JavaScript脚本化Java应用 - 编程入门网
使用JavaScript脚本化Java应用时间:2011-04-03 IBM 邱俊涛脚本化技术 我喜欢在 vim 或者 emacs 编辑环境中进行文档,代码以及邮件等的编写,她们都提 供了良好的命令和快捷键,但是这些都不足以使得她们被誉为 world-class 编辑器,她 们的强大的真正来源,正是脚本技术。使用脚本,您可以将您的 vim 或者 emacs 配置得 无所不能,甚至有人通过脚本来 让 emacs 煮咖啡。 什么是脚本化 脚本化可以使 宿主 程序具有 脚本 所描述的能力,比如流行在 DHTML 页面中的 JavaScript 技术,JavaScript 可以让原本是静态的 HTML 代码的页面“活”起来,具有 动画,局部刷新等更高级的功能。应用程序一般是以二进制的形式发布的,用户很难根据 自己的需求对其进行定制,当然,修改配置文件是一种方式,但是不够灵活。而脚本化则 是通过用户自己设计脚本(程序代码 ),然后将其 注入 到应用中,使得应用的行为得 到改变。 如何脚本化您的应用 通常的做法是,将 宿主 程序的一部分组件暴露给脚本,以方便脚本对其定制,这些 组件的作用范围是全局的(可以通过公开接口暴露,也可以将组件实例设置到脚本上下文 (context)中),脚本可以在其中添加,修改一些子组件,从而实现定制的目的。本文 将通过一个实例来对这个过程以说明,在文章的最后,我们可以得到一个可以运行的小应 用出来,如果您对其有不满意之处,可以任意的扩展它。 JDK 6 中,添加了对脚本的支持,并实现了一些常见的脚本语言与 Java 的交互,比 如 Python(Jython)、 JavaScript(rhino)等语言。文中使用的脚本语言为 JavaScript,宿主语言为 Java。(JavaScript 在 DHTML 中应用很广泛,同时,也是我 最喜欢的一门编程语言) 一个小的 todo 管理器 在文中,我们会先实现一个小型的应用:一个简单的 todo(待办事项)管理器,然后 开发一个插件(脚本)框架,最后将使用这个框架对 todo 管理器进行脚本化。 图 1. sTodo 主界面 使用JavaScript脚本化Java应用(2)时间:2011-04-03 IBM 邱俊涛这是一个简单的 todo 管理器,可以对待办事项(todo item)进行增删改查等操作, 并且可以将这些事项通过邮件发送给指定邮箱等。这个项目目前托管在 Google,项目名 为 sTodo。 图 2. sTodo 右键菜单 设计和实现 sTodo 是用纯 Java 的 Swing 工具包开发的,其中包含一个嵌入式的数据库 sqlite ,整个应用非常简单,我们现在考虑为其增加脚本框架,并为其开发两个脚本,扩展其部 分功能。完整的代码可以从 示例代码 中获得。由于 sTodo 为一个开源项目,并且主要 由本文开发和维护,所以可以自由的对其进行修改、扩展,使其成为一个真实可用的应用 。 在开始之前,读者可以在 sTodo 的项目主页上下载未经过脚本化的初始版本的源代码 ,然后根据文中的步骤自己逐步给 sTodo 加入插件机制。 编写脚本框架 sTodo 中除了主界面之外,还包含其他一些窗口,如用户配置设置(preference)、 新建待办事项窗口、发送邮件窗口等,这些窗口的实现与脚本化无关,我们主要来看看脚 本框架的设计与实现。(如果您恰好对 swing 开发感兴趣,可以参考 sTodo 的源码。) 设计和实现 JDK 6 之后,对脚本的支持是对脚本引擎(Script Engine)的抽象,JDK 提供的框架 设计得非常好,我们在此只是对其进行一个浅包装。具体的功能需要代理到 JDK 的实现 上。 下面是插件框架的类图: 图 3. 插件框架类图 使用JavaScript脚本化Java应用(3)时间:2011-04-03 IBM 邱俊涛我们现在有了对插件的描述的接口(Plugin),以及对插件管理的接口 (PluginManager),并且有了具体的实现类,下面就分别描述一下: 插件接口: 定义一个插件所具备的基本功 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |