使用JAVA語(yǔ)言最引人矚目的原因之一是,它能夠提高開發(fā)者的效率;而他最主要的缺點(diǎn)在于執(zhí)行速度較慢。 面向?qū)ο蠹夹g(shù)的承諾之一是提升代碼的重用率,提高開發(fā)者的效率。深入java虛擬機(jī)相當(dāng)不錯(cuò),對(duì)于了解JVM運(yùn)行機(jī)制很有幫助。能把如此復(fù)雜的事情寫的這么簡(jiǎn)單,足可見(jiàn)作者的技術(shù)功底。 進(jìn)行JAVA開發(fā)的技術(shù)人員都應(yīng)該讀一讀這本書,從而真正了解JAVA的運(yùn)行機(jī)制,并提高對(duì)系統(tǒng)和平臺(tái)的控制能力。
1、最有價(jià)值章節(jié):5,7,8,9,20,值得反復(fù)精讀。 2、更深一步的話,3,6,17,18是值得閱讀的 3、余下關(guān)于指令的,若沒(méi)實(shí)操項(xiàng)目,不必精讀。 總的說(shuō)來(lái),這本書清晰平易的給出了JVM的藍(lán)圖。 對(duì)JVM的內(nèi)部機(jī)理有著深入細(xì)致本質(zhì)的描述。
目錄:
譯者序
前言
第1章 java體系結(jié)構(gòu)介紹
1.1 為什么使用java
1.2 網(wǎng)絡(luò)帶來(lái)的挑戰(zhàn)和機(jī)遇
1.3 體系結(jié)構(gòu)
1.3.1 java虛擬機(jī)
1.3.2 類裝載器的體系結(jié)構(gòu)
1.3.3 java class文件
1.3.4 java api
1.3.5 java程序設(shè)計(jì)語(yǔ)言
1.4 java體系結(jié)構(gòu)的代價(jià)
1.5 結(jié)論
1.6 資源頁(yè)
第2章 平臺(tái)無(wú)關(guān)
2.1 為什么要平臺(tái)無(wú)關(guān)
2.2 java的體系結(jié)構(gòu)對(duì)平臺(tái)無(wú)關(guān)的支持
2.2.1 java平臺(tái)
2.2.2 java語(yǔ)言
2.3.3 java class文件
. 2.2.4 可伸縮性
2.3 影響平臺(tái)無(wú)關(guān)性的因素
2.3.1 java平臺(tái)的部署
2.3.2 java平臺(tái)的版本
2.3.3 本地方法
2.3.4 非標(biāo)準(zhǔn)運(yùn)行時(shí)庫(kù)
2.3.5 對(duì)虛擬機(jī)的依賴
2.3.6 對(duì)用戶界面的依賴
2.3.7 java平臺(tái)實(shí)現(xiàn)中的bug
2.3.8 測(cè)試
2.4 平臺(tái)無(wú)關(guān)的七個(gè)步驟
2.5 平臺(tái)無(wú)關(guān)性的策略
2.6 平臺(tái)無(wú)關(guān)性和網(wǎng)絡(luò)移動(dòng)對(duì)象
2.7 資源頁(yè)
第3章 安全
3.1 為什么需要安全性
3.2 基本沙箱
3.3 類裝載器體系結(jié)構(gòu)
3.4 class文件檢驗(yàn)器
3.4.1 第一趟:class文件的結(jié)構(gòu)檢查
3.4.2 第二趟:類型數(shù)據(jù)的語(yǔ)義檢查
3.4.3 第三趟:字節(jié)碼驗(yàn)證
3.4.4 第四趟:符號(hào)引用的驗(yàn)證
3.4.5 二進(jìn)制兼容
3.5 java虛擬機(jī)中內(nèi)置的安全特性
3.6 安全管理器和java api
3.7 代碼簽名和認(rèn)證
3.8 一個(gè)代碼簽名示例
3.9 策略
3.10 保護(hù)域
3.11 訪問(wèn)控制器
3.11.1 implies()方法
3.11.2 棧檢查示例
3.11.3 一個(gè)回答“是”的棧檢查
3.11.4 一個(gè)回答“不”的棧檢查
3.11.5 doprivileged()方法
3.11.6 doprivileged()的一個(gè)無(wú)效使用
3.12 java安全模型的不足和今后的發(fā)展
方向
3.13 和體系結(jié)構(gòu)無(wú)關(guān)的安全性
3.14 資源頁(yè)
第4章 網(wǎng)絡(luò)移動(dòng)性
4.1 為什么需要網(wǎng)絡(luò)移動(dòng)性
4.2 一種新的軟件模式
4.3 java體系結(jié)構(gòu)對(duì)網(wǎng)絡(luò)移動(dòng)性的支持
4.4 applet:網(wǎng)絡(luò)移動(dòng)性代碼的示例
4.5 jini服務(wù)對(duì)象:網(wǎng)絡(luò)移動(dòng)對(duì)象的示例
4.5.1 jini是什么
4.5.2 jini如何工作
4.5.3 服務(wù)對(duì)象的優(yōu)點(diǎn)
4.6 網(wǎng)絡(luò)移動(dòng)性:java設(shè)計(jì)的中心
4.7 資源頁(yè)
第5章 java虛擬機(jī)
5.1 java虛擬機(jī)是什么
5.2 java虛擬機(jī)的生命周期
5.3 java虛擬機(jī)的體系結(jié)構(gòu)
5.3.1 數(shù)據(jù)類型
5.3.2 字長(zhǎng)的考量
5.3.3 類裝載器子系統(tǒng)
5.3.4 方法區(qū)
5.3.5 堆
5.3.6 程序計(jì)數(shù)器
5.3.7 java棧
5.3.8 棧幀
5.3.9 本地方法棧
5.3.10 執(zhí)行引擎
5.3.11 本地方法接口
5.4 真實(shí)機(jī)器
5.5 一個(gè)模擬:“eternal math”
5.6 隨書光盤
5.7 資源頁(yè)
第6章 java class文件
6.1 java class文件是什么
6.2 class文件的內(nèi)容
6.3 特殊字符串
6.3.1 全限定名
6.3.2 簡(jiǎn)單名稱
6.3.3 描述符
6.4 常量池
6.4.1 constant_utf8_info表
6.4.2 constant_integer_info表
6.4.3 constant_float_info表
6.4.4 constant_long_info表
6.4.5 constant_double_info表
6.4.6 constant_class_info表
6.4.7 constant_string_info表
6.4.8 constant_fieldref_info表
6.4.9 constant_methodref_info表
6.4.10 constant_interfacemethodref_
info表
6.4.11 constant_nameandtype_info
表
6.5 字段
6.6 方法
6.7 屬性
6.7.1 屬性格式
6.7.2 code屬性
6.7.3 constantvalue屬性
6.7.4 deprecated屬性
6.7.5 exceptions屬性
6.7.6 innerclasses屬性
6.7.7 linenumbertable屬性
6.7.8 localvariabletable屬性
6.7.9 sourcefile屬性
6.7.10 synthetic屬性
6.8 一個(gè)模擬:“getting loaded”
6.9 隨書光盤
6.10 資源頁(yè)
第7章 類型的生命周期
7.1 類型裝載、連接與初始化
7.1.1 裝載
7.1.2 驗(yàn)證
7.1.3 準(zhǔn)備
7.1.4 解析
7.1.5 初始化
7.2 對(duì)象的生命周期
7.2.1 類實(shí)例化
7.2.2 垃圾收集和對(duì)象的終結(jié)
7.3 卸載類型
7.4 隨書光盤
7.5 資源頁(yè)
第8章 連接模型
8.1 動(dòng)態(tài)連接和解析
8.1.1 解析和動(dòng)態(tài)擴(kuò)展
8.1.2 類裝載器與雙親委派模型
8.1.3 常量池解析
8.1.4 解析constant_class_info入口
8.1.5 解析constant_fieldref_info
入口
s.1.6 解析constant_methodref_info
入口
8.1.7 解析constant_interface-
methodref_info入口
8.1.8 解析constant_string_info入口
8.1.9 解析其他類型的入口
8.1.10 裝載約束
8.1.11 編譯時(shí)常量解析
8.1.12 直接引用
8.1.13 _quick指令
8.1.14 示例:salutation程序的連接
8.1.15 示例:greet程序的動(dòng)態(tài)擴(kuò)展
8.1.16 使用1.1版本的用戶自定義類裝
載器
8.1.17 使用1.2版本的用戶自定義類裝
載器
8.1.18 示例:使用forname()的動(dòng)態(tài)擴(kuò)展
8.1.19 示例:卸載無(wú)法觸及的greeter類
8.1.20 示例:類型安全性與裝載約束
8.2 隨書光盤
8.3 資源頁(yè)
第9章 垃圾收集
9.1 為什么要使用垃圾收集
9.2 垃圾收集算法
9.3 引用計(jì)數(shù)收集器
9.4 跟蹤收集器
9.5 壓縮收集器
9.6 拷貝收集器
9.7 按代收集的收集器
9.8 自適應(yīng)收集器
9.9 火車算法
9.9.1 車廂、火車和火車站
9.9.2 車廂收集
9.9.3 記憶集合和流行對(duì)象
9.10 終結(jié)
9.11 對(duì)象可觸及性的生命周期
9.11.1 引用對(duì)象
9.11.2 可觸及性狀態(tài)的變化
9.11.3 緩存、規(guī)范映射和臨終清理
9.12 一個(gè)模擬:“heap of fish”
9.12.1 分配魚
9.12.2 設(shè)置引用
9.12.3 垃圾收集
9.12.4 壓縮堆
9.13 隨書光盤
9.14 資源頁(yè)
第10章 棧和局部變量操作
10.1 常量入棧操作
10.2 通用棧操作
10.3 把局部變量壓入棧
10.4 彈出棧頂部元素,將其賦給局部變量
10.5 wide指令
10.6 一個(gè)模擬:“fibonacci forever”
10.7 隨書光盤
10.8 資源頁(yè)
第11章 類型轉(zhuǎn)換
11.1 轉(zhuǎn)換操作碼
11.2 一個(gè)模擬:“conversion diversion”
11.3 隨書光盤
11.4 資源頁(yè)
第12章 整數(shù)運(yùn)算
12.1 二進(jìn)制補(bǔ)碼運(yùn)算
12.2 inner int:揭示java int類型內(nèi)部性質(zhì)
的applet
12.3 運(yùn)算操作碼
12.4 一個(gè)模擬:“prime time”
12.5 隨書光盤
12.6 資源頁(yè)
第13章 邏輯運(yùn)算
13.1 邏輯操作碼
13.2 一個(gè)模擬:“l(fā)ogical results”
13.3 隨書光盤
13.4 資源頁(yè)
第14章 浮點(diǎn)運(yùn)算
14.1 浮點(diǎn)數(shù)
14.2 inner float:揭示java float類型內(nèi)部
性質(zhì)的applet
14.3 浮點(diǎn)模式
14.3.1 浮點(diǎn)值集合
14.3.2 浮點(diǎn)值集的轉(zhuǎn)換
14.3.3 相關(guān)規(guī)則的本質(zhì)
14.4 浮點(diǎn)操作碼
14.5 一個(gè)模擬:“circle of squares”
14.6 隨書光盤
14.7 資源頁(yè)
第15章 對(duì)象和數(shù)組
15.1 關(guān)于對(duì)象和數(shù)組的回顧
15.2 針對(duì)對(duì)象的操作碼
15.3 針對(duì)數(shù)組的操作碼
15.4 一個(gè)模擬:“three—dimensional
array”
15.5 隨書光盤
15.6 資源頁(yè)
第16章 控制流
16.1 條件分支
16.2 五條件分支
16.3 使用表的條件分支
16.4 一個(gè)模擬:“saying tomato”
16.5 隨書光盤
16.6 資源頁(yè)
第17章 異常
17.1 異常的拋出與捕獲
17.2 異常表
17.3 一個(gè)模擬:“play ball!”
17.4 隨書光盤
17.5 資源頁(yè)
第18章 finally子句
18.1 微型子例程
18.2 不對(duì)稱的調(diào)用和返回
18.3 一個(gè)模擬:“hop around”
18.4 隨書光盤
18.5 資源頁(yè)
第19章 方法的調(diào)用與返回
19.1 方法調(diào)用
19.1.1 java方法的調(diào)用
19.1.2 本地方法的調(diào)用
19.2 方法調(diào)用的其他形式
19.3 指令invokespecial
19.3.1 指令invokespecial和[init]()方法
19.3.2 指令invokespecial和私有方法
19.3.3 指令invokespecial和super關(guān)鍵字
19.4 指令invokeinterface
19.5 指令的調(diào)用和速度
19.6 方法調(diào)用的實(shí)例
19.7 從方法中返回
19.8 隨書光盤
19.9 資源頁(yè)
第20章 線程同步
20.1 監(jiān)視器
20.2 對(duì)象鎖
20.3 指令集中對(duì)同步的支持
20.3.1 同步語(yǔ)句
20.3.2 同步方法
20.4 object類中的協(xié)調(diào)支持
20.5 隨書光盤
20.6 資源頁(yè)
附錄a 按操作碼助記符排列的指令集
附錄b 按功能排列的操作碼助記符
附錄c 按操作碼字節(jié)值排列的操作碼助
記符
附錄d java虛擬機(jī)的一個(gè)模擬:“slices of pi”