zoukankan      html  css  js  c++  java
  • Java虚拟机 简介

    工作过一段时间才发现不用"管他是怎么实现的"这些话都是狗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了。。。

     

  • 相关阅读:
    linux命令---vi编辑器快速定位行数
    Linux如何查找大文件或目录总结
    Xargs用法详解(自创)
    linux如何模糊查找一个文件
    HashMap在什么场景下会由哪些内部方法导致线程不安全,至少给出一种场景
    索引失效(全面总结)
    异常处理(Exception Handling)
    JAVA异常及其异常处理方式
    Activity嵌套多个Fragment实现横竖屏切换
    iOS KVC(Key-Value Coding)
  • 原文地址:https://www.cnblogs.com/liuCy/p/3525039.html
Copyright © 2011-2022 走看看