精华内容
下载资源
问答
  • Java编译器与JVM解释器区别理解 编译器:高级语言机器语言之间的桥梁 JVM解释器:充当字节码文件操作系统之间的桥梁 首先Java之外的编译器区分一下 例如c语言的编译器——直接面向计算机 把源代码翻译成计算机...

    编译器:高级语言与机器语言之间的桥梁
    JVM解释器:充当字节码文件与操作系统之间的桥梁

    首先与Java之外的编译器区分一下
    例如c语言的编译器——直接面向计算机
    把源代码翻译成计算机能够理解的机器语言
    本质:高级语言到机器语言
    Java编译器javac——面向JVM虚拟机
    把源代码翻译成JVM能够理解的语言,也就是字节码,文件格式是.class(用二进制记录)
    本质:高级语言到字节码(机器语言)
    JVM解释器——面向安装了此Java虚拟机的计算机
    把Java虚拟机理解的语言(字节码)翻译成安装了此Java虚拟机的计算机能够理解的语言(机器语言)
    本质:字节码(机器语言)到机器语言

    因为java程序既要编译也要经过JVM的解释运行,所以说Java被称为半解释语言
    字节码:字节码文件.class在计算的体系结构中本质上对应的是一种机器语言(而这里的机器叫作JVM),所以JVM本身是可以直接运行这里的.class文件,用二进制记录。

    Java程序运行步骤**:
    一、源文件由编译器编译成字节码
    二、字节码由java虚拟机解释运行。

    展开全文
  • 即jdk或jre目录下bin目录中的java.exe文件,而javac.exe是编译器。 运行java程序的过程是先用javac编译,然后用java解释。而一经编译成功后,就可以直接用java.exe随处解释运行了。 JVMJVM有自己完善的硬件架构,...

    java解释器就是把在java虚拟机上运行的目标代码(字节码)解释成为具体平台的机器码的程序。即jdk或jre目录下bin目录中的java.exe文件,而javac.exe是编译器。
    运行java程序的过程是先用javac编译,然后用java解释。而一经编译成功后,就可以直接用java.exe随处解释运行了。
    JVM:JVM有自己完善的硬件架构,如处理器、堆栈(Stack)、寄存器等,还具有相应的指令系统(字节码就是一种指令格式)。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需要生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM是Java平台无关的基础。JVM负责运行字节码:JVM把每一条要执行的字节码交给解释器,翻译成对应的机器码,然后由解释器执行。JVM解释执行字节码文件就是JVM操作Java解释器进行解释执行字节码文件的过程。
    Java编译器:将Java源文件(.java文件)编译成字节码文件(.class文件,是特殊的二进制文件,二进制字节码文件),这种字节码就是JVM的“机器语言”。javac.exe可以简单看成是Java编译器。
    Java解释器:是JVM的一部分。Java解释器用来解释执行Java编译器编译后的程序。java.exe可以简单看成是Java解释器。
    注意:通常情况下,一个平台上的二进制可执行文件不能在其他平台上工作,因为此可执行文件包含了对目标处理器的机器语言。而Class文件这种特殊的二进制文件,是可以运行在任何支持Java虚拟机的硬件平台和操作系统上的!
    维基百科定义:
    JVM:一种能够运行Java字节码(Java bytecode)的虚拟机。
    字节码:字节码是已经经过编译,但与特定机器码无关,需要解释器转译后才能成为机器码的中间代码。
    Java字节码:是Java虚拟机执行的一种指令格式。
    解释器:是一种电脑程序,能够把高级编程语言一行一行直接翻译运行。解释器不会一次把整个程序翻译出来,只像一位“中间人”,每次运行程序时都要先转成另一种语言再作运行,因此解释器的程序运行速度比较缓慢。它每翻译一行程序叙述就立刻运行,然后再翻译下一行,再运行,如此不停地进行下去。它会先将源码翻译成另一种语言,以供多次运行而无需再经编译。其制成品无需依赖编译器而运行,程序运行速度比较快。
    即时编译(Just-in-time compilation: JIT):又叫实时编译、及时编译。是指一种在运行时期把字节码编译成原生机器码的技术,一句一句翻译源代码,但是会将翻译过的代码缓存起来以降低性能耗损。这项技术是被用来改善虚拟机的性能的。
    JIT编译器是JRE的一部分。原本的Java程序都是要经过解释执行的,其执行速度肯定比可执行的二进制字节码程序慢。为了提高执行速度,引入了JIT。在运行时,JIT会把翻译过来的机器码保存起来,以备下次使用。而如果JIT对每条字节码都进行编译,则会负担过重,所以,JIT只会对经常执行的字节码进行编译,如循环,高频度使用的方法等。它会以整个方法为单位,一次性将整个方法的字节码编译为本地机器码,然后直接运行编译后的机器码。

    转载自https://www.jianshu.com/p/2698d5a2603c

    展开全文
  • 作用: JVMJVM有自己完善的硬件架构,如处理器、堆栈...JVM屏蔽了具体操作系统平台相关的信息,使得Java程序只需要生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM是...

    转自 https://www.cnblogs.com/chengdabelief/p/6576320.html
    在这里插入图片描述
    作用:

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

    Java编译器:将Java源文件(.java文件)编译成字节码文件(.class文件,是特殊的二进制文件,二进制字节码文件),这种字节码就是JVM的“机器语言”。javac.exe可以简单看成是Java编译器。

    Java解释器:是JVM的一部分。Java解释器用来解释执行Java编译器编译后的程序。java.exe可以简单看成是Java解释器。

    注意:通常情况下,一个平台上的二进制可执行文件不能在其他平台上工作,因为此可执行文件包含了对目标处理器的机器语言。而Class文件这种特殊的二进制文件,是可以运行在任何支持Java虚拟机的硬件平台和操作系统上的!

    维基百科定义:

    JVM:一种能够运行Java字节码(Java bytecode)的虚拟机。

    字节码:字节码是已经经过编译,但与特定机器码无关,需要解释器转译后才能成为机器码的中间代码。

    Java字节码:是Java虚拟机执行的一种指令格式。

    解释器:是一种电脑程序,能够把高级编程语言一行一行直接翻译运行。解释器不会一次把整个程序翻译出来,只像一位“中间人”,每次运行程序时都要先转成另一种语言再作运行,因此解释器的程序运行速度比较缓慢。它每翻译一行程序叙述就立刻运行,然后再翻译下一行,再运行,如此不停地进行下去。它会先将源码翻译成另一种语言,以供多次运行而无需再经编译。其制成品无需依赖编译器而运行,程序运行速度比较快。

    即时编译(Just-in-time compilation: JIT):又叫实时编译、及时编译。是指一种在运行时期把字节码编译成原生机器码的技术,一句一句翻译源代码,但是会将翻译过的代码缓存起来以降低性能耗损。这项技术是被用来改善虚拟机的性能的。

    JIT编译器是JRE的一部分。原本的Java程序都是要经过解释执行的,其执行速度肯定比可执行的二进制字节码程序慢。为了提高执行速度,引入了JIT。在运行时,JIT会把翻译过来的机器码保存起来,以备下次使用。而如果JIT对每条字节码都进行编译,则会负担过重,所以,JIT只会对经常执行的字节码进行编译,如循环,高频度使用的方法等。它会以整个方法为单位,一次性将整个方法的字节码编译为本地机器码,然后直接运行编译后的机器码。

    二进制文件:广义的二进制文件即为文件,由文件在外部存储设备的存放方式为二进制而得名。狭义的二进制文件即指除文本文件以外的文件。文本文件的格式包括:ASCII、MIME、txt。

    展开全文
  • 想写个java编译器jvm

    2015-11-02 02:39:59
    最近有想法自己动手写个java编译器jvm,类似jdk自带javac和java的功能,但网上这方面的资料比较少,自己也刚接触java不久,跪求大神指导,是否有这方面的资料和书籍可以借鉴!
  • 什么是JVMJava编译器和Java解释器

    万次阅读 多人点赞 2017-10-25 16:42:08
    Java编译器:将Java源文件(.java文件)编译成字节码文件(.class文件,是特殊的二进制文件,二进制字节码文件),这种字节码就是JVM的“机器语言”。javac.exe可以简单看成是Java编译器。 Java解释器:是JVM的一...

    JVM:够运行Java字节码(Java bytecode)的虚拟机


    Java编译器:将Java源文件(.java文件)编译成字节码文件(.class文件,是特殊的二进制文件,二进制字节码文件),这种字节码就是JVM的“机器语言”。javac.exe可以简单看成是Java编译器。


    Java解释器:是JVM的一部分。Java解释器用来解释执行Java编译器编译后的程序。java.exe可以简单看成是Java解释器。


    补充:通常情况下,一个平台上的二进制可执行文件不能在其他平台上工作,因为此可执行文件包含了对目标处理器的机器语言。而Class文件这种特殊的二进制文件,是可以运行在任何支持Java虚拟机的硬件平台和操作系统上的!

    展开全文
  • JVM 中有三个非常重要的编译器,它们分别是:前端编译器、JIT 编译器和AOT编译器。 前端编译器 将源代码转化成字节码,如javac;我们一般称 javac 编译器为前端编译器,因为其发生在整个编译的前期。javac编译...
  • 只要在调用 Java 类的方法或构造函数之前确保它可用,Java编译器只需要知道它,即仅在编译时——而不一定在运行时。 此外,使用类名的import语句,甚至使用(导入的或完全限定的)类名的声明总是没问题的——即使该...
  • 上一节,我们把C语言编译成了可以被java虚拟机加载执行的java汇编语言。这节,我们就jvm的基本机制进行深入了解,如果不理解java虚拟机的体系结构,那么我们不可能把C语言转换成能顺利在虚拟机上执行的字节码
  • JVM三种编译器(Javac \ JIT \ AOT)

    千次阅读 2019-06-24 17:08:35
    JVM基础系列第4讲:从源代码到机器码,发生了什么? 对于 Java 语言来说,其从源代码到机器码,这中间到底发生了什么呢? 如下图所示,编译器可以分为:前端编译器、JIT 编译器和AOT编译器. 1. 前端编译器:源...
  • Java编译器JVM、解释器

    千次阅读 2010-01-29 17:21:00
    Java虚拟机(JVM)是可运行Java代码的假想计算机。只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行。本文首先简要介绍从Java文件的编译到最终执行的过程,随后对...
  • 简述JVM解释器与编译器的区别

    千次阅读 2019-04-02 17:56:49
    JAVA编译器(javac.exe)的作用是将java源程序编译成中间代码字节码文件,是最基本的开发工具JAVA解释器(java.exe)(英语:Interpreter),又译为直译器,是一种电脑程序,能够把高级编程语言一行一行直接转译运行...
  • 假设A.java文本文件采用GBK编码,那么javac编译该文件的时候,首先读取该文件,读取后编译成UTF-8编码的字节码文件,这个过程中会导致乱码,这个乱码是不可恢复的,那么为什么在最后输出的时候指定了以GBk解码,最终...
  • 本节我们研究jvm的return指令,以及对局部变量的操作,同时给出了一段C语言代码,展示了我们的编译器是如何把给定C语言编译成java字节码的
  • 概述:  在Java虚拟机中,Java的“编译期”是个不确定的过程,它可以指一个前端编译器将.Java文件编译为.class文件;也有可能指将虚拟机的后端运行期将... Java编译器原理我们在这儿就不复习了,按照编译原理课程上老
  • JVM编译器

    2020-06-03 15:19:59
    1.编译器类型 一段代码是怎么通过简单的人类可读的字符变为机器可执行的...编译期用到的程序或代码就叫编译器编译器JVM中通常涉及2个概念:前端编译器和后端编译器 前端编译器:主要功能是把.java文件转换成.cl
  • JVMJava编译器和Java解释器

    万次阅读 2015-06-06 16:57:18
    JVM:Java主要靠Java虚拟机(JVM)在目标码级实现平台无关性。JVM是一种抽象机器,它附着在具体操作系统之上,本身具有一套虚机器指令,并有自己的栈...Java编译器:javac.exe可以看成是Java编译器。 Java解释器:是
  • 一、前言 随着互联网的发展,现在虚拟机地表最稳定,最强的默认是Hotspot虚拟机。先查看下: ...之前的JVM包含了两种JVM的实现,一种是客户端的,一种是服务端的。现在已经把Client VM忽略掉了 java ...
  • java编译器源码分析之词法分析器

    千次阅读 2018-10-30 12:16:02
    java编译器是什么? 编译简单理解就是一种高级语言到另一种低级语言的翻译过程;而执行这个过程的主体称为编译器。寻常所说的编译器是指把汇编语言转变成机器语言,也称目标代码,即CPU指令集。汇编语言是一种比机器...
  • 主要介绍了Java虚拟机JVM性能优化(二):编译器,本文先是讲解了不同种类的编译器,并对客户端编译,服务器端编译器和多层编译的运行性能进行了对比,然后给出了几种常见的JVM优化方法,需要的朋友可以参考下
  • java 编译器工作原理

    千次阅读 2020-06-14 19:42:54
    javai编译过程分析
  • JVM解释器和编译器

    千次阅读 2019-02-16 17:07:11
    JVM解释器让Java程序快速启动,编译器Java程序高效运行,这是Java长久生存的一大重要原因。 解释器与编译器的关系 在一个Java程序执行时,首先通过javac把java文件编译为虚拟机可以识别的class文件。然后由...
  • jdk=java编译器+jre(java运行时环境) jre=jvm+运行时支持类库(String ,Vector); eclipse本身自带了java编译器但不包含jre;
  • Java编译器:将编写的Java源文件即(.java)编译成字节码文件即(.class),这个class文件是一种中间代码,它机器的平台无关。是一种特殊的二进制文件,二进制字节码文件。可以在装有JVM虚拟机的电脑上运行。 Java...
  • Java编译器JAVA编译器(javac.exe)的作用是将java源程序编译成中间代码字节码文件,是最基本的开发工具。编译时首先读入java源程序(即在MS-DOS命令行下键入javac HelloWorld.java等文件名参数和其他选项参数...
  • Java编译器和解释器

    2021-02-26 17:13:47
    Java编译器:将Java源文件(.java文件)编译成字节码文件(.class文件,是特殊的二进制文件,二进制字节码文件),这种字节码就是JVM的“机器语言”。javac.exe可以简单看成是Java编译器。 Java解释器:是JVM的一...
  • Java编译器对字符串拼接的优化

    千次阅读 2021-03-21 16:02:07
    平时在使用“+”进行字符串拼接的时候,我们有想过编译器会对我们的程序进行何种处理吗?到底我们的程序会怎么执行呢?今天通过反汇编指令来看看拼接后代码是怎么个样子。 让我们看看最简单的拼接方式: ...
  • Java的入口: public static void main(String[] args) 这是java程序的入口地址,java虚拟机运行程序的时候首先找的就是main方法.跟C语言里面的main()函数的作用是一样的.只有有main()方法的java程序才能够被java...
  • Java编译器对String的优化

    千次阅读 2017-11-28 16:51:32
    首先看以下的代码: ...(2)对于第二个例子,编译器编译代码时,会将"1234"当做一个常量,并保存在JVM的常量池中,然后编译String str3="1234";时,将常量的指针赋值给str3,在编译String str4="1234";时,编译器
  • JVM屏蔽了具体操作系统平台相关的信息,使得Java程序只需要生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVMJava平台无关的基础。JVM负责运行字节码:JVM把每一条要执行的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 167,662
精华内容 67,064
关键字:

java编译器与jvm

java 订阅