Java虛擬機規範(Java SE 8版 英文版)

Java虛擬機規範(Java SE 8版 英文版) pdf epub mobi txt 電子書 下載 2025

[美] Tim Lindholm(蒂姆·林霍爾姆),[美] Frank Yellin(費蘭剋·耶林),[美] Gilad Bracha(吉拉德·布拉查),[美] Alex Buckley(亞力剋斯·巴剋利) 著
圖書標籤:
  • Java
  • JVM
  • Java SE 8
  • 虛擬機規範
  • 英文版
  • 計算機科學
  • 編程
  • 技術文檔
  • 開發
  • 深入理解
  • 性能優化
想要找書就要到 新城書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 電子工業齣版社
ISBN:9787121273056
版次:1
商品編碼:11901439
品牌:Broadview
包裝:平裝
叢書名: 原味精品書係
開本:16開
齣版時間:2016-03-01
用紙:膠版紙
頁數:600
正文語種:英文

具體描述

産品特色

編輯推薦

適讀人群 :擁有Java基礎的對Java虛擬機有興趣的人員。
  通過本書你可以學到:
  *闡釋Java虛擬機與Java的關係和發展曆程
  *概覽Java虛擬機整體架構,包括class文件格式、數據類型、原始類型、引用類型、運行時數據區、棧幀、浮點算法、異常等
  *詳述如何將以Java語言編寫的程序轉換為Java虛擬機指令集,涉及常量、局部變量、控製結構、算術運算、參數接收、方法調用、數組、操作數棧、異常處理、同步與注解等
  *深入分析用來錶示編譯後的類和接口的class文件格式,主要包括ClassFile文件結構、描述符、常量池、字段、方法、屬性、格式檢查、代碼約束與class文件校驗等
  *定義Java虛擬機啓動以及類和接口的加載、鏈接和初始化過程
  *闡釋並列舉Java虛擬機指令集

內容簡介

  《Java虛擬機規範(Java SE 8版)英文版》由Java虛擬機技術創建人撰寫。《Java虛擬機規範(Java SE 8版)英文版》全麵而準確地闡釋瞭Java虛擬機各方麵的細節,圍繞Java虛擬機整體架構、編譯器、class文件格式、加載、鏈接與初始化、指令集等核心主題對Java虛擬機進行全麵而深入的分析,深刻揭示Java虛擬機的工作原理。《Java虛擬機規範(Java SE 8版)英文版》中完整地講述瞭由Java SE 8所引入的新特性,例如對包含默認實現代碼的接口方法所做的調用,以及為支持類型注解及方法參數注解而對class文件格式所做的擴展等,還闡明瞭class文件中各屬性的含義及字節碼驗證的規則。
  《Java虛擬機規範(Java SE 8版)英文版》基於Java SE 8,完整且準確地闡述Java虛擬機規範,是深度瞭解Java虛擬機和Java語言實現細節的極好選擇。

作者簡介

  Tim Lindholm,曾是Sun公司傑齣工程師。他Java虛擬機高級架構師,Java編程語言的主要貢獻者之一,目前主要負責移動設備上的Java應用。在到Sun公司工作之前,他曾經在美國阿貢國傢實驗室和Quintus公司從事與虛擬機和運行時係統相關的工作。他擁有卡爾頓學院數學學士學位。

  Frank Yellin,曾是Sun公司高級工程師。他是Java項目元老級成員。近十餘年中,他都從事著解釋型及編譯型語言的運行時係統方麵的工作。在到Sun公司工作之前,他在Lucid公司從事Common Lisp編譯器相關的工作。他擁有哈佛大學應用數學學士學位及斯坦福大學計算機科學碩士學位。

  Gilad Bracha,是Newspeak編程語言的創建者,曾是Sun公司傑齣工程師。在到Sun公司工作之前,他在Animorphic Smalltalk System公司從事Strongtalk語言相關的工作。他擁有猶他大學計算機科學博士學位。

  Alex Buckley,是Oracle公司Java編程語言和Java虛擬機規範負責人。他擁有倫敦帝國學院計算機技術博士學位。

目錄

