`
白粥若水
  • 浏览: 102977 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

《深入Java虚拟机》_Java体系结构

阅读更多

Java体系结构:

 

当程序员编写和运行一个Java程序时,会同时体验到四种独立但相关的技术。
一、用Java编程语言编写源代码
二、将之编译成Java Class文件
三、在Java虚拟机(JVM)上运行Class文件
四、当编写程序时,通过调用类(这些类实现了Java API)中的方法来访问系统资源(比如I/O)。运行程序时,通过调用Java Class文件中实现Java API的方法来满足程序的Java API调用

 

 

从客户的角度上来看,JVM和JavaAPI组成了他所需要的“平台”——所有的Java程序都可以在其上运行。

 

一、虚拟机JVM

很容易看出,Java技术的核心之一就是Java虚拟机,而它也是Java面向网络的核心。

 

Java虚拟机的主要任务是装载class文件 并且执行其中的字节码。JVM包括类装载器,它装载需要的class文件。字节码由执行引擎来执行。

 

1、类装载器:

在实际的Java虚拟机中,存在着多个类装载器。他们分为2类:“启动”类装载器和用户自定义的类装载器。

 

启动类装载器是系统唯一的,它是JVM实现的一部分。如果我们的操作系统是有C语言写的,如Windows,那么启动类装载器就会是此C程序的一部分。启动类装载器在JVM启动时开始工作。

 

用户定义的类装载器能够用Java编写---它实际上就是一个类class。由于有用户自定义的装载器的存在,启动类装载器就不必在它工作时期(编译时期)就将所有程序可能用到类全部装载,因此实现了Java的动态加载功能,即一个类是在它第一次被使用(创建对象,调用static方法等)时才被加载。

 

2、Java虚拟机执行引擎:
不同的Java虚拟机,其执行引擎可能不同。而且它的规范是灵活的,它允许虚拟机用纯粹软件方式来实现,也可以很大部分由硬件实现。
在由软件实现的虚拟机中,有三种执行引擎
1、最简单的,一次性解释字节码
2、即时编译器(just—in—time compiler)。第一次执行的字节码会被编译成本地机器代码,然后机器代码被缓存,当方法再次调用时可以被重用
3、自适应优化器。虚拟机开始的时候解释字节码,并监视运行中程序的活动,将使用最频繁的代码编译成机器代码缓存下来,而其他使用不频繁的代码继续保留字节码。


在硬件芯片构成的虚拟机中,由本地方法执行Java字节码。这种执行引擎实际上被内嵌在芯片中。

 

 

二、Java class文件

我们知道,.class文件是.java文件编译成功后产生的二进制文件。二进制形式是计算机能够理解的形式。

 

C和C++语言在编译成功后也会产生二进制文件的。那么,Java产生的.class文件与他们有什么不同??

 

首先,它为Java的平台无关性做出了很大的贡献。C和C++等语言产生的二进制文件时单独的、专门支持特定硬件平台和操作系统的。这既是为什么C编写的windows程序不能在Linux上运行的原因。.class文件提供的是独立于底层主机平台的二进制服务,而这正是JVM所期望实现的。

 

其原理以后讨论。

 

其次,.class文件在java的网络移动性方面贡献颇大。class文件在设计上是非常紧凑的,因此方便网络传输。而且,由于Java程序的动态连接和动态扩展特性,class文件可以在需要时再下载。因此,可以减少用户等待的时间。这就好像迅雷看看提供的边下载电影边看电影一样--下多少就提供多少功能。

 

 

 

 

 

三、Java API

API是我们每天必须用到的东西,但是你了解它么??

 

我们知道,在Java中是不能直接访问本地资源的,除非通过Java基础API——中间隔了一层虚拟机。随之而来就有一个问题,不同平台上的本地资源的数据结构是不同的,为什么我们的Java程序在不同的平台上都运行良好?? 这是因为API帮我们屏蔽了这些看似无关紧要,但却十分重要的东西:Java API class文件调用了本地方法,Java程序就不需要额外调用它们了。

 

 

Java API在程序安全性上也有极大的作用,它是“沙箱模型”的能够起作用的重要保证。这点以后再谈

1
2
分享到:
评论

相关推荐

    深入java虚拟机.pdf

    Java 虚拟机的体系结构由多个子系统组成,包括类加载器子系统、执行引擎、数据区等。类加载器子系统负责加载程序中的类型(类和接口),并赋予唯一的名字。执行引擎负责执行被加载类中包含的指令。数据区中保存了...

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

    《深入Java虚拟机(原书第2版)》,原书名《Inside the Java Virtual Machine,Second Edition》,作者:【美】Bill Venners,翻译:曹晓钢、蒋靖,出版社:机械工业出版社,ISBN:7111128052,出版日期:2003 年 9 ...

    Java_vm.rar_java vm lin_java vm lin_java 虚拟机_os20_vm

    在OS20上进行移植则可能面临更特殊的挑战,因为OS20可能有自己的体系结构和API,这需要JVM开发者深入理解其内核机制。 移植过程中,开发者需要关注以下关键点: 1. **指令集适配**:根据目标操作系统使用的CPU架构...

    深入java虚拟机第二版_完整目录.pdf

    《深入Java虚拟机第二版》是探讨Java虚拟机(JVM)内部工作原理的经典之作,作者Bill Venners通过本书深入浅出地解析了Java虚拟机的体系结构和内部机制,为Java开发者提供了编写高效程序的基础理论支持。 Java...

    深入java虚拟机

    3. **Java虚拟机的体系结构** JVM由多个子系统构成,包括类加载器子系统,它负责加载和命名类和接口;执行引擎执行加载的字节码。JVM的数据区包括程序计数器、Java堆栈、本地方法栈、堆以及方法区。其中,方法区...

    《深入Java虚拟机第二版》 高清完整PDF版

    本书共分20章,第1-4章解释了Java虚拟机的体系结构,包括Java栈、堆、方法区、执行引擎等;第5-20章深入描述了Java技术的内部细节,包括垃圾收集、Java安全模型、Java的连接模型和动态扩展机制、class文件、运算及...

    深入JAVA虚拟机第二版.pdf 目录

    第1章 Java体系结构介绍 第2章 平台无关 第3章 安全 第4章 网络移动性 第5章 Java虚拟机 第6章 Java class文件 第7章 类型的生命周期 第8章 连接模型 第9章 垃圾收集 第10章 栈和局部变量操作 第11章 类型转换 第12...

    深入java虚拟机第二版

    第1-4章介绍了java虚拟机的体系结构,包栈、堆,方法区、执行引擎等; 第5-20章深入介绍了java的内部细节,垃圾回收、java安全模型、java的连接模型和动态扩张机制,class文件,运算及流程控制。 本书以利于理解的...

    深入Java虚拟机(中文版第二版高清版)-带书签

    本书共分20章,第1-4章解释了Java虚拟机的体系结构,包括Java栈、堆、方法区、执行引擎等;第5-20章深入描述了Java技术的内部细节,包括垃圾收集、Java安全模型、Java的连接模型和动态扩展机制、class文件、运算及...

    深入Java虚拟机.pdf

    《深入Java虚拟机》是由Bill Venners所著的一本详细解释Java虚拟机(JVM)体系结构和内部工作的书籍。在书中,作者深入探讨了JVM的各个方面,包括其体系结构、垃圾收集机制、Java安全模型、类的动态加载与扩展机制、...

    深入JAVA虚拟机

    #### Java体系结构概述 Java体系结构包含了四个相互关联但又各自独立的技术组件,它们共同构建了一个强大的开发环境。这四个组成部分分别是:Java程序设计语言、Java class文件格式、Java应用编程接口(API),以及...

    深入java虚拟机资料

    六、Java虚拟机体系结构 JVM由指令集、寄存器、栈、垃圾回收堆和方法区域五个主要部分构成。指令集包含了约248个字节码指令,涵盖了基本的CPU运算,如算术操作、流程控制等。每个指令由一个操作码和零个或多个操作数...

    深入Java虚拟机(原书第2版)及书中源代码

    第1章 Java体系结构介绍 第2章 平台无关 第3章 安全 第4章 网络移动性 第5章 Java虚拟机 第6章 Java class文件 第7章 类型的生命周期 第8章 连接模型 第9章 垃圾收集 第10章 栈和局部变量操作 第11章 类型转换 第12...

    Java虚拟机的深入研究

    JVM的体系结构包括类装载子系统和运行引擎。类装载子系统负责查找并装载类和接口,而运行引擎执行已装载类中的指令。此外,JVM还包含以下几个关键组件: 1. **方法区**:存储解析后的类信息,包括类的元数据和常量...

Global site tag (gtag.js) - Google Analytics