JAVA从入门到精通之深入Java虚拟机(1)-Java体系结构
Vivian 2018-07-03 来源 : 阅读 1122 评论 0

摘要:本文主要向大家介绍了JAVA从入门到精通之深入Java虚拟机(1)-Java体系结构,通过具体的内容向大家展示,希望对大家在JAVA从入门到精通的路上走的更远。

本文主要向大家介绍了JAVA从入门到精通之深入Java虚拟机(1)-Java体系结构,通过具体的内容向大家展示,希望对大家在JAVA从入门到精通的路上走的更远。

Java体系结构包括四个独立但相关的技术:

1.Java程序设计语言 
2.Java class文件格式 
3.Java应用编程接口(API) 
4.Java虚拟机

当编写并运行一个Java程序时,就同时使用了这四种技术。用Java程序设计语言编写源代码,把它编译成Java class文件,然后在java虚拟机中运行class文件。当编写程序时,通过调用实现了Java应用编程接口(API)类中的方法来访问系统中资源如io、网络内存等。当程序运行的时候它可以调用class文件中的实现的方法来满足程序java api的调用。

一、Java虚拟机

Java的面向网络的核心就是Java虚拟机,它支持Java面向网络体系结构三大支柱:平台无关性、安全性和网络移动性。

Java虚拟机是一台抽象的计算机,其规范定义了每个Java虚拟机都必须实现的特性,但是为每个特定实现都留下了很多选择。

Java虚拟机的主要任务是装载class文件并且执行其中的字节码。装载类由类装载器(class loader)完成,它可以从程序和API中装载class文件。JavaAPI中只有程序执行时需要的那些类才会被装载。字节码由执行引擎来执行。

Java虚拟机中的三种执行引擎

1、最简单的执行引擎就是一次性解释字节码

2、另一种执行引擎更快,但是也更消耗内存,叫做“即时编译器”(just-in-time compiler)

3、第三种执行引擎是自适应优化器

第二种比第一种执行引擎效率上要高很多,执行速度也更快,但相对的缺点就是内存消耗很大。当内存消耗剧烈的时候,jvm就会出现异常。在这种情况下,即时编译器第一次被执行的字节码会被编译成本地机器代码,编译出的本地机器代码也会被缓存,当方法以后被调用时候可以重用。

第三种引擎,自适应优化器,在这种方法里,虚拟机开始的时候解释字节码,但是会监视运行种的程序的活动,并且记录下使用最频繁的代码段。程序运行时,虚拟机只把那些活动最频繁的代码编译成本地代码,其他代码由于使用的并不很频繁,继续保留字节码由虚拟机继续即时它们。一个自适应的优化器可以使用java虚拟机种的80%-90%的时间里执行被优化的本地代码,而只需要编译10%-20%对性能有影响的代码。

Java虚拟机与主机交互

当java虚拟机是由主机操作系统上的软件实现的时候,java程序通过调用本地方法native mehod 和主机进行交互。java中有两种方法,java方法和本地方法。java方法是由java语言编写,之后编译成字节码,存储在class文件中的。本地方法是由其他语言比如c\c++\汇编语言编写的,编译器和处理器的相关代码。

Java虚拟机上的类装载器

在Java虚拟机上,存在着多个类装载器,一个java应用程序可以使用两种类装载器,启动bootstrap类装载器和用户定义的类装载器。启动类装载器是java虚拟机实现的一部分。启动装载器通常使用默认的方式从本地磁盘中装载类,包括java api类。启动类装载器也被叫做原始类装载器、系统类装载器或者默认类装载器。

二、Java class 文件

Java class文件是一个可以跨平台的二进制文件,是通过java虚拟机来实现编译的。

平台无关性:通常情况下,一个平台上的二进制可执行文件不能在其他平台上工作。而Java class文件是可以运行在任何支持Java虚拟机制硬件平台和操作系统上的二进制文件。

网络适应性:class文件设计的紧凑,因此它们可以快速地在网络上传送。其次由于Java程序是动态链接和动态扩展的,class文件可以在需要的时候才下载。

三、Java API

Java API是运行库的集合,它提供一套访问主机系统资源的标准方法。Java API是相对安全的,它是保证平台无关性的前提,因为Java虚拟机和Java API class文件是任何Java平台都要实现的必要部分。在一个平台能够支持Java程序以前,必须在这个特定平台上明确地实现API的功能。

四、Java程序设计语言

尽管Java是为网络而生的,但许多人使用Java写程序还可能是因为想要利用Java程序设计语言的优势:

1.面向对象 
2.多线程 
3.结构化错误处理 
4.垃圾收集 
5.动态连接 
6.动态扩展

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!

本文由 @Vivian 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程