博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java虚拟机 简介
阅读量:5036 次
发布时间:2019-06-12

本文共 1110 字,大约阅读时间需要 3 分钟。

工作过一段时间才发现不用"管他是怎么实现的"这些话都是狗p,以下是看 Java虚拟机规范(Java SE 7) 笔记,个人也觉得先看规范在学习深入理解等系列会更容易

第一章简介

 jvm:只与特定的二进制文件格式(class)有关联,java硬件无关性与操作系统无关的关键部分

 实现:HotSpot,jrockit,ibmJvm等

 简单的说,实现jvm只需要正确读取class文件的指令,并正确执行这些指令所蕴含的操作即可

 

相当的简单的笔记,但有些东西需要参考下

 

Java虚拟机可以看作是一台抽象的计算机。如同真实的计算机那样,它有自己的指令集以及各种运行时内存区域,那么,

1.计算机是怎么工作的?

小学生问题,不会,不过我知道其他的

计算机三大核心部件:CPU、内部存储器和输入/输出设备

指令集:存储在CPU内部,对CPU运算进行指导和优化的硬程序。拥有这些指令集,CPU就可以更高效地运行。

所以jvm因该是模拟计算机的三大核心的工作方式,他的执行就可以是解释器来执行程序,也可以通过把自己的指令集编译为实际CPU的指令来实现,它可以通过微代码来实现,或者甚至直接实现在CPU中。

2.硬件相关性是什么?

首先看一下机器码与字节码

字节码:字节码通常指的是已经经过编译,但与特定机器码无关,需要直译器转译后才能成为机器码的中间代码。字节码通常不像源码一样可以让人阅读,而是编码后 的数值常量、引用、指令等构成的序列。字节码主要为了实现特定软件运行和软件环境、硬件环境无关。字节码的实现方式是通过编译器和虚拟机器。编译器将源码 编译成字节码,特定平台上的虚拟机器将字节码转译为可以直接执行的指令。字节码的典型应用为Java语言。

原生机器码:机器语言是一种指令集的体系。这种指令集,称机器码,是电脑的CPU可直接解读的数据。机器码有时也被称为原生码,这个名词比较强调某种编程语言或库,它与运行平台相关的部份。

看起来是这样的

编译型:程序    -->    机器语言                (直接编译为机器语言)

解释性:程序    -->    字节码     --->机器语言     (根据具体系统在编译为机器语言
增加一个中间层达到平台无关的目的)

 

这些都是编程语言,可我们在开发的时候还有脚本语言,那么

3.脚本语言又是什么?

脚本语言: 规则+解释器,一般都是以文本形式存在,类似于一种命令,用以回应他人意图

说白了就是脚本语言通过解析器完成,不需要转换成二进制字节,当然性能也会慢一点点

 

总结:jvm只是一个规范,以后再说jvm原理得先加上在xxx的jvm了。。。

 

 

转载于:https://www.cnblogs.com/liuCy/p/3525039.html

你可能感兴趣的文章
云计算之路-阿里云上:“黑色30秒”走了,“黑色1秒”来了,真相也许大白了...
查看>>
APScheduler调度器
查看>>
设计模式——原型模式
查看>>
【jQuery UI 1.8 The User Interface Library for jQuery】.学习笔记.1.CSS框架和其他功能
查看>>
如何一个pdf文件拆分为若干个pdf文件
查看>>
web.xml中listener、 filter、servlet 加载顺序及其详解
查看>>
前端chrome浏览器调试总结
查看>>
获取手机验证码修改
查看>>
数据库连接
查看>>
python中数据的变量和字符串的常用使用方法
查看>>
等价类划分进阶篇
查看>>
delphi.指针.PChar
查看>>
Objective - C基础: 第四天 - 10.SEL类型的基本认识
查看>>
java 字符串转json,json转对象等等...
查看>>
极客前端部分题目收集【索引】
查看>>
第四天 selenium的安装及使用
查看>>
关于js的设计模式(简单工厂模式,构造函数模式,原型模式,混合模式,动态模式)...
查看>>
KMPnext数组循环节理解 HDU1358
查看>>
android调试debug快捷键
查看>>
【读书笔记】《HTTP权威指南》:Web Hosting
查看>>