我使用Javascript对象作为具有配置属性的对象.例如,我在javascript中有这个对象:
var myProps = {prop1: 'prop1', prop2: 'prop2', 'prop3': 'prop3'};
Run Code Online (Sandbox Code Playgroud)
这个对象(NativeObject)在Java函数中返回给我.例如
public Static void jsStaticFunction_test(NativeObject obj) {
//work with object here
}
Run Code Online (Sandbox Code Playgroud)
我想从object获取所有属性并从中构建HashMap.
任何帮助将不胜感激.
我想使用简洁,动态的语言为JVM开发一些应用程序.最流行的选择似乎是Jython,JRuby,Groovy,也许还有Clojure.
Rhino似乎很快且非常稳定,但我看不到有关Rhino开发和讨论的书籍.除了嵌入式脚本之外,为什么显然很少使用JavaScript?
编辑:我发现这个问题提供了有关基于Rhino的开发的可行性的信息.
我正在检查独角鲸。它看起来很酷,而且我对tusk包管理系统印象特别深刻。然而,由于 narwhal 在 下运行rhino,因此该命令行工具的实用性会受到 JVM 令人讨厌的启动时间的影响。
我知道narwhal它能够在不同的引擎下运行,但尚不清楚是否还有另一种可用的选项,最好是无需大量配置工作即可工作的选项。
我试图让这个narwhal-v8包运行起来,但它似乎明确针对 OSX:它正在寻找 .dylib 文件形式的库。我修改了 makefile 以将其更改为 .so,并告诉它为我的 64 位架构构建 v8。这条路上的下一个绊脚石是 ubuntu 中明显神秘地缺少 iconv 库。我正在努力解决这个问题,但所有这些错误都表明可能存在“做错了”反模式,因此我认为明智的做法是求助于集体智慧。
linux下的narwhal是否可以使用比rhino更快的引擎?或者,我必须跳过什么样的圈子才能让它运行nailgun?
编辑:我已经让它在钉枪下工作了。运行几次后,运行时间narwhal --help下降到 10% 左右。我将尝试制作一个以便携式方式实现此功能的独角鲸引擎。
我一直在使用Jasmine为Web应用程序编写BDD测试.我有兴趣使用Rhino从命令行运行这些相同的测试,我发现这个博客条目非常有帮助.然而; 我的应用程序使用pusher,它提供了一个简单的API,用于使用Web套接字在客户端之间传递事件.
我的测试在浏览器中运行良好,但是通过Rhino运行它们无法连接到推送器.Pusher提供调试流,它会显示身份验证错误或其他故障,但是当我从命令行运行测试时它不会注册任何活动.
这可能是一个简单的是或否答案,但我无法找到任何相关的文档,我是Rhino的新手,所以如果这是一个总的n00b问题,我道歉.
我的问题
正如标题所说,有没有人知道Rhino是否支持websockets API?我在这里做了别的错误,还是依赖于websockets的脚本根本不能通过Rhino工作?
我的总体目标是通过在几个EC2实例上同时运行我已经编写的茉莉花测试作为压力测试; 在重用我现有的javascript测试时,是否有一个很好的(简单的?)方法,或者我应该把它搞砸,然后用服务器端脚本语言编写我的压力测试?我知道selenium grid,但是如果可能的话,我希望避免产生新的浏览器来运行这些测试.
非常感谢!
我有一个像下面这样的类 - 这是一个库的一部分,我根本无法改变它(如果可以,我会重新编写它或用 Java 子类化它)
public class FirstClass
{
public FirstClass(SecondClass arg)
{
...
}
public ThirdClass aMethod()
{
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
我想使用 Rhino 创建一个 Javascript 对象(所以没有关于 JavaScript 与 Java 不同的评论,我知道),但要覆盖方法“aMethod”。
所以在Java中,我会这样做......
public class MySpecialFirstClass extends FirstClass
{
public FirstClass(SecondClass arg)
{
super(arg);
}
public ThirdClass aMethod()
{
ThirdClass toReturn = super.aMethod();
//My implementation goes here.
return toReturn;
}
...
}
Run Code Online (Sandbox Code Playgroud)
但我似乎无法在 Javascript 中做到这一点。到目前为止我尝试过的事情......
function js_FirstClass(arg)
{
var temp = JavaAdaptor(FirstClass,
{
'<init>': FirstClass,
aMethod: function()
{
var toReturn …Run Code Online (Sandbox Code Playgroud) 我正在使用犀牛模拟在mstest中创建一个单元测试.我有一个继承B类的A类.我正在测试A类并为我的测试创建一个实例.它继承的类"B"有一些受保护的方法和受保护的属性,我希望为了测试的利益而访问它们.例如,验证我的基类上的受保护属性是否具有预期值.
我在测试过程中如何访问B类受保护属性的任何想法?
Rhino引擎是否有api可以在中间停止执行脚本.例如,我有一个脚本文件,其中有一个infinte循环.如何在中间停止执行?
当然,我可以阻止启动Rhino引擎的jvm来执行脚本.但是我不想因为这个原因而杀死整个jvm会话,因为我已经以编程方式启动了脚本,并且Rhino Engine也在与我的应用程序相同的JVM中运行.
我有一个 Java 应用程序,它广泛使用 javascripting 来让我们以不同的方式快速配置其不同的模块。在内部,脚本由 Rhino 简单编译,并且可以使用来自 Java 类库、自定义 Java 类或其他 javascript 文件的任何对象。但是我们的脚本变得越来越复杂,以至于我们需要调试和分析这些脚本以查看哪个 Java 方法调用会减慢脚本速度。
那么是否有任何 IDE 在此上下文中提供以下内容:
我查看了 Eclipse / JSDT,但它面向 Web 开发,因此代码完成仅限于 javascript 本机对象和 DOM(后者在上下文中无用)。我知道我可以通过将我们的脚本添加为用户库来为自定义 js 代码添加代码完成。但是我不确定如何集成 Rhino 调试器,而且似乎没有可以处理 Rhino 编译代码的分析器。
我需要在 Java 上运行 Eslint。我想到的唯一解决方案是“浏览” node-js 模块,并尝试在 Rhino 上运行它。任何人都可以提出更好的方法吗?
rhino ×10
javascript ×7
java ×5
autocomplete ×1
c# ×1
eslint ×1
groovy ×1
ide ×1
jasmine ×1
jruby ×1
jython ×1
mstest ×1
narwhal ×1
properties ×1
scriptable ×1
shell ×1
tdd ×1
unit-testing ×1
v8 ×1