java是编译语言么_Java是编译语言还是解释编程语言()
问题
在过去,我使用C作为编程语言。我知道用C编写的代码经过编译过程,直到它成为目标代码"机器代码"。
我想知道Java在这方面是如何工作的。用户如何编写由计算机运行的Java代码?
#1 热门回答(156 赞)
Java实现通常使用两步编译过程。 Java源代码由Java编译器编译为tobytecode。字节码由Java虚拟机(JVM)执行。现代JVM使用称为Just-in-Time (JIT) compilation的技术将字节码编译为硬件CPU在运行时即时理解的本机指令。
JVM的某些实现可能会选择解释字节码而不是JIT将其编译为机器代码,并直接运行它。虽然这仍然被认为是"解释器",但它与读取和执行高级源代码的解释器完全不同(即在这种情况下,Java源代码不直接解释,字节码,Java编译器的输出,是。)
从技术上讲,可以提前将Java编译为本机代码并运行生成的二进制文件。也可以直接解释Java代码。
总而言之,根据执行环境,字节码可以是:
提前编译并作为本机代码执行(类似于大多数C编译器)
及时编译并执行
解释
由支持的处理器直接执行(字节码是某些CPU的本机指令集)
#2 热门回答(47 赞)
术语"解释语言"或"编译语言"没有意义,因为任何编程语言都可以被解释和/或编译。
【java是编译语言么_Java是编译语言还是解释编程语言()】至于Java的现有实现,大多数涉及到字节码的编译步骤,因此它们涉及编译。运行时也可以动态加载字节码,因此总是需要某种形式的字节码解释器。该解释器可能会或可能不会在内部使用编译到本机代码。
目前,部分即时编译用于许多曾被认为是"解释"的语言,例如Javascript。
#3 热门回答(41 赞)
[1]下面的图片解释了一切......
用Java编写的代码是:
首先通过名为javac的程序编译为字节码,如上图左侧所示;
然后,如上图的右侧部分所示,[2]另一个名为java的程序启动Java运行时环境,它可以使用Java Interpreter / JIT编译器编译和/或解释字节码。
java何时解释字节码以及何时编译它?[3]应用程序代码最初被解释,但JVM监视频繁执行的字节码序列,并将它们转换为机器代码,以便在硬件上直接执行。对于仅执行几次的字节码,这节省了编译时间并减少了初始延迟;
对于频繁执行的字节码,在慢速解释的初始阶段之后,JIT编译用于高速运行。此外,由于程序花费大部分时间执行其少量代码,因此缩短的编译时间非常重要。最后,在初始代码解释期间,可以在编译之前收集执行统计信息,这有助于执行更好的优化。
单击答案中的上标数字以供参考。
推荐阅读
- java|Mybatis-Plus通用Mapper CRUD之select
- java学习|java如何一步一步运行,详细说明
- java学习|java程序员3-5年职业规划,附源代码
- java学习|java程序员具备专业技能,2022最新
- java学习|java面试基础问题答不上来怎么办,快来看鸭~
- C#|C# 正则表达式判断是否是有效的文件、文件夹路径
- 看VR发展史,VR技术成熟度曲线的趋势是()
- java 通用返回的对象记录
- Lambda8|Lambda8 表达式
- *java常用的几种排序算法