Pure JS (6.1):使用 Rhino Shell 和 Debugger 运行和调试 JS
之前一直使用 java 7 自带的 ScriptEngine 执行服务器端 JS,然而,一个重要的缺陷是无法进行调试。
因此我将之前的一些 Java 代码改为 JavaScript 代码,并尝试着使用 Rhino Debugger。
本文就是介绍这方面的探索成果的。
1. Rhino Shell 和 Debugger 介绍
Rhino Shell 可以用于执行 JS,与之前直接通过 Run As Java Application 方式运行没有太大区别。
Rhino Debugger 是一个可以用于调试的 GUI 工具。
为了使用 Rhino Shell 和 Debugger ,首先需要下载 js.jar ,并将其添加到 Build Path 中。
js.jar 的下载地址:
http://www.mozilla.org/rhino/download.html
Rhino 官网关于 Shell 和 Debugger 的介绍:
http://www.mozilla.org/rhino/shell.html
http://www.mozilla.org/rhino/debugger.html
2. Java 代码转为 JavaScript 代码
为了更方便地使用 Rhino Debugger 进行调试,我将之前的一些 Java 代码转换成了 JavaScript 代码。
以下是 script/server.js 的内容,用于代替之前的 JSServer 类(
http://xxing22657-yahoo-com-cn.iteye.com/blog/1052485):
(function() {
var imp, dirs, defaults, server, context;
try {
importer();
consts();
loadScripts();
startMonit();
startServer();
} catch (e) {
print(e);
}
function importer() {
imp = JavaImporter(
java.io,
org.eclipse.jetty.server,
org.eclipse.jetty.servlet,
com.purejs.lib);
}
function consts() {
dirs = ["scripts/lib", "webapp/js/both", "scripts/app"];
defaults = "*.js,*.css,*.ico,*.txt,*.png,*.jpg,*.gif,*.htm,*.html,*.swf";
}
function loadScripts() {
print("Loading Scripts ...");
load("scripts/config.js");
loadDirs(dirs);
}
function startMonit() {
print("Starting Monit ...");
pure.each = each;
pure.monit(dirs, function(file){
file = imp.File(file);
if(file.exists() && file.file) {
load(file);
}
});
}
function startServer() {
print("Starting Server ...");
createServer();
server.start();
server.join();
}
// 以下省略...
}());
scripts/lib/pure/apiServlet.js 的内容如下,用于代替之前的 JSServlet:
(function() {
var servlet = javax.servlet.http.HttpServlet;
pure.apiServlet = servlet({ service: service });
function service(req, res) {
var result;
try {
result = run(req, res);
} catch (e) {
print(e);
result = { error: e.toString(), success: false }
}
if (result != null) {
res.setContentType("text/html; charset=UTF8");
res.getWriter().write(JSON.stringify(result));
}
}
function run(req, res) {
// 省略 ...
}
}());
其他几个类也进行了替换,请下载附件并查看。
3. Run Configurations 设置,运行与调试效果
将 js.jar 添加到项目中之后,我们还需要在 Run Configurations 窗口中设置:
如图,首先需要选择 菜单中的 Run Configurations ...,并创建新的 Configuration:
我们需要分别为 shell 和 debugger 进行设置。
Rhino Shell 的设置如下:
Rhio Debugger 的设置如下:
第一次运行时需要点击窗口右下角的“Run”按钮,之后就可以在快捷菜单中选择 PureJS 和 PureJS_debug 进行启动了:
以下是调试的效果:
当然,仅仅有 debugger 还是不够的,我们还需要测试、日志、编译等等。
以下是近期的研究列表:
使用 Rhino Unit 进行测试 (
http://xxing22657-yahoo-com-cn.iteye.com/blog/1131612)
日志和 proxy 对象 (
http://xxing22657-yahoo-com-cn.iteye.com/blog/1136195)
权限控制、数据验证 (
http://xxing22657-yahoo-com-cn.iteye.com/blog/1136987)
增强可配置性 (
http://xxing22657-yahoo-com-cn.iteye.com/blog/1137790)
配置 Spket 智能感知
使用 Rhino Compliler 编译项目
完成这些研究之后,我们就有一个基本的 Server-side JS 框架了。
分享到:
相关推荐
NULL 博文链接:https://xxing22657-yahoo-com-cn.iteye.com/blog/1131612
Rhino_Debugger Rhino引擎的JS调试工具 直接可运行Jar
NULL 博文链接:https://xxing22657-yahoo-com-cn.iteye.com/blog/1097596
Rhino教程:用Rhino制作一把螺丝刀.doc
NULL 博文链接:https://xxing22657-yahoo-com-cn.iteye.com/blog/1136195
在Rhino JavaScript引擎中使用字节数组 注意 由该代码制成的字节数组可以与Java中的字节数组不同,但它似乎可以像Java字节数组一样完美地工作。 用 let b = ( new ByteArray ( size ) ) . init ( ) ;
javafx绘制界面实现rhino对js脚本的调试功能。
jar包,官方版本,自测可用
在Rhino和Grasshopper上,您可能会或可能不知道的一些很酷的东西和鲜为人知的事实。 犀牛 :rhinoceros: 向我解释NURBS 去看看这个奇妙的解释: 在Rhino中学习建模 上有一个很棒的其中展示了如何使用一种持续约90...
JDK7是Rhino和BWMirror所需的版本,不保证其他JDK可以工作。 安装Git。 将此存储库导入到您喜欢的IDE。 地图包和ChaosLauncher配置 安装此页面中链接的地图包,并按照说明自动配置ChaosLauncher。 这个怎么运作 ...
一个充满希望的 Python 脚本和 js 库,可以在 Rhino3d 中运行和使用 此处文件的目的是构建一个 Rhino 导出工具,该工具将构建一个 html 文件,拉入 Three.js 并在浏览器中显示模型,并可能托管在云中。 移开视线! ...
jar包,官方版本,自测可用
做了个java运行js的工具类,希望对大家有用,其中用到client(获取js)可以自行换成自己的client。主要是用了 Rhino就是JavaScript引擎,它的目的就是实现Java与JavaScript的互操作性。rhino-1.7R1.jar Envjs一个...
弃用通知 该存储库已被弃用,不再维护。 不应该使用它。 如有任何疑问,请与合作者联系。... 如果单独使用它,请注意哈希函数将不起作用,因为它使用的是JS SDK中的$ fh.hash。 有关示例用法,请参见sec_test.js。
windows 平台 debugger 简易方法 操作流程
rview(rview) 犀牛模型查看器 安装依赖项 yarn 在开发模式下启动应用程序(热代码重新加载,错误报告等) quasar dev 注意:您可能需要先安装quasar cli yarn global add @quasar/cli 整理文件 ...
在 OSX 上使用 Rhino 和 Python 需要 Rhinoceros 3D、Python 源库和文本编辑器。 Rhino 的(目前免费的)OSX 版本可以从这里下载: 推荐使用 Komodo Edit 作为文本编辑器,因为它为 IronPython 和 RhinoScript ...
介绍该演示应用程序展示了如何使用Jasmine.js + Env.js + Rhino作为Web应用程序中javascript的测试框架。 Jasmine.js 是一个行为驱动的开发框架,用于测试您JavaScript代码。 它不依赖于任何其他JavaScript框架。 它...