• Jav虚拟机规范
21年品牌 40万+商家 超1.5亿件商品

Jav虚拟机规范

45 4.2折 108 九五品

仅1件

北京通州
认证卖家担保交易快速发货售后保障

作者蒂姆·林霍尔姆 (Tim Lindholm)

出版社电子工业出版社

ISBN9787121273056

出版时间2016-04

版次1

装帧平装

开本16开

纸张胶版纸

页数584页

字数99999千字

定价108元

上书时间2024-04-13

灵感飞驰

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:九五品
商品描述
基本信息
书名:Jav虚拟机规范
定价:108.00元
作者:蒂姆·林霍尔姆 (Tim Lindholm)
出版社:电子工业出版社
出版日期:2016-04-01
ISBN:9787121273056
字数:720000
页码:584
版次:1
装帧:平装
开本:16开
商品重量:
编辑推荐

内容提要
本书由Java虚拟机技术创建人撰写,全面而准确地阐释了Java虚拟机各方面的细节,围绕Java虚拟机整体架构、编译器、class文件格式、加载、链接与初始化、指令集等核心主题对Java虚拟机进行全面而深入的分析,深刻揭示Java虚拟机的工作原理。书中完整地讲述了由JavaSE8所引入的新特性,例如对包含默认实现代码的接口方法所做的调用,以及为支持类型注解及方法参数注解而对class文件格式所做的扩展等,还阐明了class文件中各属性的含义及字节码验证的规则。本书基于JavaSE8,是深度了解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 Et 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 monitoret 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
作者介绍
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虚拟机规范负责人。他拥有伦敦帝国学院计算机技术博士学位。
序言
前言本书涵盖了自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月

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP