`
白粥若水
  • 浏览: 101061 次
  • 性别: 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虚拟机(原书第2版).pdf【附光盘内容】

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

    深入Java虚拟机(原书第二版清晰版)

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

    《深入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虚拟机(原书第2版)及书中源代码

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

    深入Java虚拟机 Bill Venners著 2003.09 P461.rar

    全书共分20章,解释了Java虚拟机的体系结构,包括Java栈、堆、方法区、执行引擎等;描述了Java技术的内部细节,包括垃圾收集、Java安全模型、Java的连接模型和动态扩展机制等。

    深入Java虚拟机(原书第二版)Bill Venners 著

    本书深入详细地介绍了Java体系结构及其内部细节,了解这些内容才能更快速地编写更高效的程序。

    java虚拟机的详细原理

    一、什么是Java虚拟机 二、Java虚拟机的生命周期 三、Java虚拟机的体系结构

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    第2章 Java内存区域与内存溢出异常 / 24 2.1 概述 / 24 2.2 运行时数据区域 / 25 2.2.1 程序计数器 / 25 2.2.2 Java虚拟机栈 / 26 2.2.3 本地方法栈 / 27 2.2.4 Java堆 / 27 2.2.5 方法区 / 28 2.2.6 运行...

    深入Java虚拟机

    第1章 Java体系结构介绍 1.1 为什么使用Java 1.2 网络带来的挑战和机遇 1.3 体系结构 1.3.1 Java虚拟机 1.3.2 类装载器的体系结构 1.3.3 Java class文件 1.3.4 Java API 1.3.5 Java程序设计...

    【BD高清版】深入Java虚拟机.7z

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

    深入JAVA虚拟机第二版(中文版)

    本书深入详细的介绍了Java体系结构及其内部细节,了解这些内容才能更快速的编写更高效的程序!理解了Java虚拟机,深入细致的了解了Java技术底层,才能使自己的程序发挥Java技术的优势。 本书详细解释了JVM的体系结构...

    Java虚拟机

    Java虚拟机 Java虚拟机体系结构 Java虚拟机的运行过程

    深入Java虚拟机第二版

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

    深入java虚拟机中文第2版

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

Global site tag (gtag.js) - Google Analytics