Java 版 (精华区)
发信人: allen (夏夜晚风·原来的我), 信区: Java
标 题: [蔡学镛][Learning Java the O'Reilly's Way]14
发信站: 哈工大紫丁香 (2002年08月21日00:50:28 星期三), 站内信件
发信人: NullPointer (宁与骐骥亢轭,不随驽马之迹)
发信站: BBS 水木清华站 (Sun Jun 30 19:26:03 2002)
Learning Java the O'Reilly's Way (Part XIV)
Java Virtual Machine
Java是近年突然窜红的新星,「保全」、「跨平台」......,大家
对它的诸多特色津津乐道,但你可曾认真思考:是谁在 Java 的背
后成就这些光彩的?
因为 Java 虚拟机器(Java Virtual Machine,简称 JVM)的屏障,
所以 Java 程序可以跨平台;因为 JVM 进行多项验证,所以 Java
具保全性。.... 原来,JVM 是成就 Java的一大幕后功臣。
顾名思义,Java 虚拟机器是一部假想的计算机,也是 Java 技术的
核心所在,所有的Java 程序都是在这部假想的计算机上执行的。
Java 虚拟机器可以以多种不同的形式存在:以一般程序的方式存在
,架构在 OS 之上,例如 java.exe;以操作系统的方式存在,架构
在硬件上,例如Java OS;甚至直接以硬件的方式存在,例如JavaChip
不过我认为以硬件的方式存在的虚拟机器已经太「真实」,不适合叫
做「虚拟」机器)。
本书读者群设定在熟悉 Java 语言并略懂 C/C++ 的程序员。本书的
内容介绍性与教学性兼而有之,某些部份还可以当成参考资料来查阅
。本书是一本以「彻底解说」为导向的书,书中有许多实用的信息以
及 Java 虚拟机器程序范例。
本书是写来和 JVM 规格书作为互补之用的。JVM 规格书告诉我们细部
的规则和语意,而本书提供了更多说明与深入浅出的描述,并伴随着
许多范例让你亲自尝试。比方说:本书教你写出一个类别加载者(class
loader)、透过假码(pseudo-code)的说明来揭露instanceof的运作
细节、用 JVM 指令来写出一个 applet.... 等等。本书也舍弃一些内
容不提,比方说:IEEE 格式、类别验证者(class verifier)的动作
方式.... 等。不过,这些资料你分别可以在 O'Reilly 出版的《Java
Language Reference》以及《Java Security》等书上找到详细的资料。
本书的结构分为三部份:第一部份是机器概观,第二部份是指令指南,
第三部份是参考资料。如果你对 Java 虚拟机器不熟悉,你可能想把
这本书拿到一个安静的地方,花些时间仔细地读完前三章。稍后,你
可以回来读完第一部份的其它章节。如果你需要熟悉JVM的指令集,
第二部份包含了所有 JVM 指令的快速浏览,并佐以适当的范例。或者
,如果你需要查询某 Java 虚拟机器指令的操作细节,你可以到第三
部份去看看,这部分以英文字母顺序排列,查询相当方便。
本书的中文版正是我以前翻译的「细说Java虚拟机器」,已经绝版了,
市面上不容易看到。因为翻译此书的关系,我在 Java 虚拟机器花了
不少功夫,也对 Java 有了更深入的认识。除非你有实际的需要,或
和我一样好奇地想更深入了解Java,不然其实大部分的人并不需要阅
读本书。本书可能的读者包括了﹕
· 教师:如果你正在教编译器(compiler)课程,你可能想用Java
虚拟机器当学生习作的平台,好处是可以让学生在各种不同的机
器上完成这份习作。
· 业余爱好者:本书提供你一套工具,让你能在虚拟机器层级将
Java 操控于指掌间。
· 系统开发者:如果你正在开发一个 Java 执行时期系统(runtime
system),或将Java 移植到新的 平台,这本书能让你了解执行
时期系统内如何分工合作。
· 程序员:透过本书与随书附赠的 Jasmin(茉莉)软件,你可以反
组译类别、观察类别的内部、甚至 可以用组译器来实作重要的类
别和 method。或者,你也可以藉由本书来了解 Java 的执行效率
议题 并直接使用 JVM 建立应用软件。
· 语言实作者:如果你希望让 Java 虚拟机器也能执行某个你喜爱的
程序语言,你打算实作此语言的 JVM 版本,本书对你会很有帮助。
· 计算机安全高手:Sun 公司要求 Java 可以保护你免于受到来者
不善的程序之捣乱。本书帮助你能自行控制这项权力。
本书以 Java 1.02 版为描述对象,而现在都已经跨过 Java 1.1,进入
Java 2(JDK 1.2)的时代了。虽然 Java 历经这些改版,JVM 指令集
和 bytecode 的格式并未有任何变动,所以本书依然适用于现今的Java
2,也因此原作者似乎短期之内没打算改版。虽然bytecode的格式并未改
变,但 Java 1.1 和 Java 2 以后的确是多出一些属性,包括了:「
InnerClasses」、「Synthetic」以及「Deprecated」,都是本书未涵盖
的,如果你正在实做 JVM 或 Java 编译器,请特别留心这部分。
本书提供许多范例﹐用来帮助读者了解 Java 虚拟机器。因为 JVM 规格
书并未定义Java 类别文件的文字格式(只有定义 Java 类别文件的字节
格式),本书作者们开发了一套自己的 Java 虚拟机器组译器,叫作
Jasmin(茉莉)。Jasmin 需要用文字来描述Java类别文件,以简单易读
的语法撰写,Jasmin 将其转成合适的类别档。使用 Jasmin,可以轻易地
摸索出虚拟机器的原理。本书所有JVM 程序的范例都是由Jasmin 语法撰
写。本书参考资料的部份对 Jasmin 语法和底层的 bytecode 格式有更
详细的描述。作者「原本」免费提供Jasmin,可以到
http://www.ora.com/catalog/books/javavm/ 下载 Jasmin。不过,不
知怎地,我发现 Jasmin 的网页已经消失了,所以无法下载。因为Jasmin
的版权属于作者而非 O'Reilly,所以现在如果你想取得 Jasmin,无法透
过 O'Reilly,可能的方式有:
·买O'Reilly的《Java Virtiual Machine》一书,随书所赠的磁盘中就有
Jasmin。
·或在欧莱礼台湾该书的网页
http://www.oreilly.com.tw/chinese/java/virtual.htm 下载。
·写 email 求作者 Jon Meyer 发发慈悲,email 一份 Jasmin 给你。
什么!你要我直接 email 给你!不成,不成,未经同意散播有版权的软件
是违法的。你们不希望看到我坐牢吧!
--
如 果 你 爱 我
你 会 来 找 我
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 218.7.25.106]
※ 修改:·allen 於 08月21日00:53:31 修改本文·[FROM: 218.7.25.106]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.641毫秒