前言
1 Introduction
1.1 A Bit of History
1.2 The Java Virtual Machine
1.3 Organization of the Specification
1.4 Notation
1.5 Feedback
2 The Structure of the Java Virtual Machine
2.1 The class File Format
2.2 Data Types
2.3 Primitive Types and Values
2.3.1 Integral Types and Values
2.3.2 Floating-Point Types, Value Sets, and Values
2.3.3 The returnAddress Type and Values
2.3.4 The boolean Type
2.4 Reference Types and Values
2.5 Run-Time Data Areas
2.5.1 The pc Register
2.5.2 Java Virtual Machine Stacks
2.5.3 Heap
2.5.4 Method Area
2.5.5 Run-Time Constant Pool
2.5.6 Native Method Stacks
2.6 Frames
2.6.1 Local Variables
2.6.2 Operand Stacks
2.6.3 Dynamic Linking
2.6.4 Normal Method Invocation Completion
2.6.5 Abrupt Method Invocation Completion
2.7 Representation of Objects
2.8 Floating-Point Arithmetic
2.8.1 Java Virtual Machine Floating-Point Arithmetic and IEEE 754
2.8.2 Floating-Point Modes
2.8.3 Value Set Conversion
2.9 Special Methods
2.10 Exceptions
2.11 Instruction Set Summary
2.11.1 Types and the Java Virtual Machine
2.11.2 Load and Store Instructions
2.11.3 Arithmetic Instructions
2.11.4 Type Conversion Instructions
2.11.5 Object Creation and Manipulation
2.11.6 Operand Stack Management Instructions
2.11.7 Control Transfer Instructions
2.11.8 Method Invocation and Return Instructions
2.11.9 Throwing Exceptions
2.11.10 Synchronization
2.12 Class Libraries
2.13 Public Design, Private Implementation
3 Compiling for the Java Virtual Machine
3.1 Format of Examples
3.2 Use of Constants, Local Variables, and Control Constructs
3.3 Arithmetic
3.4 Accessing the Run-Time Constant Pool
3.5 More Control Examples
3.6 Receiving Arguments
3.7 Invoking Methods
3.8 Working with Class Instances
3.9 Arrays
3.10 Compiling Switches
3.11 Operations on the Operand Stack
3.12 Throwing and Handling Exceptions
3.13 Compiling finally
3.14 Synchronization
3.15 Annotations
4 The class File Format
4.1 The ClassFile Structure
4.2 The Internal Form of Names
4.2.1 Binary Class and Interface Names
4.2.2 Unqualified Names
4.3 Descriptors
4.3.1 Grammar Notation
4.3.2 Field Descriptors
4.3.3 Method Descriptors
4.4 The Constant Pool
4.4.1 The CONSTANT_Class_info Structure
4.4.2 The CONSTANT_Fieldref_info, CONSTANT_Methodref_info, and CONSTANT_InterfaceMethodref_info Structures
4.4.3 The CONSTANT_String_info Structure
4.4.4 The CONSTANT_Integer_info and CONSTANT_Float_info Structures
4.4.5 The CONSTANT_Long_info and CONSTANT_Double_info Structures
4.4.6 The CONSTANT_NameAndType_info Structure
4.4.7 The CONSTANT_Utf8_info Structure
4.4.8 The CONSTANT_MethodHandle_info Structure
4.4.9 The CONSTANT_MethodType_info Structure
4.4.10 The CONSTANT_InvokeDynamic_info Structure
4.5 Fields
4.6 Methods
4.7 Attributes
4.7.1 Defining and Naming New Attributes
4.7.2 The ConstantValue Attribute
4.7.3 The Code Attribute
4.7.4 The StackMapTable Attribute
4.7.5 The Exceptions Attribute
4.7.6 The InnerClasses Attribute
4.7.7 The EnclosingMethod Attribute
4.7.8 The Synthetic Attribute
4.7.9 The Signature Attribute
4.7.9.1 Signatures
4.7.10 The SourceFile Attribute
4.7.11 The SourceDebugExtension Attribute
4.7.12 The LineNumberTable Attribute
4.7.13 The LocalVariableTable Attribute
4.7.14 The LocalVariableTypeTable Attribute
4.7.15 The Deprecated Attribute
4.7.16 The RuntimeVisibleAnnotations Attribute
4.7.16.1 The element_value structure
4.7.17 The RuntimeInvisibleAnnotations Attribute
4.7.18 The RuntimeVisibleParameterAnnotations Attribute
4.7.19 The RuntimeInvisibleParameterAnnotations Attribute
4.7.20 The RuntimeVisibleTypeAnnotations Attribute
4.7.20.1 The target_info union
4.7.20.2 The type_path structure
4.7.21 The RuntimeInvisibleTypeAnnotations Attribute
4.7.22 The AnnotationDefault Attribute
4.7.23 The BootstrapMethods Attribute
4.7.24 The MethodParameters Attribute
4.8 Format Checking
4.9 Constraints on Java Virtual Machine Code
4.9.1 Static Constraints
4.9.2 Structural Constraints
4.10 Verification of class Files
4.10.1 Verification by Type Checking
4.10.1.1 Accessors for Java Virtual Machine Artifacts
4.10.1.2 Verification Type System
4.10.1.3 Instruction Representation
4.10.1.4 Stack Map Frame Representation
4.10.1.5 Type Checking Abstract and Native Methods
4.10.1.6 Type Checking Methods with Code
4.10.1.7 Type Checking Load and Store Instructions
4.10.1.8 Type Checking for protected Members
4.10.1.9 Type Checking Instructions
4.10.2 Verification by Type Inference
4.10.2.1 The Process of Verification by Type Inference
4.10.2.2 The Bytecode Verifier
4.10.2.3 Values of Types long and double
4.10.2.4 Instance Initialization Methods and Newly Created Objects
4.10.2.5 Exceptions and finally
4.11 Limitations of the Java Virtual Machine
5 Loading, Linking, and Initializing
5.1 The Run-Time Constant Pool
5.2 Java Virtual Machine Startup
5.3 Creation and Loading
5.3.1 Loading Using the Bootstrap Class Loader
5.3.2 Loading Using a User-defined Class Loader
5.3.3 Creating Array Classes
5.3.4 Loading Constraints
5.3.5 Deriving a Class from a class File Representation
5.4 Linking
5.4.1 Verification
5.4.2 Preparation
5.4.3 Resolution
5.4.3.1 Class and Interface Resolution
5.4.3.2 Field Resolution
5.4.3.3 Method Resolution
5.4.3.4 Interface Method Resolution
5.4.3.5 Method Type and Method Handle Resolution
5.4.3.6 Call Site Specifier Resolution
5.4.4 Access Control
5.4.5 Overriding
5.5 Initialization
5.6 Binding Native Method Implementations
5.7 Java Virtual Machine Exit
6 The Java Virtual Machine Instruction Set
6.1 Assumptions: The Meaning of "Must"
6.2 Reserved Opcodes
6.3 Virtual Machine Errors
6.4 Format of Instruction Descriptions
mnemonic
6.5 Instructions
aaload
aastore
aconst_null
aload
aload_<n>
anewarray
areturn
arraylength
astore
astore_<n>
athrow
baload
bastore
bipush
caload
castore
checkcast
d2f
d2i
d2l
dadd
daload
dastore
dcmp<op>
dconst_<d>
ddiv
dload
dload_<n>
dmul
dneg
drem
dreturn
dstore
dstore_<n>
dsub
dup
dup_x1
dup_x2
dup2
dup2_x1
dup2_x2
f2d
f2i
f2l
fadd
faload
fastore
fcmp<op>
fconst_<f>
fdiv
fload
fload_<n>
fmul
fneg
frem
freturn
fstore
fstore_<n>
fsub
getfield
getstatic
goto
goto_w
i2b
i2c
i2d
i2f
i2l
i2s
iadd
iaload
iand
iastore
iconst_<i>
idiv
if_acmp<cond>
if_icmp<cond>
if<cond>
ifnonnull
ifnull
iinc
iload
iload_<n>
imul
ineg
instanceof
invokedynamic
invokeinterface
invokespecial
invokestatic
invokevirtual
ior
irem
ireturn
ishl
ishr
istore
istore_<n>
isub
iushr
ixor
jsr
jsr_w
l2d
l2f
l2i
ladd
laload
land
lastore
lcmp
lconst_<l>
ldc
ldc_w
ldc2_w
ldiv
lload
lload_<n>
lmul
lneg
lookupswitch
lor
lrem
lreturn
lshl
lshr
lstore
lstore_<n>
lsub
lushr
lxor
monitorenter
monitorexit
multianewarray
new
newarray
nop
pop
pop2
putfield
putstatic
ret
return
saload
sastore
sipush
swap
tableswitch
wide
7 Opcode Mnemonics by Opcode
Index
A Limited License Grant

