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

Rhino 1.7与Java集成的一个小例子

阅读更多
在读Steve Yegg的blog上Rhinos and Tigers的时候读到这么一页演示稿:

以前一直没这么试过,觉得很兴奋,马上打开Rhino 1.7R1的命令行交互解释器来试了下,果然可以
Rhino 1.7 release 1 2008 03 06
js> Thread = java.lang.Thread
[JavaClass java.lang.Thread]
js> Runnable = java.lang.Runnable
[JavaClass java.lang.Runnable]
js> var thread = new Thread(new Runnable() {
  >     run: function() { print('hello!') }
  > })
js> thread.start()
hello!

js> var obj1 = {
  >     run: function() { print('hi') }
  > }
js> new Thread(new Runnable(obj1)).start()
hi

js> var obj2 = { speak: function() { print('Rhino rocks!') }}
js> obj2.run = function() { this.speak() }
js> var foo = new JavaAdapter(Thread, obj2)
js> foo.start()
Rhino rocks!


这种object literal语法是JavaScript里让我兴奋的几种语法结构之一:
var obj1 = { run: function() { print('hi') }}

让需要某种类型但该类型只会被使用一次,定义一个类太浪费了。用object literal定义一个匿名类型就不错。当然JavaScript里的这个object literal算不上定义了匿名类型——感觉上只是声明了一个hashtable而已。

Steve Yegg的那个演讲还有不少有趣的地方:VM与语言互操作、Scala的类型系统等。得慢慢把其中的信息吸收过来。不过既然是rant,里面的内容就不能全信了……那个帖得连回复一起读。

P.S. 上面代码里我先写了这两行:
Thread = java.lang.Thread
Runnable = java.lang.Runnable

声明了两个变量分别代表Thread类与Runnable接口。因为Rhino不会自动引入java.lang包,所以不这么做的话每次使用这些类和接口都要写完整的包名+类名了,我嫌麻烦所以用变量来简化。
分享到:
评论
4 楼 RednaxelaFX 2012-02-13  
dlewis 写道
我去,这点代码还值得要别人的,直接看官方文档啊,简单的接口实现。

当年正好看到了顺便记下来而已…
3 楼 dlewis 2012-02-13  
我去,这点代码还值得要别人的,直接看官方文档啊,简单的接口实现。
2 楼 poweryoung 2008-06-18  
同上无法建立连接的飘过...
1 楼 jhpx 2008-06-17  
神啊,你还活着的话快点把代码写完扔我吧……
无论短信、手机、QQ都无反应,只能这里留言了……

相关推荐

    rhino-1.7.7.2

    rhino-1.7.7.2是较新的版本,是一种用Java编写的Javascript解释器

    rhino-1.7.7.1.jar(Rhino for java)

    Rhino的jar包。 Rhino 是开源的 JavaScript 引擎,是完全基于 Java 实现,几乎可以使用 JavaScript 完成 Java 所有的工作。

    rhino-1.7R3.jar

    java运行依赖jar包

    rhino-1.7.7.1

    Rhino 是一种使用 Java 语言编写的 JavaScript 的开源实现,原先由Mozilla开发,现在被集成进入JDK 6.0。与其他很多语言一样,Rhino 是一种动态类型的、基于对象的脚本语言,它可以简单地访问各种 Java 类库。Rhino ...

    Android 不用webview 执行js代码 rhino-1.7.7.2.jar

    Android 中不在用webview的情况下 执行js代码并得到返回值

    rhino-1.7.7.1.jar 及源码

    Rhino 是开源的 JavaScript 引擎,是完全基于 Java 实现,几乎可以使用 JavaScript 完成 Java 所有的工作。 官网网址:https://developer.mozilla.org/zh-CN/docs/Mozilla/Projects/Rhino/Download_Rhino

    深入浅出Rhino:Java与JS互操作

    1. **Rhino引擎介绍**:Rhino是JavaScript在Java平台上的实现,它的设计目标是提供一个快速、灵活且易于集成的JavaScript解析器。Rhino不仅支持ECMAScript标准,还提供了一些Java特有的功能,如访问Java对象和类库。...

    java运行js脚本引擎-----rhino

    Rhino是Mozilla基金会开发的一个开源项目,它完全用Java编写,因此可以无缝集成到Java环境中。 Rhino的核心是ECMAScript的实现,这是一种标准化的脚本语言,JavaScript就是基于此标准的一种方言。ECMAScript提供了...

    rhino-demo-1.7R5-1.el7.noarch.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    rhino1_7R4.zip

    Rhino 1.7R4还支持插件扩展,如Grasshopper,这是一个图形化编程工具,允许用户通过拖拽节点来创建算法,实现复杂的几何形态生成,这对于参数化设计尤其有用。此外,Rhino与其他软件的兼容性也是其亮点,它可以导入...

    FF的js引擎rhino源码,java编写

    1. **设计目标**:Rhino的主要设计目标是提供一个高效的JavaScript解释器,能够在Java平台上运行JavaScript代码,并且与Java环境无缝集成,实现跨平台的脚本编程。 2. **JS引擎结构**:Rhino引擎主要包括以下几个...

    rhino1_7R2.zip

    rhino1_7R2.zip Mozilla Scripting Java Rhino classes (js.jar) not found - Javascript disabled java.lang.NoClassDefFoundError: org/mozilla/javascript/Scriptable

    rhino-1.7R5-1.el7.noarch.rpm

    离线安装包,亲测可用

    Rhino_v1.7.2

    通过java执行JavaScript代码,并将结果转换成java数据类型。

    Rhino脚本引擎技术介绍

    Rhino脚本引擎是JavaScript的一个开源实现,它能够运行JavaScript风格的脚本代码,并且可以通过这个引擎调用Java语言编写的方法。Rhino脚本引擎可以嵌入Java应用程序中执行,其最大的特点是脚本的修改不需要重启Java...

    一个java的jar包可以集成到IDE中做JAVASCRIPT的测试。

    然而,在这个特定的情况下,我们可以看到一个非传统但非常实用的应用场景:将Java的jar包集成到集成开发环境(IDE)中,用于JavaScript的测试。这主要涉及到Java与JavaScript的交互以及IDE的扩展能力。 首先,我们...

    env.rhino.1.2.js

    Rhino就是JavaScript引擎,它的目的就是实现Java与JavaScript的互操作性。rhino-1.7R1.jar Envjs一个纯js方式在无浏览器环境下模拟浏览器的行为。envjs-1.2.js 一般网站js中都会用到jauery,所以还用了jauery.js

    BeanShell和Mozilla Rhino详细介绍和例子

    而Mozilla Rhino则是一个JavaScript解释器,它是用Java实现的,完全符合Ecma-262标准,使得JavaScript可以直接在Java环境中运行。Rhino的主要用途包括: 1. **应用程序扩展和定制**:Rhino可以用来扩展Java应用的...

    使用Rhino让java执行javascript的方法实例

    这个例子展示了Java和JavaScript之间的双向通信,使得Java应用程序能够充分利用JavaScript的灵活性和丰富的库资源,同时保持Java的稳定性和性能。 总的来说,Rhino提供了在Java中执行JavaScript的强大功能,这对于...

Global site tag (gtag.js) - Google Analytics