网站大量收购闲置独家精品文档,联系QQ:2885784924

java下第八章编译器API.ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 小结 JDK 1.6 的编译器新特性,使得开发者可以更自如的控制编译的过程,这给了工具开发者更加灵活的自由度。通过 API 的调用完成编译操作的特性,使得开发者可以更方便、高效地将编译变为软件系统运行时的服务。而编译更广泛形式的源代码,则为整合更多的数据源及功能提供了强大的支持。相信随着 JDK 的不断完善,更多的工具将具有 API 支持,我们拭目以待。 谢 谢! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 第八章 编译器API 学习目标 编译器概述,了解API能够实现的功能。 能够熟练使用ToolProvider获得系统默认编译器,并动态完成编译操作。 熟练应用StandardJavaFileManager管理相关的输入和输出,以及编译非文本文件。 能够运用DiagnosticListener监听、收集编译过程中的诊断信息。 范例导入 程序代码的自我复制和自我修改是一种非常强大的能力,但这种能力常被滥用来制造病毒,以至于现代操作系统通常不允许修改程序的代码段和禁用调用栈的执行权限来保证代码的安全性。这使得通过修改自身代码来实现某种逻辑的合理编程方法受到了限制。 而JDK 1.6赋予了程序员在运行时刻产生并编译Java源代码的能力,这和Java的反射机制结合在一起,使得Java程序可以在运行过程中产生新类,替换旧类,动态修改自身组件以进行自适应优化运行时刻的性能。 编译器API概述 - 1 JDK 1.6 提供了在运行时调用编译器的 API,后面我们将假设把此 API 应用在 JSP 技术中。在传统的 JSP 技术中,服务器处理 JSP 通常需要进行下面六个步骤:、分析 JSP 代码、生成 Java 代码、将 Java 代码写入存储器、启动另外一个进程并运行编译器编译 Java 代码、将类文件写入存储器、服务器读入类文件并运行; 但如果采用运行时编译,可以同时简化步骤 4 和 5,节约新进程的开销和写入存储器的输出开销,提高系统效率。 编译器API概述 - 2 新 API 的第二个新特性是可以编译抽象文件,理论上是任何形式的对象,只要该对象实现了特定的接口。 第三个新特性是可以收集编译时的诊断信息。 由此可见编译器API产生主要是面向热部署或者增量编译这样的场合,目的是增强Java和JVM的交互性。 ToolProvider类 ToolProvider类为找出Tool提供了方法,例如,编译器的提供者。 成员方法: public static JavaCompiler getSystemJavaCompiler() public static ClassLoader getSystemToolClassLoader() Tool接口 Tool接口是JavaCompiler接口的父接口,定义了命令行工具的共同的接口。 成员方法: public SetSourceVersion getSourceVersions() public int run(InputStream in, OutputStream out, OutputStream err, String... arguments) 动态编译练习 练习:编写一个java源文件Hello.java,然后写一段代码完成对Hello.java文件的动态编译和运行。程序清单:Hello.java 。 public class Hello{ public static void main(String[] args) { System.out.println(Hello World!); System.out.println(你好,世界!); } } 使用StandardJavaFileManager编译-1 JDK 1.6 的编译器 API 强大之处在于,它可以编译的源文件的形式并不局限于文本文件。JavaCompiler 类依靠文件管理服务可以编译多种形式的源文件。比如直接由内存中的字符串构

文档评论(0)

junjun37473 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档