`
zzq19860626
  • 浏览: 261225 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
B20df9e2-fb3d-3644-9f72-c1619842f682
设计模式学习笔记
浏览量:178108
87eaf24f-812a-3463-8e65-e3197d2ad8c2
java虚拟机
浏览量:26217
社区版块
存档分类
最新评论

JAVA虚拟机之二:Java体系结构

阅读更多
Java体系结构包括四个独立但相关的技术:
  • Java程序设计语言。
  • Java class文件格式。
  • Java应用编程接口(API)。
  • Java虚拟机。
当编写并运行一个Java程序时,就同时体验了这四种技术。用Java编写语言编写源代码,把它编译成Java class文件,然后再在Java虚拟机中运行class文件。当编写程序时,通过调用类(这些类实现了Java API)中的方法来访问系统资源(如:I/O)。当程序运行的时候,它通过调用class文件中实现了Java API的方法来满足程序的Java API调用。如下图:

 
Java虚拟机和Java API一起组成了一个“平台”,所有java程序都在这个上面编译。java虚拟机和Java API的组合除了被称为java运行时系统之外,还称为Java平台。java程序可以在不同的计算机上运行,这是因为Java平台自己可以用软件实现。
 
一、java虚拟机
java虚拟机的主要任务是装载class文件并且执行其中的字节码,如下图可以看到,java虚拟机包含一个类装载器(class loader),它可以从程序和API中装载class文件。java API中只有程序执行时需要的那些类才会被装载。字节码由执行引擎来执行。

 
当Java虚拟机是由主机操作系统上的软件实现的时候,Java程序通过调用本地方法(native method)和主机交互。Java中有两种方法:Java方法和本地方法。Java方法是由Java语言编写的,编译成字节码,存储在class文件中的。本地方法是由其他语言(如C,C++或者汇编语言)编写的,编译成和处理器相关的机器代码。本地方法保持在动态链接库中,格式是各个平台专有的。Java方法是与平台无关的,但是本地方法是和平台密切相关的。运行中的Java程序调用本地方法时,虚拟机加载包含这个本地方法的动态库,并调用这个方法。在下图中可以看到,本地方法是联系Java程序和底层主机操作系统的连接方法。

 
二、类加载器的体系结构
一个Java应用程序可以使用两种类加载器:“启动”(bootstrap)和用户自定义类加载器。启动类加载器是Java虚拟机实现的一部分。启动类加载器通常使用某种默认方式从本地磁盘中加载类,包括Java API的类(启动类加载器也称为原始类加载器、系统类加载器或者默认类加载器)。java应用程序能够在运行时安装用户自定义的类加载器,这种类加载器能使用自定义的方式来加载类,用户自定义类加载器使用Java编写,能够被编译为class文件,能有被虚拟机加载,还能够像其他对象一样实例化,是运行中的java应用程序可执行代码的一部分。
 由于有了用户自定义类加载器,所以不必再编译时就知道运行中的Java应用程序中最终会加入的所有的类,这样使得在运行时扩展Java应用程序称为可能。当它运行时,应用程序能够决定需要哪些额外的类,能够决定一个或者更多用户自定义的类加载器来加载。由于类加载器是使用java编写的,所以能用任何Java代码中可以表述的风格来进行类的加载。这些类可以通过网络下载,可以从数据库中获取,也可以动态生成。例如asm,cglib等都是动态生成字节码的库,aop、OSGI就是具体的使用。

 
三、Java class 文件
java class文件是可以允许在任何支持java虚拟机的硬件平台和操作系统上的二进制文件,所谓“一次编译,到处运行”,二进制文件扮演着重要角色。java编译后生成的class文件跟具体的硬件平台和操作系统无关,这样二进制文件就可以在支持java虚拟机的任何平台执行,来保证java程序跟平台无关性。
 
四、java API
Java API是运行库的集合,它提供一套访问主机系统资源的标准方法。编写Java程序时,任何时候都需要引用到java API class 文件;运行时,虚拟机加载程序class文件所使用的java API class文件;所有被加载的class文件(包括从应用程序中和从Java API 中提取的)和所有已加载的动态库(包含本地方法)共同组成了在java虚拟机上运行的整个程序。前面说过java程序的class 文件跟平台无关,而java API 的class文件跟平台密切相关,在一个平台能够支持Java程序以前,必须在这个特定的平台上明确地实现API的功能。为了访问主机上的本地资源,Java API调用了本地方法,这样java程序就不用再调用它们了。通过这种方法,Java API class文件为底层主机提供了具有平台无关性的、标准接口的java程序。对java程序而言,无论平台如何,Java API都会提供相同的表现和可预测的行为。正式由于在每个特定的平台上都明确地实现了Java虚拟机和Java API ,因此java程序本身就能够成为具有平台无关性的程序。如下图表示一个与平台无关性的程序。
  • 大小: 20.8 KB
  • 大小: 4.5 KB
  • 大小: 6.8 KB
  • 大小: 13.8 KB
  • 大小: 6.8 KB
2
3
分享到:
评论

相关推荐

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

    第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程序设计...

    java虚拟机的详细原理

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

    Java虚拟机

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

    深入java虚拟机第二版

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

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

    本书共分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虚拟机第二版》 高清完整PDF版

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

    Java虚拟机和Java程序的生命周期?

    类加载器分为:Java虚拟机自带的加载器和用户自定义的类加载器; Java虚拟机自带的类加载器包括:启动类加载器,扩展类加载器,系统类加载器三种。 用户自定义的类加载器是ClassLoader类的实例,通过它来定制类的...

    Java虚拟机简介

    Java虚拟机简介 介绍了java虚拟机的体系结构组成,已经java虚拟机的执行过程

    JAVA虚拟机精讲

    《Java虚拟机精讲》以极其精练的语句诠释了HotSpot VM 的方方面面,比如:字节码的编译原理、字节码的内部组成结构、通过源码的方式剖析HotSpot VM 的启动过程和初始化过程、Java 虚拟机的运行时内存、垃圾收集算法...

    JAVA虚拟机.ppt

    定义 简介 特点 使用主题 安装方法 支持的数据类型 规格描述 JVM指令系统 ... 体系结构 8.1Java指令集 8.2寄存器 8.3栈 8.4单位收集堆 8.5方法区 JVM的运行过程 Java虚拟机命令行参数说明 JVM存储区

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

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

    深入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程序设计...

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

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

    深入理解Java虚拟机视频教程(jvm性能调优+内存模型+虚拟机原理)视频教程

    第20节Java虚拟机-高性能Java虚拟机00:02:58分钟 | 第21节Java虚拟机-TaobaoVM00:03:06分钟 | 第22节Java内存区域-简介00:07:56分钟 | 第23节Java内存区域-Java虚拟机栈00:12:04分钟 | 第24节Java内存区域-程序...

    第二章Java虚拟机

    java体系结构,java虚拟机,虚拟机中的数据类型

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

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

Global site tag (gtag.js) - Google Analytics