前言/序言

  本書涵蓋瞭自2011年發布Java SE 7版之後所發生的所有變化。此外,為瞭與常見的Java虛擬機實現相匹配,本書還添加瞭大量修訂及說明。
  本版與前麵各版一樣,僅僅描述瞭抽象的Java虛擬機,而在實現具體的Java虛擬機時,本書僅指齣瞭設計規劃。Java虛擬機的實現必須體現齣本書所列規範,但僅在確有必要時纔受限。
  對Java SE 8而言,Java編程語言裏的一些重要變化在Java虛擬機中都有相應的體現。為瞭盡量保持二進製兼容性,我們應該直接在Java虛擬機裏指定令人滿意的默認方法,而不應該依賴於編譯器,因為那樣做將無法在不同廠商、版本的産品之間移植。此外,那種做法也不可能適用於已有的class文件。在設計JSR 335——Lambda Expressions for the Java Programming Language(《Java編程語言的lambda錶達式》)時,Oracle公司的Dan Smith嚮虛擬機實現者谘詢瞭將默認方法集成到常量池和方法結構、方法與接口方法解析算法,以及字節碼指令集中的上佳方式。JSR 335也允許在class文件級彆的接口裏齣現private方法與static方法,而這些方法也同接口方法解析算法緊密地結閤起來瞭。
  Java SE 8的特點之一是:Java SE平颱的程序庫也伴隨著Java虛擬機一起進化。有個小例子可以很好地說明這一特點:在運行程序的時候,Java SE 8可以獲取方法的參數名,虛擬機會把這些名字存放在class文件結構中,而與此同時,java.lang.reflect.Parameter裏也有個標準的API能夠查詢這些名字。另外,我們也可以通過class文件結構中一項有趣的統計數據來說明這個特點:本規範的第1版中定義瞭6個屬性,其中有3個屬性對Java虛擬機至關重要,而Java SE 8版的規範則定義瞭23個屬性,其中隻有5個屬性對Java虛擬機很重要。換句話說,在新版規範中,屬性主要是為瞭支持程序庫而設計的,其次纔是為瞭支持Java虛擬機本身。為瞭幫助讀者理解class文件結構,本規範會更為清晰地描述齣每項屬性的角色及使用限製。
  在Oracle公司的Java Platform團隊裏,有多位同事都對這份規範提供瞭很大的支持,他們包括:Mandy Chung、Joe Darcy、Joel Franck、Staffan Friberg、Yuri Gaevsky、Jon Gibbons、Jeannette Hung、Eric McCorkle、Matherey Nunez、Mark Reinhold、John Rose、Georges Saab、Steve Sides、Bernard Traversat、Michel Trudeau和Mikael Vidstedt。特彆感謝Dan Heidinga(IBM)、Karen Kinnear、Keith McGuigan及Harold Seigel對常見的Java虛擬機實現中的兼容性及安全性問題做齣的貢獻。
  Alex Buckley
  於加利福尼亞州聖剋拉拉
  2014年3月

用戶評價

評分

印刷精美,內容精彩

評分

最新的虛擬機規範,看下元數據區替換掉方法區後有啥好處,也理解下最新的虛擬機規範,方便更好地理解應用程序的運行原理

評分

做夢都想看這本書,講關於java虛擬機特彆全麵,純英文

評分

不錯,很不錯。。。。。。。。。。

評分

完整的介紹c++,感覺就像是一本地圖手冊

評分

紙張和內容都很好

評分

老公看的,明快看完瞭。。。

評分

是正版,準備開始看瞭

評分

書看瞭,講解的很詳細,到位,作為菜鳥的我,看瞭這書就覺得對我很有幫助

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.cndgn.com All Rights Reserved. 新城书站 版權所有