`
huaiyude06
  • 浏览: 28082 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

通过rhino学习编译原理(一)

阅读更多

Rhino:

    rhino是使用java代码实现的javascript解释器,它实现了javascript的核心,符合Ecma-262标准。

例如使用java代码执行javascript如下:

      public static void main(String[] args) {
		Context ctx = Context.enter();
		Scriptable scope = ctx.initStandardObjects();

		scope.put("x", scope, new Integer(20));
		scope.put("y", scope, new Integer(30));
		try {
			ctx.evaluateString(scope, "var result=x+y", "", 1, null);
			System.out.println(scope.get("result", scope));
		} finally {
			Context.exit();
		}
	}

    这样就能打印20+30的结果了。

rhino执行该代码的过程:

       1.先设置环境,生成各种javascript的本地对象,如:Object,Function

       2.使用语法分析对字符串进行分析生成ast。

       3.然后再使用IRFactory类将ast转换中间表示形式。

       4.然后再将该中间表示形式转换为二进制代码。

       5.然后执行该代码得出结果。

 

Rhino的包结构:

 

org.mozilla.javascript包:

    该包内的对象是实现javascript的主要对象。

 

org.mozilla.javascript.ast包:

    rhino中语法分析器生成的ast表示类都在该包内。

 

org.mozilla.javascript.debug包:

    该包实现了javascript的debug功能。

 

org.mozilla.javascript.optimizer包:

    该包实现了javascipt生成代码的代码优化。

 

org.mozilla.javascript.regexp包:

    该包实现了javascript正侧表达式的功能。

 

以上就为Rhino的主要包。

分享到:
评论

相关推荐

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

    Rhino的源码对于学习JavaScript引擎内部工作原理、深入理解JavaScript语法解析、编译和执行过程,以及Java与JavaScript的交互有着极大的价值。以下将详细阐述Rhino的一些关键知识点: 1. **设计目标**:Rhino的主要...

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

    9. **源码分析**:作为一个开源项目,Rhino的源码是学习其工作原理的宝贵资源。部分章节可能深入到源码层面,帮助读者更深刻地理解Rhino的内部工作机制。 总之,《深入浅出Rhino:Java与JS互操作》是一本全面解析...

    rhino1_7R1

    虽然JavaScript最初被设计为一种解释型语言,但Rhino通过使用即时编译(JIT)技术,将JavaScript代码转换为优化过的本地机器代码,从而实现了接近原生Java的速度。这对于需要高性能计算的场景来说尤其重要。 在...

    Rhino-开源

    Rhino不仅仅是一个简单的解释器,它还提供了一个完整的编译器,可以将JavaScript代码编译成Java字节码,从而进一步提升执行效率。这一特性使得Rhino成为构建大型、高性能JavaScript应用的理想选择。此外,由于Rhino...

    tyrus-sample-draw-1.2.1.zip

    【描述】中的"rhino-maven-plugin.zip"是指Rhino Maven插件,这是一个基于Mozilla Rhino的工具,它能够将JavaScript代码编译为Java字节码。Rhino是Mozilla开源的一个JavaScript引擎,它实现了ECMAScript标准,并可以...

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

    总的来说,这个压缩包提供的可能是使用Rhino引擎高效读取和执行JavaScript的示例代码,通过分析和学习这些代码,开发者可以更好地理解和利用Rhino这一强大的工具,提升Java应用程序的动态性和灵活性。

    javac++.zip

    这个资源对于Java开发者,尤其是那些对JVM底层机制和Java编译原理感兴趣的程序员来说是极其宝贵的。 【描述】中的知识点主要包括以下几个部分: 1. **JDK7**: Java Development Kit的第7个主要版本,它引入了许多...

    Android-JsDroidCmd

    8. **学习与进阶**:对于想要深入学习Android自动化测试的开发者,JsDroidCmd提供了丰富的学习材料,可以通过研究源码理解其工作原理,同时结合JavaScript的学习,可以编写出更加复杂和灵活的自动化脚本。...

    ajax与java程序设计学习摘要完整版

    ### AJAX与Java程序设计学习摘要知识点详解 #### 第二章 开发工具 ##### 1. Javascript源代码编辑器 - JSEclipse ...通过对这些工具的学习和掌握,开发者可以更加高效地完成开发任务,提高应用程序的性能和用户体验。

    Python-解决爬虫中遇到的js加密问题

    在Python Web爬虫开发中,我们经常会遇到网页...通过不断实践和学习,我们可以克服这些挑战,成功获取到所需的数据。在实际操作中,应遵循合法、道德的爬虫原则,尊重网站的Robots协议,避免对目标网站造成过大压力。

    struts-scripting-1.0.1-src

    Struts 是一个非常著名的开源框架,它主要用于构建企业级的Java Web应用程序。Struts-scripting-1.0.1-src 是 Struts 框架...但对于理解Struts框架以及学习脚本在Web应用中的应用,这个源码包仍是一个宝贵的学习资料。

    Zend Framework 中文帮助手册chm.PDF2个版本

    描述中提到"压缩包内有2个文档,一个是CHM版,一个是PDF版本的",确认了压缩文件的内容,用户可以根据个人偏好选择适合的格式进行学习和参考。 **标签解析** 标签包括"zf", "chm", "Zend Framework", "中文帮助API...

    基于java的开发源码-网页浏览器 Lobo.zip

    4. **JavaScript支持**:虽然Java本身不支持JavaScript执行,但Lobo可能集成了一种JavaScript引擎,如Rhino或Nashorn,以实现对网页脚本的支持。 5. **安全性**:理解Java安全模型在浏览器中的应用,包括沙箱机制和...

    RhinoPluginTest

    【RhinoPluginTest】是一个基于C#开发的插件测试...通过学习和实践【RhinoPluginTest】项目,开发者不仅能掌握C#编程,还能深入理解Rhino的内部工作原理,从而创造出满足特定需求的定制化工具,提升设计和建模的效率。

    Java高级面试JVM虚拟机、内存结构、垃圾回收机制

    Java高级面试中,JVM(Java Virtual Machine)虚拟机是一个重要的知识点,它是Java程序运行的基础。JVM有多种实现,其中OpenJDK和Sun JDK是最常见的。OpenJDK是JDK的开源版本,遵循GPL V2协议,允许商业使用,但不...

    struts-scripting-1.0.1

    1. **脚本支持**:Struts Scripting 1.0.1支持多种脚本语言,包括JavaScript(通过Rhino引擎)、Groovy和BeanShell。这些语言都有各自的优点,如JavaScript的广泛使用,Groovy的简洁语法,以及BeanShell的轻量级特性...

    JDK6API中文参考

    **JDK6 API中文参考** Java Development Kit (JDK) 是Java编程语言的核心工具集,它为开发和运行Java应用程序提供了必要的组件...同时,JDK 6的API也是学习后续版本JDK的基础,因为许多核心概念和原理都是沿用下来的。

Global site tag (gtag.js) - Google Analytics