华为开发者空间
Java体系结构简介
Java体系结构简介
文章摘自《深入java虚拟机第二版》Java体系结构包括四个独立但相关的技术:Java程序设计语言Java class文件格式Java应用编程接口(API)Java虚拟机用Java编程语言编写源代码,把它编译成Javaclass文件,然后再在Java虚拟机中运行class文件(图1.1)。 Java虚拟机和Java API一起组成了一个“平台”(从版本1.
文章摘自《深入java虚拟机第二版》
Java体系结构包括四个独立但相关的技术:
Java程序设计语言
Java class文件格式
Java应用编程接口(API)
Java虚拟机
用
Java
编程语言编写源代码,把它编译成
Java class文件
,然后再在
Java虚拟机
中运行
class文件
(图1.1)。
Java程序可以在不同的计算机上运行,这是因为Java平台自己可以用软件实现(图1.2)
Java虚拟机
是一台抽象的计算机,是Java面向网络的核心,支持
Java
面向网络体系结构三大支柱的所有方面:平台无关性、安全性和网络移动性,其主要任务是装载class文件并且执行其中的字节码,
Java虚拟机
包含一个
类装载器
(class loader),它可以从程序和API中装载
class
文件,字节码由执行引擎来执行(图1.3)。
Java虚拟机
拥有灵活的类装载器体系结构,从而使Java应用程序得以用自定义的方式来实现类的装载,一个
Java
应用程序可以使用两种类装载器:“
启动”(bootstrap)类装载器和
用户定义的
类装载器
。
启动类装载器(
系统中惟一的)是Java虚拟机实现的一部分,
启动类装载器
通常使用某种默认方式从本地磁盘中装载类,包括Java API的类(启动类装载器也被称为原始类装载器、系统类装载器或者默认类装载器)。
用户自定义的
类装载器
能够用Java编写,能够被编译为
class
文件,能够被
虚拟机装载
,还能够像其他对象一样实例化。他们实际上只是运行中的
Java应用程序
可执行代码的一部分(图1.5)。
执行引擎:
不同的
Java虚拟机
中,执行引擎可能实现得非常
不同,
现在主要有四类执行引擎
。
第一类
执行行引擎是一次性解析字节码
。在
软件实现的虚拟机中,
它是最简单的执行引擎。每次执行的时候都要对字节码重新进行解析。
第二类
执行引擎更快,但是也更消耗内存,叫做"即时编译器"(just-in-time compiler)
,在这种情况下,第一次被执行的字节码会被编译成本地机械代码。编译出的本地机械代码会被缓存,当方法以后被调用的时候可以重用。
第三类
执行引擎是自适应优化器
。在这种方法里,虚拟机开始的时候解析字节码,但是会监视运行中程序的活动,并且记录下使用最频繁的代码段。程序运行的时候,虚拟机只把那些活动最频繁的代码编译成本地代码,其他的代码由于使用得并不是很频繁,继续保留为字节码---由虚拟机继续解析他们。一个自适应的优化器可以使得Java虚拟机在80%~90%的时间里执行被优化过的本地代码,而只需要编译10%~20%对性能有影响的代码。
第四类
执行引擎是由硬件芯片构成。
它用本地方法执行Java字节码,这种执行引擎实际上是内嵌在芯片里的。
Java class文件
Java class文件
主要在平台无关性和网络移动性方面使
Java
更适应于网络。
它在平台无关性方面的任务是为Java程序提供独立于底层主机平台的二进制形式的服务。通常情况下,一个平台上的二进制可执行文件不能在其他平台上工作,而
Java class文件
是可以运行在任何支持Java虚拟机的硬件平台和操作系统上的二进制文件(
Java编译器
把
Java源文件
的指令编译成字节码,这种字节码就是
Java虚拟机
的“机械语言”)。
除了对于平台无关性的支持,J
ava class
文件还在支持网络移动性的Java体系结构中担当了至关重要的角色。
首先:class文件设计得紧凑,因此他们可以快速地在网络上传送;其次,由于Java程序是动态连接和动态扩展的,class文件可以在需要的时候才下载。
这个特点使得Java应用程序能够安排从网络上下载class文件的时间,从而可以最大限度地减少终端用户的等待时间。
Java API(略)
Java 程序设计语言 (略)
评论这张
转发至微博
- 1570
- 0
- 0
- 0
扫一扫分享内容
- 分享
回到
顶部
顶部
所有评论(0)