`

Rhino -- 基于java的javascript实现

 
阅读更多
http://www.cnblogs.com/cczw/archive/2012/07/16/2593957.html
这几天突然对js引擎非常感兴趣,大概了解了一下,记下来备忘。javascript引擎大家比较熟悉的应该是当前比较火的Chrome V8引擎。以快速闻名。v8基于c++开发。这里就不多阐述了。另外一个是 基于java的Rhino引擎,这个想来大家不是很了解。下面来简单介绍一下。

Rhino简介
(简介这部分是抄的)

Rhino 是一种使用 Java 语言编写的 JavaScript 的开源实现,原先由Mozilla开发,现在被集成进入JDK 6.0。与其他很多语言一样,Rhino 是一种动态类型的、基于对象的脚本语言,它可以简单地访问各种 Java 类库。Rhino 从 JavaScript 中借用了很多语法,让程序员可以快速编写功能强大的程序。最为明显的区别是,Rhino 不再使用语句结束符( ; ),放宽了变量声明规则,并且极大地简化了修改和检索对象属性的语法(没有求助于调用存取方法)。

由于 Rhino 是 JavaScript 的一种基于 Java 的实现,所以对于 Java 开发人员来说,它应该特别易于使用。JavaScript 的(以及 Rhino 的)语法非常类似于 Java 编程语言。这两种语言都采用了与 Java 编程语言相似的循环和条件结构,并且遵循类似的语法模式来表示这些结构。

虽然 Rhino 与本系列文章中介绍的其他编程语言具有很多共同点,但对于 Java 平台上的编程而言,它也有独特之处(可能有时有些不同的地方)。Rhino 是一种 基于原型的(prototype-based)语言,而不是一种 基于类的(class-based)语言。在 Rhino 中,您可以构建对象,而不是类。除了类的对象实例之外,这样做还可以让您避免构建和操作类的开发、部署和执行成本。正如您将在文中发现的那样,诸如 Rhino 这类基于原型的语言在开发和运行基于 GUI 的应用程序时尤其有效。

如何使用Rhino
你可以去Rhino的主页下载最新的源代码和文档,解压开之后有一个js.jar 这就是Rhino的库文件。Rhino应用方式我分为console,js调java,java调js三种。下面来一一阐述。

一 console  shell命令
相信很多技术猿们习惯使用酷酷的console控制台来敲打shell命令。可这些一般都是服务端语言。现在你也可以在控制台中敲到js代码了。用法很简单。首先要将js.jar文件放入windows的java\jdk1.6.0\jre\lib\ext目录,mac的 /System/Library/Java/Extensions/目录下。

然后你就可以在命令行中敲打

java  org.mozilla.javascript.tools.shell.Main
然后你就会看到像这样的输出:

Rhino 1.7 release 4 2012 06 18
js>
这样你就可以调试js代码了,这里你既可以加载js文件来运行,也可以直接运行js语法语句,并且Rhino借用了java中很多的基础语法,使我们写起代码来更easy。下面我们来试试看。

直接写代码,效果如下:

js> var a={'name':'zhangwen','age':30}
js> a.name
zhangwen
js> a.age
30
新建一个test.js文件,内容如下:

function test(str){
   var name=str;
   print(name);
}


然后在console中输入:

js> load('test.js');
js> test('awen'); 
awen
js>
体验了这两种方式后感觉是不是很酷?



二 Rhino中调用JAVA

不说废话,直接上代码:

js> var date=new java.util.Date();
js> date
Mon Jul 16 17:04:07 CST 2012
js> java.lang.Math.PI
3.141592653589793
当然,你也先导入包,importPackage(java.util)(相当于java中的import package)那么代码中就不用写类名的包路径了,var date=new Date();不知道细心地同学发现没有。在javascript中也有原生的Date,那这样我们就应该避免这样的写法,防止代码中混乱。

Rhino实现Java接口:

复制代码
js> var obj={run:function(){print("\nrunning...");}}
js> var r=new java.lang.Runnable(obj);
js> var t=new java.lang.Thread(r);
js> t.start();
js>
running...
复制代码
Rhino创建Java 数组

复制代码
js> var array=java.lang.reflect.Array.newInstance(java.lang.String, 2); 
js> array[0]="恩";    

js> array[1]="哦";

js> java.util.Arrays.toString(array);
[恩, 哦]
复制代码
三 Java对象操纵JavaScript

复制代码
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;

public static void main(String[] args) {
   Context ctx=Context.enter();
   Scriptable scope=ctx.initStandardObjects();
  
   String jsStr="100*20/10";
   Object result=ctx.evaluateString(scope, jsStr, null, 0,null);
   System.out.println("result="+result);
}
复制代码
分享到:
评论

相关推荐

    rhino-1.7.7.1.jar(Rhino for java)

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

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

    本篇文章将深入探讨如何在Java项目中使用Rhino来执行JavaScript,并展示从Java调用JavaScript函数以及从JavaScript调用Java方法的实例。 首先,你需要下载Rhino的jar包。你可以在Mozilla的开发者网站上找到它...

    rhino-1.7.7.1

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

    rhino-1.7.7.1.jar 及源码

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

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

    Rhino的核心是ECMAScript的实现,这是一种标准化的脚本语言,JavaScript就是基于此标准的一种方言。ECMAScript提供了动态类型、函数式编程和原型继承等特性,使得Rhino成为Java开发者在服务器端或嵌入式环境执行...

    rhinoforandroid-rhino-r6.1.1-sl4a-r6.2.0-.rar

    Rhino的apk包。 Rhino 是开源的 JavaScript 引擎,是完全基于 Java 实现,几乎可以使用 JavaScript 完成 Java 所有的工作,在安卓上运行,还有一个SL4A.APK包,版本都标在上面了

    浏览器-----用java编写---简单实用

    总的来说,这个基于Java的简单浏览器项目是一个很好的学习工具,可以帮助开发者理解网络通信的基本原理,掌握HTTP协议,以及如何在Java中实现这些概念。虽然它可能没有商业级浏览器那么复杂和全面,但对于初学者和...

    基于java的服务端JavaScript框架 RingoJS.zip

    - 通过 Rhino 或 Nashorn JavaScript 引擎,RingoJS 实现了JavaScript代码与Java代码的无缝交互,使得开发者能够利用JavaScript编写业务逻辑,同时利用Java的系统集成和企业级特性。 2. **轻量级与快速** - ...

    效率非常快的java读取javascript,附带源码和js.jar

    这个“效率非常快的java读取javascript”很可能就是基于Rhino引擎实现的一个快速解析和执行JavaScript的示例。 Rhino的核心特性包括: 1. **快速执行**:Rhino是用Java实现的,因此它可以充分利用Java的性能优势,...

    基于Java的源码-服务端JavaScript框架 RingoJS.zip

    RingoJS是一个开源的、基于Java的服务器端JavaScript框架,它允许开发者使用JavaScript语言来编写全功能的Web应用。这个框架的设计目标是提供一个高效、轻量级且易于使用的环境,使得JavaScript开发者能够利用Java...

    rhino-handlebars-poc

    【标题】"Rhino-Handlebars-PoC"是一个基于JavaScript的项目,它演示了如何使用Rhino JavaScript引擎和Handlebars模板引擎进行结合操作。Rhino是Mozilla开发的一个开源JavaScript引擎,它允许JavaScript代码在Java...

    基于Java的实例源码-服务端JavaScript框架 RingoJS.zip

    RingoJS是一个基于Java平台的轻量级服务端JavaScript框架,它允许开发者使用JavaScript语言来构建高性能、可扩展的Web应用程序。这个实例源码提供了一个深入理解RingoJS工作原理和开发流程的机会。 首先,RingoJS的...

    org.mozilla.javascript-1.7.2.jar.zip

    Rhino是基于Java平台的,能够直接运行在Java虚拟机(JVM)上,使得JavaScript代码能够与Java代码无缝集成。Rhino 1.7.2是Rhino引擎的一个特定版本,它提供了对ECMAScript 3标准的完整支持,并引入了一些ES4的前瞻...

    基于Java的服务端JavaScript框架 RingoJS.zip

    这个框架基于Java平台,利用了Java的灵活性和可扩展性,同时继承了JavaScript的简洁语法和动态特性,为开发者提供了全新的开发体验。 RingoJS的核心是Rhino JavaScript引擎,这是一个由Mozilla开发的JavaScript实现...

    Java和JavaScript库进行交互

    Rhino是JavaScript的开源实现,可以在Java环境中运行,提供了一种在Java中执行JavaScript代码的方式。 7. **Node.js和Java Bridge**:Node.js是基于V8 JavaScript引擎的服务器端运行环境,可以通过一些库(如J2V8或...

    Pure JS (4.3): pure.db.js 的实现(基于 MongoDB Rhino Driver)

    《纯JavaScript实现:pure.db.js基于MongoDB Rhino Driver详解》 在JavaScript的世界里,数据库操作通常依赖于服务器端的语言支持,如PHP、Python或Node.js等。然而,有一种另辟蹊径的方式,即通过Rhino JavaScript...

    xzopen-XZUnitTest-master_java_

    描述提到"基于控制台JavaScript单元测试框架",这可能意味着项目包含了JavaScript单元测试的元素,可能是在Java环境中运行JavaScript代码进行测试,或者是为了Java Web应用的前端部分提供测试支持。这可能涉及到像JS...

    Java用 Rhino/Nashorn 代替第三方 JSON 转换库

    随后,随着Java 8版本的发布,Oracle推出了Nashorn引擎,这是一个全新的JavaScript引擎,它基于Java平台并针对Java 8的新特性进行了优化,能够提供比Rhino更佳的性能。 使用Rhino/Nashorn来处理JSON数据转换,其...

    基于Java的实例源码-网页浏览器 Lobo.zip

    4. **JavaScript引擎**:为了处理网页中的JavaScript代码,Lobo可能集成了一个JavaScript引擎,如Rhino或Nashorn,允许执行JavaScript脚本并与Java代码交互。 5. **图像处理**:Java 2D API被用来处理和显示网页中...

    java实现的浏览器

    Java实现的浏览器是一种基于Java编程语言开发的网页浏览软件。这个项目可能是一个学习或实验性质的尝试,旨在理解和实现浏览器的基本功能。虽然描述中提到它做得很粗糙,但对于我们理解Java在构建网络应用中的能力,...

Global site tag (gtag.js) - Google Analytics