首页 > 编程语言 >Java基础-Java代码变成机器可执行代码过程

Java基础-Java代码变成机器可执行代码过程

时间:2024-07-18 22:18:05浏览次数:15  
标签:文件 机器 字节 代码 编译 JVM Java

1 Javac编译

因为JVM把Javac把Java代码编译成字节码,即把.java文件变成.class文件,JVM(Java虚拟机)可以理解字节码文件,
将其转换为机器可以执行的代码,所以只要安装了JVM的平台,都可以运行Java程序。

2 JVM

Javac编译后,Java文件就变成了字节码文件,JVM类加载器会去加载字节码文件,然后由解释器来解释执行,这一步是比较慢的,而程序中有一部分代码是经常会被调用的,即所谓的热点代码,所以后面就有了JIT(Just In Time Compilation)编译器。
经过JIT编译器编译的热点代码,会在第一次编译过后,把生成的机器码保存下来,下一次这些热点代码被调用的时候就可以直接执行字节码的,学过计算机的同学都知道,机器码的运行速度肯定是高于Java代码的。这也是为什么说Java是编译与解释共存的原因。

过程图

过程

标签:文件,机器,字节,代码,编译,JVM,Java
From: https://www.cnblogs.com/frankLiang442/p/18310528

相关文章

  • 基于Java安卓的爱读书APP设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • JavaWeb基本概念和Tomcat
    JavaWeb基本概念在Java中,动态web资源开发的技术统称为JavaWeb动态Web:类似淘宝,几乎所有的网站提供给所有人看的数据始终会发生变化,千人千面技术栈:Servlet/JSP,ASP,PHPweb应用程序web应用程序:可以提供浏览器访问的程序;a.html、b.html......多个web资源,这些web资源都可以......
  • 代码随想录day 29 买卖股票的最佳时机II | 跳跃游戏 | 跳跃游戏II | K次取反后最大化
    买卖股票的最佳时机II买卖股票的最佳时机II解题思路利用贪心算法,只要股票卖了后一天能获利,就买了,所以只要遍历一下整个数组,根据这个算法就能得到最终获利的数目知识点贪心心得歪打正着的一题跳跃游戏跳跃游戏解题思路利用贪心算法,只需要有一次跳转到数组之外说明就能跳......
  • Java基础第三弹
    文章目录Java基础知识全解第三弹一、面向对象编程1.1面向对象编程思想1.2类和对象关系1.2.1类1.2.2对象2.对象创建和使用3.构造方法4.方法的调用5.java的内存结构6.成员变量和局部变量7.方法的重载二、this、static关键字1.this2.static(静态的)三、包1.包的由来2......
  • 代码随想录day28 分发饼干 | 摆动序列 | 最大子序和
    分发饼干分发饼干解题思路用贪心算法,胃口最大的孩子就需要尺寸最大的饼干,如果没有符合条件的饼干则换胃口第二大的孩子,以此类推。局部最优就是全局最优。知识点贪心心得简单摆动序列摆动序列解题思路通过遍历整个数组找到峰值,峰值则是找到最长的子序列,局部最优就是全......
  • XGBoost模型构建+SHAP解析-Python代码——用XGBoost模型实现机器学习并进行黑箱过程解
    一、XGBoost模型简介1.1适用范围XGBoost(ExtremeGradientBoosting)是一个基于梯度提升(GradientBoosting)框架的增强算法,广泛应用于分类、回归、排序等任务。常见的应用包括:信用风险评估销售预测病毒检测图像识别1.2原理XGBoost是梯度提升树(GradientBoostedDecisionTree......
  • 决策树模型构建+调参Python代码——用决策树模型实现机器学习
    一、决策树模型简介1.1适用范围决策树模型(DecisionTree)可以用于分类和回归任务,广泛应用于以下领域:客户细分信用风险评估医疗诊断营销策略优化1.2原理决策树是一种树形结构的预测模型,通过一系列的特征测试(即节点的分裂)将数据集逐步划分,从而形成一个树状的决策路径。每个节......
  • RxJava快速入门
    简单来说RxJava是一个实现响应式编程的类库。那什么是响应式编程?响应式编程的核心思想是"数据流是第一等公民”,程序的逻辑建立在数据流的变化之上。响应式编程的几个核心概念:(1)数据流:在响应式编程中,数据以流(Streans)的形式存在。流就像一条河,源源不断。比如一个数组或集合可......
  • 揭秘Java世界:轻松检测两个List是否有交集
    哈喽,大家好,我是木头左!快速入门:什么是List的交集?在Java中,当提到两个List的交集,指的是这两个列表共有的元素集合。例如,如果有两个List,其中一个包含元素A,B,C,另一个包含B,C,D,那么它们的交集就是B,C。理解了这一点,就可以开始探讨如何检测这个交集,以及它对编程实践的意义。Ja......
  • Java中interface的default和static方法
    Java中interface的default和static方法Java中interface的default和static方法完整代码及其运行结果从Java8开始:static方法:接口不能通过实例调用static方法接口中的static方法不能被继承子类不能继承接口的static方法,可以继承、不能覆写父类的static方法。default......