Java程序的执行过程

5 篇文章 0 订阅
订阅专栏

执行过程:

在这里插入图片描述
大致过程就是,我们写好的.java文件(源文件)被编译器编译后变成.class文件(字节码),然后被JVM的类加载器加载到内存,通过字节码校验器去做一些校验,校验通过后交由解释器将字节码文件解释成计算机能够识别的机器指令。
字节码:字节码是已经经过编译,但与特定机器码无关,需要解释器转译后才能成为机器码的中间代码。
Java字节码:是Java虚拟机执行的一种指令格式。
解释器:是一种电脑程序,能够把高级编程语言一行一行直接翻译运行。解释器不会一次把整个程序翻译出来,只像一位“中间人”,每次运行程序时都要先转成另一种语言再作运行,因此解释器的程序运行速度比较缓慢。它每翻译一行程序叙述就立刻运行,然后再翻译下一行,再运行,如此不停地进行下去。它会先将源码翻译成另一种语言,以供多次运行而无需再经编译。其制成品无需依赖编译器而运行,程序运行速度比较快


具体执行过程:

1、编译

在windows环境中,打开命令窗口,切换到java文件的目录,使用 javac 命令,执行 javac xxx.java 把.java文件编译成.class文件

2、装载字节码

编译好的.class文件交给 JVM 执行,即使用java命令,执行java xxx(.class文件的名称,不带后缀)。java命令将会启动 JVM,并将后面的参数作为初始化类,通过 JVM 内的类加载器将字节码文件装载到内存中。

3、校验字节码

类的加载是通过类加载器进行的,加载完后,先由字节码校验器负责检查那些无法执行的明显有破坏性的操作。除了系统类之外,其他类都要被校验。

校验器执行的一些检查:

  • 变量要在使用前初始化
  • 方法调用与对象引用类型之间要匹配
  • 访问私有数据和方法的规则没有被违反
  • 对本地变量的访问都在运行的堆栈内
  • 运行时堆栈没有溢出

如果这些检查没有通过,类最终不会被加载完成。

4、解释字节码

JVM 把每一条要执行的字节码交给解释器,翻译成对应的机器语言,最终由操作系统执行。

JVM 解释执行字节码文件就是 JVM 操作 Java 解释器进行解释执行字节码文件的过程。


