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

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虚拟机.pdf

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

    深入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体系结构、平台无关性、安全性、网络移动性以及JVM内部运作等多方面的内容,对于想要深入了解Java虚拟机及其工作机制的读者来说是非常有价值的参考资料。

    Java虚拟机规范SE8英文

    #### 二、Java虚拟机结构 - **类文件格式**:类文件是编译后的Java程序的主要载体,包含了字节码、常量池、字段声明、方法声明等信息。 - **数据类型**: - **基本类型**:包括整型、浮点型、返回地址类型和布尔型...

    MiniJavaVM—个Java虚拟机的设计和实现

    MiniJavaVM—个Java虚拟机的设计和实现 在本篇文章中,我们将详细介绍 MiniJavaVM 的设计和实现,包括其总体架构、功能、运行环境和开发工具,以及具体的实现步骤。 第一章绪论 Java 虚拟机(Java Virtual ...

    java虚拟机的详细原理

    Java虚拟机的体系结构主要包括以下几个部分: 1. **类加载子系统**(Class Loader Subsystem):负责将Java类加载到内存中,并对它们进行验证、解析和初始化。每个Java应用程序都有一个类加载器子系统,该子系统...

    Java平台 Java虚拟机 Java 应用编程接口

    Java的诞生对软件产业产生了深远影响,它推动了分布式计算模式、基于构建的开发方法和多层应用体系结构,如CORBA和后来的Java 2平台与.NET平台的竞争。此外,Java促进了软件从开发中心向服务中心的转变,强调软件的...

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

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

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

    ### Java虚拟机与Java程序的生命周期 #### 一、Java虚拟机(JVM)概述 Java虚拟机(JVM)是一种可以执行Java字节码的虚拟机。它为Java应用程序提供了一个独立于硬件平台的运行环境,使得Java程序可以在任何安装了JVM...

    Java技术与Java虚拟机

    JVM的体系结构包括类装载子系统和运行引擎,前者负责加载具有指定名称的类或接口,后者执行已加载类中的指令。JVM的内部结构分为五个主要部分:方法区、堆、Java栈、程序计数器和本地方法栈。方法区存储类信息,堆...

    Java虚拟机

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

    深入java虚拟机第二版

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

    什么是Java虚拟机

    3. **Java虚拟机的体系结构** - **类加载器子系统**:负责加载类和接口,并分配唯一的名称。 - **执行引擎**:执行加载的类中的字节码指令。 - **数据区**:包括方法区、堆、程序计数器、Java堆栈、本地方法堆栈...

    java虚拟机(jvm)介绍以及相关参数设置与调优

    在本文中,我们将深入探讨Java虚拟机的体系结构、垃圾回收机制、Java对象的生命周期和分代,以及相关的参数设置与调优。 Java虚拟机体系结构 Java虚拟机由三个主要组件组成:类加载器、运行时数据区和执行引擎。类...

    深入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 SE 8版) 带书签

    类加载器负责找到类的二进制数据并将其转换为Java虚拟机内部结构。 2. **字节码执行引擎**:JVM通过解释器执行字节码,或者通过即时编译器(JIT)将热点代码编译成机器码以提高性能。Java 8引入了Lambda表达式,...

    Java虚拟机的深入研究

    JVM的体系结构包括类装载子系统和运行引擎,前者负责加载具有特定名称的类或接口,后者执行加载类中的指令。此外,JVM还包括以下五个关键组件: 1. 方法区:存储解析后的类信息。 2. 堆:存放所有线程共享的对象...

    深入JAVA虚拟机

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

Global site tag (gtag.js) - Google Analytics