首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java解释器虚拟机-【Java解释器和编译器】解释器和编译器的深入理解

作为一个看过JVM虚拟机的小白,不懂解释器和编译器之间的区别的,那就是糗大了~   1 参考文献 深入理解JVM虚拟机 2 简单地区别解释器和编译器   JVM:Java字节码(Java )在上面可以直接运行...JVM把每一条要执行的字节码交给解释器,翻译成对应的机器码,然后由解释器执行。JVM解释执行字节码文件就是JVM操作Java解释器进行解释执行字节码文件的过程。   ...Java编译器:将Java源文件(.java文件)编译成字节码文件(.class文件,是特殊的二进制文件java解释器虚拟机,二进制字节码文件),这种字节码就是JVM的“机器语言”。...javac.exe可以简单看成是Java编译器。   Java解释器:是JVM的一部分。Java解释器用来解释执行Java编译器编译后的程序。java.exe可以简单看成是Java解释器。   ...下图是Java中解释器和编译器的交互(JVM中JIT不是必需的,可以么有),关于具体的优化技术,自己也不是看得很清楚。有机会再写吧。 本文共 582 个字数,平均阅读时长 ≈ 2分钟

51640

Java解释器和编译器

所以我们需要将它转换成机器能读懂的机器语言(机器码)。转换工作主要分为以下几个步骤: 前端编译器 javac就是前端编译器,可以将java文件编译成字节码组成的class文件。...class中字节码内容如下: 解释器和即时编译器 我们通过javac将java文件编译成class文件,当jvm启动加载class,需要逐条执行字节码指令来完成程序功能。...即时编译器(JIT) 即时编译器按照我的理解就是:以方法为单位,将热点代码的字节码一次性转为机器码,并在本地缓存起来的工具。避免了部分代码被解释器逐行解释执行的效率问题。...下图为方法调用计数器的执行过程: 目前主流的HotSpot虚拟机中默认是采用解释器与其中一个编译器(C2编译器)直接配合的方式将字节码转换成机器码 运行参数 在执行java程序的时候,以下参数是和编译方面的运行及调试参数...结语 这就是对解释器、编译器简单的介绍,主要是讲述了一下概念性的东西及个人理解。

