java代码_【JAVA虚拟机(JVM)精髓】05-Java代码的执行过程
持续更新JVM相关知识,敬请关注:
Java虚拟机精髓专栏zhuanlan.zhihu.com
![](/assets/blank.gif)
这里再简单回顾下Java代码执行的整个过程,首先是前端编译过程,java源文件,通过前端编译器,生成出字节码文件(class文件)。
前端编译器,细化会拆分出词法分析、语法分析、语义分析、字节码生成,这部分的内容不必过多研究,大致了解下就可以,如果你学过汇编相关知识,会比较了解这一块。
另外,如果你想自己开发一门属于自己的语言,然后借助Java虚拟机去运行,那你则需要在这部分好好下下工具,去设计你自己的语法规范、开发自己的编译器,然后只要最终生成的字节码文件复核JVM的规范,就可以在其上运行。
在编译过程的众多环节上,任何一个部分失败,都将导致最终的字节码文件生成失败。JAVA出于安全考虑,对于字节码文件的要求非常高,只有完全符合规范的class文件才能被最终执行。
图下面的java虚拟机部分就是上一节中所提到的,字节码解释运行的过程,负责把字节码文件翻译成操作系统能够看懂的机器指令。这里要说一下,操作系统只能够看懂机器指令,当前的高级语言,需要先翻译成汇编语言,然后再翻译成机器指令,解释器、JIT组成的执行引擎就是做这个的。
解释器是负责响应时间,JIT主要负责性能。
![](/assets/blank.gif)
![](/assets/blank.gif)
java代码_【JAVA虚拟机(JVM)精髓】05-Java代码的执行过程相关推荐
- Java虚拟机JVM学习05 类加载器的父委托机制
Java虚拟机JVM学习05 类加载器的父委托机制 类加载器 类加载器用来把类加载到Java虚拟机中. 类加载器的类型 有两种类型的类加载器: 1.JVM自带的加载器: 根类加载器(Bootstrap ...
- 【深入Java虚拟机JVM 01】Java发展与展望概述
目录 1.1 概述 1.2 Java技术体系 1.3 Java发展史 1.4 展望Java技术的未来 1.4.1 模块化 1.4.2 混合语言 1.4.3 多核并行 1.4.4 进一步丰富语法 1.4 ...
- java多线程异步调用别的系统接口代码_抢先准备,40个 Java 多线程面试题及答案大汇总!...
↑↑↑点上方蓝字关注并标⭐「IT技术思维」 一起培养顶尖技术思维 来源:程序员共成长(id:finishbug) 这些多线程的问题,有些来源于各大网站.有些来源于自己的思考.可能有些问题网上有.可能有 ...
- 基础贴吧java代码_原来你是这样的JAVA[01]-基础一瞥
1.Java是什么呢? Java不仅是一门语言,而且是一个完整的平台,有一个庞大的库,其中包含了很多可重用的代码和一个提供安全性.跨操作系统的可移植性以及自动垃圾收集等服务的执行环境. 2.JDK 和 ...
- 冒泡排序java代码_数据结构与算法—冒泡排序(Java实现)
[toc] 冒泡排序 程序代码 package com.uplooking.bigdata.datastructure; import java.util.Arrays; public class B ...
- amd cpu不能在cmd环境下运行java代码_如何在Windows10中配置java的JDK环境
今天给大家分享一下如何配置java的JDK环境.操作步骤如下: 1.下载好 jdk 的安装文件,我下载的是 jdk-10.0.1_windows-x64_bin.exe 这个版本的安装文件: 2.使用 ...
- aixs1 生成java代码_通过axis1.4 来生成java客户端代码
1.首先下载axis-1.4所有的jar包, 2.我是直接打开cmd,进入到该jar包的目录下, 3.直接运行命令(运行这个命令之前要确定java的环境变量都已配置好): java -Djava.ex ...
- 关于equals的Java代码_与equals方法相关的Java代码
t3.equals(t3)是唯一具有与方法签名public boolean equals (Test testje)匹配的正确参数的行,因此它是程序中唯一实际调用该print语句的行. 这个问题旨在教 ...
- java冒泡测试代码_数据结构与算法—冒泡排序(Java实现)
[toc] 冒泡排序 程序代码package com.uplooking.bigdata.datastructure;import java.util.Arrays;public class Bubb ...
- java幻灯片播放代码_简单常用的幻灯片播放实现代码
幻灯片自动播放图片是当前网站比较流行的一个展示方式.在网上我们能找到各种特效丰富的幻灯片插件和代码.这里项目需要,我自己做了一个简单的,就不详细讲解了,代码很简单.直接看效果图和代码吧. 所有代码 p ...
最新文章
- python使用numpy中的flatten函数将2D numpy数组拉平为1Dnumpy数组、使用np.linalg.matrix_rank函数计算2D numpy数组的秩(rank)
- struts2点滴记录
- Linux文件系统只读Read-only file system
- 【火爆】微软的Holographic会给我们带来什么?Imagine porn with this...
- SAP SMW0 上传EXCEL模板遇到的问题
- 1.有意义的命名(代码的整洁之道)
- go调用ffmpeg
- Ext2 中如何换行 布局?
- 切比雪夫加权 matlab,matlab切比雪夫多项式
- Win10极简fliqlo时钟屏保(附下载链和安装教程)
- 【仿淘宝首页】前端网页模板,大学生前端作业分享,html5+css电商网站模板,包含js动效
- 处理100万条数据 python_仅需1秒!搞定100万行数据:超强Python数据分析利器
- FPGA自学11——以太网通信
- 美国大学计算机课程教材,美国大学计算机基础教学课程结构一瞥.pdf
- 单模光电转换器怎么接_光纤收发器怎么连接?光纤收发器安装图解大全!
- GreenPlum小结
- EXCEL之如何批量把文本型数字转化为数字
- uniapp 更换导航栏图标并添加事件
- celery学习笔记
- kkkkkkkkkkkk
热门文章
- Android input监控耳机插入demo
- Android中long类型对应Java/Jni/C++中的类型
- Android java和C的Socket通信demo(可用)
- Mac OS X上使用Wireshark(可用)
- ios libfdk-aac encode
- UITextField 文字垂直居中
- VALSE学习(十二):视频时序建模和动作识别
- ES6中的React生命周期详解
- esp8266 米家_【保姆级教程】米家全屋智能家居避坑指南+新手必购单品推荐(2020版)_智能家居...
- layui select change事件_一道2020年全国生物学联赛试题背后的“眼齿鸟事件”