【深入理解JVM 一】一个Java程序执行流程
MaoLin Tian's Blog
03-01 1786
本篇是《深入理解JVM》系列博客的第一篇,旨在全局把控,先对整体流程有个认识,然后再分阶段详解。程序从编写到执行整体可以划分为以下几个步骤:编辑源码->编译生成class文件、(加载class文件、运行class字节码文件),其中后两个步骤都是在jvm虚拟机上执行的,整体的执行流程如下: 编辑生成源代码 编辑源代码是经历的第一个环节,编辑源代码,就是我们在任何一个工具上编写源代码,可以是记事本,也可以是IDE,这部分相当于我们在IDEA上 新建一个.java的Class 然后写内容,这里我们创建几个
Java程序执行流程
weixin_58724261的博客
06-06 5086
Java程序的源代码需要经过编译器(例如javac)的编译,将其转换成字节码(即.class文件),这个过程称为编译。编译器会对源代码中的语法进行检查和优化,并生成可在JVM上运行的字节码文件。
Java程序执行过程:从编译到垃圾回收,一文读懂Java程序的生命周期
最新发布
一个8年大数据开发工程师的碎碎念
08-09 2365
深入探讨Java程序的生命周期,揭示从源代码编写到最终执行的每个关键阶段。本文详细介绍了编译过程、类加载机制、字节码验证、JIT编译优化、程序执行和垃圾回收等核心概念。通过实例讲解和性能优化技巧,帮助开发者更好地理解Java虚拟机的工作原理,提高代码质量和系统效率。无论你是Java新手还是经验丰富的程序员,这篇文章都能让你对Java程序执行过程有更深刻的认识,从而成为更优秀的Java
Java——执行流程
Stewie Lee的博客
05-29 1161
编译:执行:我们可以看到这里的是类名,而不是字节码文件名 Hello.class ,这是因为对于java命令是用于启动 Java 虚拟机(JVM)并执行编译后的 Java 应用程序的,Java 虚拟机(JVM)在运行时期待的是一个类的名称,而不是文件名或文件路径。
java程序执行过程详解四
程序狗的成长之路
01-02 1450
Java程序运行时,必须经过编译和运行两个步骤。首先将后缀名为.java的源文件进行编译,最终生成后缀名为.class的字节码文件。然后Java虚拟机将编译好的字节码文件加载到内存(这个过程被称为类加载,是由加载器完成的),然后虚拟机针对加载到内存的java类进行解释执行,显示结果。 Java的运行原理 在Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟...
java代码执行过程简介
程序员光剑
06-03 8415
代码即数据,数据即代码,而我们的数据是保存在文件上的,所以我们说文件就是数据,一切代码都是文件。 比如说java语言的源代码文件.java文件里的数据,java源代码文件里的数据遵循家把语言规范。 经过一个jdk中的javac程序(编译器),把.java文件映射转换成了.class 文件格式,里边保存的数据code,我们称之为jvm bytecode,遵循...
java调用方法_java方法执行流程解析
weixin_29021291的博客
02-12 763
Java程序运行时,必须经过编译和运行两个步骤。首先将后缀名为.java的源文件进行编译,最终生成后缀名为.class的字节码文件。然后Java虚拟机将编译好的字节码文件加载到内存(这个过程被称为类加载,是由加载器完成的),然后虚拟机针对加载到内存的java类进行解释执行,显示结果。Java的运行原理在Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器在...
Java代码的执行过程
good___lucky的博客
07-18 1922
初始化阶段是虚拟机执行类构造器。
一个Java程序执行过程
shenlin2011的专栏
02-25 976
我们手工执行java程序是这样的: 1 在记事本中或者是UE的文本编辑器中,写好源程序; 2 使用javac命令把源程序编译成.class文件;    编译后的.class(类字节码)文件中会包含以下内容: ConstantPool:符号表; FieldInfo:类中的成员变量信息; MethodInfo:类中的方法描述; Attribute:可选的附加节点。 FieldInf
Linux下执行java程序的方法
09-01
如果在执行过程中遇到任何问题,比如权限问题或找不到主类等错误,你需要检查JAR文件的MANIFEST.MF文件,确保它包含了正确的Main-Class属性,格式如下: ```text Main-Class: com.example.MainClass ``` 这里`...
Java程序去调用并执行shell脚本及问题总结(推荐)
08-19
Java程序调用并执行shell脚本是Java开发中非常重要的一部分,特别是在文本处理过程中。Java开发的特点是可以很早地进行TDDL,METAQ等等的对接,而脚本开发的特点是可以在进行批处理的时候非常方便。 在实际开发中,...
浅谈Java文件执行顺序、main程序入口的理解
08-26
Java文件执行顺序主要指的是Java文件的编译和执行过程中,JVM(Java虚拟机)是如何寻找入口点,并执行main方法的。 首先,当我们编译Java文件时,JVM会首先寻找入口点,也就是main方法。main方法是Java程序的入口...
Java程序的运行过程执行流程)分析
meitianxue的博客
01-12 481
这样利用 JVM 就可以把 Java 字节码程序和具体的硬件平台以及操作系统环境分隔开来,只要在不同的计算机上安装了针对特定平台的 JVM,Java 程序就可以运行,而不用考虑当前具体的硬件平台及操作系统环境,也不用考虑字节码文件是在何种平台上生成的。Java 的这种运行机制可以通过图 2 来说明。Java 语言这种“一次编写,到处运行”的方式,有效地解决了目前大多数高级程序设计语言需要针对不同系统来编译产生不同机器代码的问题,即硬件环境和操作平台的异构问题,大大降低了程序开发、维护和管理的开销。
java动态加载jar包_java程序执行过程中动态加载jar包
weixin_42132598的博客
02-13 3230
最近做一个远程接口测试系统,遇到了动态加载jar包的问题,如将用户上传的jar包动态加载后调用远程接口的方法,特将例子记录下来以便查找。package cn.baokx.test_addjar;import java.io.File;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;...
java学习(一) -----Java代码编译和执行过程
berylpy的博客
05-14 7858
你的代码如何进行编译,进行运行的,主要分为三个过程:编译,加载,运行 一、编译     java代码编译是由java源码编译器来完成的,流程图如下:    待写。。。。。。。    java编译器最后生成的class文件由三部分组成:    结构信息:包括class文件格式,版本号以及部分的数量与大小的信息。    元数据:对应于java
简述一个java程序执行过程
BiggestBoy
04-21 3793
详解见本人博客!
Java执行流程
Dumpling_skin的博客
03-22 5519
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。 Java具有简单性、面向对象、分布式、健壮性、安全性、跨平台与可移植性、多线程、动态性等特点。 单核心 单线程 多核心 多线程。(微秒级) windows,mac,linux,unix .apk .ipa 面向对象三大特征 :封装,继承,多态 java面向对象: 封装,继.
Java程序执行过程与JDK、JRE、JVM解析
JRE主要负责解释和执行字节码,为Java程序提供运行时所需的环境。对于非开发人员,只需要安装JRE即可运行Java程序,而无需完整的JDK。 4. **JVM (Java Virtual Machine)** JVM是Java运行时环境的核心,它是一个...
写文章

热门文章

  • java关于Deque的使用 19121
  • Java程序的执行过程 4526
  • java读写xlsx文件 2575
  • Java中Arrays常用方法 645
  • Oracle的递归算法——start with...connect by prior子句用法 343

分类专栏

  • java 5篇
  • 数据库 2篇
  • Spring 1篇
  • LeetCode题目记录 4篇
  • 数据结构 1篇
  • java的API 2篇

最新评论

  • java关于Deque的使用

    YinsDun: 关于Collection的图,为什么说List元素不可重复?Set元素不是绝对地不可重复?请问哪里有说到呢,谢谢

  • java关于Deque的使用

    Vbbbbbbbbbbb: 正确的,只不过是对于头部和尾部定位不同

  • java关于Deque的使用

    onedegree: 这里是栈对应队列的操作呀,我理解是这样的

  • java关于Deque的使用

    QQiukulele: 对于栈的操作,不是pop对应removeLast,push对应addLast嘛

  • java中的hash

    不正经的kimol君: 爱了爱了,写得确实不错哦,一起加油

最新文章

  • java读写xlsx文件
  • Oracle学习笔记
  • Oracle的递归算法——start with...connect by prior子句用法
2021年4篇
2020年11篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家景洪市玻璃钢雕塑价格室内商场美陈研发公司揭阳玻璃钢主题雕塑浙江多彩玻璃钢雕塑生产厂家玻璃钢艺术雕塑动态清远玻璃钢人物雕塑定做武威户外玻璃钢雕塑价格卡通玻璃钢雕塑美陈装饰中堂玻璃钢造型雕塑玻璃钢花盆优点新民玻璃钢牌匾雕塑天津省玻璃钢雕塑太原玻璃钢雕塑采购泸州玻璃钢雕塑制作厂家玻璃钢艺术雕塑多少钱封开玻璃钢浮雕雕塑批发玻璃钢卡通雕塑松树定做平顶山玻璃钢室外镂空雕塑宁河玻璃钢花盆花器西安商场春季美陈鸡西玻璃钢雕塑定制牡丹江市玻璃钢雕塑河源玻璃钢人像雕塑图片河南户外玻璃钢雕塑供应商嘉善玻璃钢雕塑厂家营口玻璃钢浮雕人物山水雕塑福建商场美陈批发柳州玻璃钢雕塑定做水泥花盆好还是玻璃钢花盆好江苏欧式玻璃钢雕塑订做价格香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化