58010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JVM、Java编译器和Java解释器

    JVM、Java编译器和Java解释器 java解释器就是把在java虚拟机上运行的目标代码(字节码)解释成为具体平台的机器码的程序。...即jdk或jre目录下bin目录中的java.exe文件,而javac.exe是编译器。 运行java程序的过程是先用javac编译,然后用java解释。...javac.exe可以简单看成是Java编译器。 Java解释器:是JVM的一部分。Java解释器用来解释执行Java编译器编译后的程序。java.exe可以简单看成是Java解释器。...Java编译器却不将对变量和方法的引用编译为数值引用,也不确定程序执行过程中的内存布局,而是将这些符号引用信息保留在字节码中,由解释器在运行过程中创立内存布局,然后再通过查表来确定一个方法所在的地址。...执行环境用于保存解释器对Java字节码进行解释过程中所需的信息。它们是:上次调用的方法、局部变量指针和操作数栈的栈顶和栈底指针。执行环境是一个执行一个方法的控制中心。

    6.5K31

    编译器和解释器的简介|编译原理

    1.1 Introduction to Compilers and interpreters https://v.qq.com/x/page/u0821wmf4av.html 开头简单的讲了编译器和解释器...: 编译器:在一个程序运行之前,首先需要被翻译成一种能够被计算机执行的形式,完成这项翻译工作的软件系统就是编译器。...一个编译器就是一个程序,可以阅读以某一种语言(源语言)编写的程序,并把改程序翻译成一个等价的,用另一种语言(目标语言)编写的程序,编译器的重要任务之一就是报告他在翻译过程中发现的源程序中的错误。 ?...解释器: 解释器是另一种常见的语言处理器,并不通过翻译的方式生成目标程序,从用户的角度看,解释器直接利用用户提供的输入执行源程序中指定的操作。 ? ? ? ?...COOL具有现实编程语言的基本特征,但是它小而简单,可以在几千行代码中实现。选择执行项目的学生可以用C ++或Java实现它。 为什么学习编译器?

    1.4K40

    1.1 编译器和解释器的简介|编译原理

    视频封面 上传视频封面 斯坦福大学 编译原理中文字幕 ​视频传送门 开头简单的讲了编译器和解释器: 编译器:在一个程序运行之前,首先需要被翻译成一种能够被计算机执行的形式,完成这项翻译工作的软件系统就是编译器...一个编译器就是一个程序,可以阅读以某一种语言(源语言)编写的程序,并把改程序翻译成一个等价的,用另一种语言(目标语言)编写的程序,编译器的重要任务之一就是报告他在翻译过程中发现的源程序中的错误。 ?...解释器: 解释器是另一种常见的语言处理器,并不通过翻译的方式生成目标程序,从用户的角度看,解释器直接利用用户提供的输入执行源程序中指定的操作。 ? ? ? ?...COOL具有现实编程语言的基本特征,但是它小而简单,可以在几千行代码中实现。选择执行项目的学生可以用C ++或Java实现它。 为什么学习编译器?...了解编译器的工作原理也将使您成为更好的程序员,并提高您快速学习新编程语言的能力。

    97630

    11 个最佳的 Python 编译器和解释器

    Python 库可用于以下用途: Web 开发 数据科学 机器学习 多媒体 软件开发 像 Django 这样的 Web 框架 GUI 应用 大多数极客认为 Python 是解释性语言,但它也存在编译过程...本文重点介绍了适用于 Python 程序员的 11 种最佳的 Python 编译器和解释器。 1.Brython ?...它是一种流行的将 Python 代码编译为简单易读的 Java 代码的编译器。它是一个轻量级的 Python 编译器,支持对矩阵和向量运算进行切片。...它可用于创建 Servelets、Swing、SWT 和 AWT 软件包的解决方案。Jython 使用 CPython 之类的全局解释器锁(GIL) 。...CPython 是默认的且使用最广泛的 Python 编译器。它是用 C 语言编写的,并使用 GIL(全局解释器锁),这使得并发 CPython 进程之间的通信很困难。

    1.3K20

    解释器模式举例-柯里化的前生今世(四):编译器与解释器

    写完了这个解释器之后,我们会增加一些新的功能。   编译器与解释器   编译器会将源代码转换成另一种语言的代码解释器模式举例,然后在支持后一种语言的机器上执行。   ...例如,一段Java程序,会首先经过javac编译为字节码,   字节码再交由Java虚拟机来解释执行。(JIT和RTSJ,略。。   ...编译器包含以下三个部分解释器模式举例,   编译器前端:词法分析,语法分析,最终生成抽象语法树这种中间代码。...编译器优化:中间代码多次转换,多种优化,   编译器后端:目标代码生成,优化目标代码。   解释器不包含目标代码生成阶段,将优化结果直接执行。   前端和优化,是编译器和解释器共有的。   ...简化解释器的实现   为了简化解释器的实现,我们会直接分析S表达式(抽象语法树),并且略过优化环节。我们也不解释四则运算表达式,因为这涉及到了操作符的定义问题。

    31310

    关于PHP编译器phpStorm找不到解释器的问题

    最近下载了phpStorm编译器,创建了项目,创建了PHP文件,敲了代码,运行的时候显示错误Error: There is no default interpreter in this project...这句话的大概意思就是phpStorm编译器运行此代码的时候找不到解释器。  我这里设置的是中文,我就懒得改英文了,如果大家是英文的话,可以对照着看。...这里它给咱们直接默认安装php解释器了,咱们直接默认啥都不用管,继续点击Next进入下一步。  点击Install(安装的意思)进行安装,等待安装完成。...三、进入phpStorm选择php解释器  点击三个点进入配置 PHP可执行文件WAMP64\bin\php\php8.2.0\php.exe,按照这个路径配置即可,php8.2.0是解释器版本,...下面那个调试器扩展可选可不选,只要有PHP可执行文件即可。 四、完成PHP解释器配置,运行成功。

    64230

    Java 答疑:编译器和解释器有何区别?Java 语言属于编译型编程语言还是解释型编程语言?

    文章目录 前言 一、Java 与 Java 字节码 二、什么是编译器(Compiler) 三、什么是解释器(Interpreter) 四、编译器与解释器有何区别? 五、Java 语言属于哪种语言?...解释的过程就是一次将字节码中单独的一步翻译为目标机器语言代码,翻译后立即执行这一步,具体如下图所示: 四、编译器与解释器有何区别?...编译器产生更快的程序,它必须把每个语句分析一次(边编译边分析),而解释器必须每次分析一次(增加一条分析一次)。此外编译器还可以优化其生成的可执行代码。...语言既不属于编译型编程语言也不属于解释型编程语言,因为它由 Java 编译器编译为字节码文件,然后仍需要有 JVM 将字节码解释翻译为目标机器语言,先编译后解释。...总结 在本文中我们解释了什么是编译器,什么是解释器,并对二者进行了比较,从原理层面指出 Java 语言既不属于编译型编程语言也不属于解释型编译语言。

    81830

    java实现编译器_实现一个简单的编译器

    简单的说 编译器 就是语言翻译器,它一般将高级语言翻译成更低级的语言,如 GCC 可将 C/C++ 语言翻译成可执行机器语言,Java 编译器可以将 Java 源代码翻译成 Java 虚拟机可以执行的字节码...编译器如此神奇,那么它到底是如何工作的呢?本文将简单介绍编译器的原理,并实现一个简单的编译器,使它能编译我们自定义语法格式的源代码。(文中使用的源码都已上传至 GitHub 以方便查看)。...编译器完成编译后,由 链接器(Linker) 将生成的目标文件链接成可执行文件,这一步并不是必须的,一些依赖于虚拟机运行的语言(如 Java,Erlang)就不需要链接。...\n”); yyterminate(); %% 我们来解释一下,这个文件被 2 个 %% 分成 3 部分,第 1 部分用 %{ 与 %} 包括的是一些 C++ 代码,会被原样复制到 Flex 生成的源码文件中...,至此我们简单的编译器就完成了。

    2.7K30

    汇编程序,编译器和解释器的简短介绍【Programming】

    AC程序员将读为“ X被分配了1加2的结果”。 请注意,程序员无需说出将x放在内存中的位置,因为编译器会处理该问题。...解释器 随着时间的流逝,出现了一种新的编程模型,其中一种称为“解释器”的特殊程序可以读取程序,并将其转换为可立即执行的计算机指令。解释器将程序作为输入,并将其解释为中间形式,就像编译器一样。...与编译器不同,解释器然后执行程序的中间形式。每次解释程序运行时都会发生这种情况,而编译过的程序仅被编译一次,并且计算机会按照“书面形式”执行机器指令。...可能最流行和最著名的虚拟机是Java虚拟机(JVM)。...JVM最初仅在1990年代才用于Java编程语言,但现在托管了许多流行的计算机语言:Scala,Jython,JRuby,Clojure和Kotlin仅举几例。 还有其他例子可能不是常识。

    1.3K00

    Java 与 CC++ 的编译器对比

    前言 这两天重温了周志明的《深入理解Java虚拟机》第2版,发现第11章第4节关于 Java 编译器的内容写得太棒了~本文完全摘自《深入理解Java虚拟机》第2版 0_o Java 与 C/C++ 编译器...大多数程序员都认为C/C++会比Java语言快,甚至觉得从Java语言诞生以来“执行速度缓慢”的帽子就应当扣在它的头顶,这种观点的出现是由于Java刚出现的时候即时编译技术还不成熟,主要靠解释器执行的...Java与C/C++的编译器对比,实际上代表了最经典的即时编译器与静态编译器的对比,很大程度上也决定了Java与C/C++的性能对比结果,因为无论是C/C++还是Java代码,最终编译之后被机器执行的都是本地机器码...Java 编译器“劣势”的原因 Java虚拟机的即时编译器与C/C++的静态优化编译器相比,可能会由于下列原因,而导致输出的本地代码有一些劣势(下面列举的也包括一些虚拟机执行子系统的性能劣势): 第一,...何况,还有许多优化是Java的即时编译器能做,而C/C++的静态优化编译器不能做或者不好做的。例如,在C/C++中,别名分析(Alias Analysis)的难度就要远远高于Java。

    1.4K60

    主流的java编译器_程序猿专用十大在线编译器(IDE)整理

    Codechef(C,C ++和 Java 的在线编译工具) ① 它支持C,C ++和Java,非常接近真正的桌面IDE。这是超快速和易于使用。适合于课堂和作业的学生,练习面试问题。...JDoodle (C,C ++和Java的在线IDE) ① 支持协作代码。它只是从一个简单的文本区域开始,您可以粘贴代码,然后单击运行。您可以更改命令行参数并在运行该程序之前设置stdin。...OnlineGDB (在线C,C ++,Java,PHP编译器) 我常用 ① 它支持C,C ++,PHP和Java编译器。OnlineGDB的独特功能是,您可以逐步调试您的代码。...GCC资源管理器 ① GCC编译器资源管理器是一个交互式在线编译器,它显示编译后的C++、RISE、GO(以及更多)代码的汇编输出。...③ 图示 编辑界面 (图 10-1) 结语: 以上的编辑器我只用过部分编辑器的部分功能,如果大家用过这些在线编辑器,欢迎评论补充。我会将内容更新到文章中。

    3.1K10

    Java Cloud Native 的未来 Graal AOT 编译器

    ,将要运行的 jar 程序包和 JRE 标准库中 class 文件加载入 JVM 内存中,并且找到 main 方法开始解释执行。...使用 GraalVM 对 Java 程序进行 AOT 编译的解决方案,可以显著缩短启动时间并降低内存占用,使 Java 程序更适合在 Serverless 环境中运行,通过 AOT 编译,编译器生成一个...在 Linux 中要是使用 GraalVM 提供的 AOT 静态编译功能,首先需要在操作系统中安装一些 C/C++ 编译器的工具链,在 Ubuntu 和其他基于 Debian 的系统中执行下面命令:sudo...默认情况下,GraalVM 的 AOT 编译在链接时通常使用系统的标准 glibc 库,但在小型嵌入式设备或对内存要求极低的环境中,glibc 并未针对这些场景做出特别优化。...默认 AOT 编译使用的 serial 垃圾回收器是一种单线程垃圾回收器,适用于单线程应用或有少量线程的应用,另外一个可选的垃圾回收器是 G1 垃圾回收器,G1 用于多核处理器和大内存机器的高性能垃圾回收器

    26030
    领券