Java编译技术-Read.doc

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java编译技术-Read.doc

PAGE  PAGE 18 Java编译技术 一 引言 目的:深刻理解Java技术及其本质,选择自己需要的系统。 分类: (1)采用解释器的Java编译系统 (2)采用及时编译技术的Java编译系统 (3)采用动态编译的Java编译系统 (4)采用本地编译技术的Java编译系统 (5)采用转换器的Java编译系统 编译器就是从源语言到目标语言的转换器。 编译的发展: (1)没有编译 机器语言,最早的机器是不需要编译器的,因为最早的机器是小、简单的,在这样的机器上,能以二进制流的方式输入程序,可以不要编译器。 (2)汇编语言和汇编程序 随着更复杂的机器的出现,出现了汇编语言和汇编程序,汇编程序主要是一对一地把汇编指令变换成机器指令。 (3)编译程序、编译系统 独立于特定机器的机器码的高级程序语言来描述问题,这些独立于特定目标机的程序语言就需要完善的编译程序来编译生成特定于机器的目标码。 没有编译器,也就没有可以独立于机器的高级语言。 编译系统设计的好坏影响着程序编译时间的长短,编译生成的目标代码的质量。 优点: 1)大大提高了程序员的编程效率; 2)程序语言语义的限制,减少了程序的逻辑错误; 3)程序也很容易进行调试。 缺点: 编译器及其编译后生成的目标代码,在速度和空间上都不能与汇编语言相匹敌。 1.静态编译器 静态编译器也即通常所说的编译器。 其工作原理是:多个编译单元的编译结果被链接生成一个可执行文件,也可以将编译单元和以前编译的系统库链接起来生成一个可执行文件。 库文件也可以在程序执行时再链接,这样的库被称为动态链接库(DLLs)。C、C++都采用这种编译器。 优点: 是生成的代码效率高,即生成的代码执行速度快; 缺点: 编译过程需要花些时间,而且编译器对代码优化的越好,需要花费的时间也越多。 编译的时间长不利于程序的调试,因为一个程序在成功地运行前可能需要几十次甚至上百次的编译。 2.解释器 语言解释器(为了与Java编译系统中的解释器相区别,将此处的解释器称为语言解释器)也是以源程序作为输入,但它不是在翻译结束时生成可执行的目标码,而是按照源语言的定义边解释边执行。 Basic、Lisp就采用的是纯解释器。 优点:适用于调试程序,所以程序语言的调试工具一般都采用语言解释器,语言解释器还常用于作业控制语言和交互语言的“立即命令”。 缺点: 效率低(也即速度慢),它可能对某一源程序语句反复解释执行若干次,而且不能对结果代码进行优化。 编译执行和解释执行是两种最基本的运行程序的途径,目前出现的各种各样的Java编译系统无非是这两种运行途径的组合。 目前,运行Java的方法主要有四种:解释、及时编译、动态编译、本地编译、转换器及硬件实现。 Java源程序经编译后生成字节码文件,字节码程序可被字节码优化器进行优化,生成高效的字节码,最后字节码被虚拟机或Java芯片执行,此外,也可采用类似C/C++的静态编译技术,将源程序或字节码编译、连接后生成可执行文件,直接在本地执行。 Java源程序 源程序编译程序 字节码 Java CPU 本机CPU 本机OS 本 编译程序 虚 拟 机 解释器 JIT编译器 动态编译器 优化器 二 具体编译技术 1 采用解释器的Java编译系统 优点: 平台无关性,支持Java的动态特性和安全性。 缺点: 与完全编译执行的程序相比,速度还是太慢。由于是解释执行,也很难采取优化措施。 2 采用及时编译技术的Java编译系统 及时编译技术(just-in-time compiler, JIT ),即在方法被执行前,将其动态的编译为机器代码(注:被编译后的代码被保存在内存中)。 优点: 执行速度快; 保持了Java的动态特性、可移植性、安全性。 缺点: 占部分内存空间; JIT编译器需要额外的空间放编译生成的代码; 能采用的优化技术很有限; 对于某些花费在Java代码执行上的时间少的,采用JIT编译及其优化技术无法得到性能的显著改善。 例如:回收、同步、调本地方法等。 3 采用动态编译的Java编译系统 Sun公司推出HotSpot,是将即时编译器和解释器结合起来,有选择地编译和优化频繁执行的方法。 动态编译器包括解释器、及时编译器、测试器,当方法字节码被首次执行时采用解

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档