Java深度探险分析和总结.docx

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

Java 深度探险系列

作者:成富,组织:孙景卫

Jingweisun@

目录

一、 Java深度历险(一)Java字节代码的操纵 3

动态编译Java源文件 3

Java字节代码增强 6

java.lang.inrsutment 7

总结 8

参考资料 9

二、 Java深度历险(二)——Java类的加载、链接和初始化 9

相关厂商内容 9

相关赞助商 9

Java类的加载 10

Java类的链接 10

Java类的初始化 11

创建自己的类加载器 13

参考资料 14

三、 Java深度历险(三)——Java线程:基本概念、可见性与同步 14

Java线程基本概念 14

可见性 15

Java中的锁 16

Java线程的同步 16

中断线程 17

参考资料 18

四、 Java深度历险(四)——Java垃圾回收机制与引用类型 18

Java垃圾回收机制 18

Java引用类型 19

强引用 20

软引用 20

弱引用 21

幽灵引用 21

引用队列 22

参考资料 23

五、 Java深度历险(五)——Java泛型 23

类型擦除 23

实例分析 24

通配符与上下界 25

类型系统 25

开发自己的泛型类 26

最佳实践 27

参考资料 27

六、 Java深度历险(六)——Java注解 27

使用注解 27

开发注解 28

处理注解 28

实例分析 32

参考资料 33

七、 Java深度历险(七)——Java反射与动态代理 33

基本用法 33

处理泛型 35

动态代理 36

使用案例 37

参考资料 37

八、 Java深度历险(八)——Java/IO 37

流 38

流的使用 38

缓冲区 40

字符与编码 41

通道 42

文件通道 42

套接字通道 43

参考资料 45

九、 感谢 45

十、 备注 45

一、Java深度历险(一)Java字节代

码的操纵

作者成富

【编者按】Java作为业界应用最为广泛的语言之一,深得众多软件厂商和开发者的推崇,更是被包括Oracle在内的众多JCP成员积极地推动发展。但是对于Java语言的深度理解和运用,毕竟是很少会有人涉及的话题。InfoQ中文站特地邀请IBM高级工程师成富为大家撰写这个《Java深度历险》专栏,旨在就Java的一些深度和高级特性分享他的经验。

在一般的Java应用开发过程中,开发人员使用Java的方式比较简单。打开惯用的IDE,编写Java源代码,再利用IDE提供的功能直接运行Java程序就可以了。这种开发模式背后的过程是:开发人员编写的是Java源代码文件(.java),IDE会负责调用Java的编译器把Java源代码编译成平台无关的字节代码(bytecode),以类文件的形式保存在磁盘上

(.class)。Java虚拟机(JVM)会负责把Java字节代码加载并执行。Java通过这种方式

来实现其“编写一次,到处运行(Writeonce,runanywhere)”的目标。Java类文件中包含的字节代码可以被不同平台上的JVM所使用。Java字节代码不仅可以以文件形式存在于磁盘上,也可以通过网络方式来下载,还可以只存在于内存中。JVM中的类加载器会负责从包含字节代码的字节数组(byte[])中定义出Java类。在某些情况下,可能会需要动态的生成Java字节代码,或是对已有的Java字节代码进行修改。这个时候就需要用到本文中将要介绍的相关技术。首先介绍一下如何动态编译Java源文件。

动态编译Java源文件

在一般情况下,开发人员都是在程序运行之前就编写完成了全部的Java源代码并且成功编译。对有些应用来说,Java源代码的内容在运行时刻才能确定。这个时候就需要动态编译源代码来生成Java字节代码,再由JVM来加载执行。典型的场景是很多算法竞赛的在线评测系统(如PKUJudgeOnline),允许用户上传Java代码,由系统在后台编译、运行并进行判定。在动态编译Java源文件时,使用的做法是直接在程序中调用Java编译器。

JSR199引入了Java编译器API。如果使用JDK6的话,可以通过此API来动态编译Java代码。比如下面的代码用来动态编译最简单的HelloWorld类。该Java类的代码是保存在一个字符串中的。

publicclassCompilerTest{

pub

文档评论(0)

tianya189 + 关注
官方认证
内容提供者

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

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档