Java虚拟机(JVM)是可运行Java代码的假想计算机。只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行。java编译器把java编译成字节码,也就是.class文件,然后JVM给编译成的字节码提供运行环境。java的源代码是无法直接在JVM上运行的。

1、java编译器:

Java语言写的源程序通过Java编译器,编译成与平台无关的‘字节码程序’(.class文件,也就是0,1二进制程序),然后在OS之上的Java解释器中解释执行。 也相当与 注:JVM(java虚拟机)包括解释器,不同的JDK虚拟机是相同的,解释器不同。

2、JVM-java虚拟机:JVM:是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。java编译器只要面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。

JVM执行程序的过程: I.加载。class文件 II.管理并分配内存 III.执行垃圾收集 JRE(java运行时环境)由JVM构造的java程序的运行环境编译时运行时。

3、JVM有自己完善的硬件架构,如处理器、堆栈(Stack)、寄存器等,还具有相应的指令系统(字节码就是一种指令格式)。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需要生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM是Java平台无关的基础。JVM负责运行字节码:JVM把每一条要执行的字节码交给解释器,翻译成对应的机器码,然后由解释器执行。JVM解释执行字节码文件就是JVM操作Java解释器进行解释执行字节码文件的过程。

已被512人点赞

java 编译器和 jvm_java编译器和JVM有什么区别相关推荐

  1. java开发C语言编译器:把C实现的快速排序算法编译成jvm字节码

    有了前面一系列的铺垫和准备后,我们终于能走到至关重要的一刻.在本节,我们将用C语言开发快速排序算法,然后利用我们的编译器把它编译成java字节码,让C语言编写的快速排序算法能在java虚拟机上顺利执行 ...

  2. 一文带你学明白java虚拟机:C1编译器,HIR代码优化

    HIR代码优化 为了减少编译时间,C1在抽象解释生成HIR期间,每生成一条SSA指令,都会调用append_with_bci努力尝试若干局部优化.除此之外,HIR构造完成之后,C1还会执行若干轻量级全 ...

  3. JVM原理(二)执行引擎篇(JVM程序执行流程、JIT编译器、JIT编译器优化)

    一.JVM程序执行流程 上一章我们介绍过程序执行通常分为解释执行和编译执行,而Java两种方式都采用了,下面是Java编译成字节码.动态编译和解释为机器码的过程分析: 编译器和解释器的协调工作流程: ...

  4. 测试用什么编译java代码_java – 测试编译器

    我参与了一个项目,其中Java AST被翻译成另一种语言OpenCL,使用Eclipse编译器,并且有类似的问题. 我没有为你提供神奇的解决方案,但我会分享我的经验以防万一. 您使用预期输出(使用ou ...

  5. 你深入解析过java虚拟机:C1编译器,从HIR到LIR吗?

    从HIR到LIR LIR类似于三操作数的实现,但多了一些诸如对象分配和加锁的高级指令.C1遍历HIR的每个基本块,为每个基本块的每条SSA指令生成对应的LIR指令.从HIR到LIR的转换过程由LIRG ...

  6. 大多数程序员都懂的java虚拟机:C1编译器从字节码到HIR

    从字节码到HIR 正如之前看到的,C1的HIR是一个基于静态单赋值的图IR,由基本块构成控制流图,由静态单赋值指令构成基本块,如图8-1所示. 所有的指令都派生自Instruction类,其中,Blo ...

  7. java 解释器与JIT编译器

    早在Java1.0版本的时候,Sun公司发布了一款名为Sun Classic VM的Java虚拟机,它同时也是世界上第一款商用Java虚拟机,在当时这款虚拟机内部只提供解释器,用今天的眼光来看待必然是 ...

  8. java的lr语法编译器,编译器开发--- 自己动手用Java写编译器

    课程目录 1.用java实现一个简易编译器1-词法解析入门.mp4 2.用java实现一个简易编译器2-语法解析.mp4 3.语法解析改进及代码生成.mp4 4.输入系统及分词系统概述.mp4 5.输 ...

  9. java程序设置jvm_Java程序员应在2018年学习的3种JVM语言

    java程序设置jvm 如果您是Java程序员,并且想学习更多的编程语言以扩展您的知识和技能,但是不确定选择哪种编程语言,那么您来对地方了. 在本文中,我将分享Java程序员可以在2018年学习的3种 ...

  10. java开发流程图_Java 详解 JVM 工作原理和流程

    作为一名Java使用者,掌握JVM的体系结构也是必须的. 说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言.Java类文件格式.Java ...

最新文章

  1. 电商平台战 运营是关键
  2. web自动化测试—selenium游览器下拉框操作
  3. [NTU-Machine-learning-note]1 Introduction(4)
  4. python super详解_Python super 详解
  5. C#的Timer解析
  6. Windows 7有用的20条新功能及技巧
  7. Python+OpenCV:图像平滑
  8. mysql是否需要设置外键_数据库到底需不需要设置外键?
  9. 移除元素所有事件监听_前端日记—DOM 事件机制和事件委托
  10. 网速慢?网线选对了吗?!网线类型对应带宽等详细参数
  11. dw中css制作导航,Dreamweaver导航条按钮制作方法
  12. cmd无法识别javac命令_cmd输入javac提示不是内部命令怎么办
  13. 美国国家机器人计划2.0部分项目简介
  14. 金蝶软件认证显示服务器异常,金蝶提示云服务器异常
  15. 再生龙备份linux文件多大,使用再生龙Clonezilla备份还原Linux系统
  16. KSO - sqlserver事务实现
  17. 极度快速的近似最近邻搜索算法(EFANNA)-学习笔记
  18. 超级记忆法(4)——第二小时
  19. 微信公众号如何变得更好_改善内容审核是平台变得更好的方式。
  20. 一行代码让Python的运行速度提高100倍

热门文章

  1. Turbo编码原理及基本概念
  2. Kettle下载与安装教程【保姆版】
  3. matlab编写LDA,lda算法matlab实现
  4. mysql 局域网数据库共享,SQL Server 2005 在局域网中共享数据库
  5. 【AD】Altium Designer PCB文件的绘制(上篇:PCB基础和布局)
  6. Python爬虫有哪些较好的书籍?
  7. Linux中安装tree命令
  8. 全国计算机软考机试试题,软考机试试题.doc
  9. 基于MATLAB的车牌识别(GUI)
  10. 《数据结构》考研天勤和王道 第三章 栈、队列、数组和广义表