深入理解JVM设计的精髓与独特之处

这是Java代码的执行过程

从软件工程的视角去深入拆解,无疑极具吸引力:首个阶段仅依赖于源高级语言的细微之处,而第二阶段则仅仅专注于目标机器语言的特质。

不可否认,在这两个编译阶段之间的衔接(具体指明中间处理步骤的精确界定)必须予以谨慎的进行设计。事实上,这个衔接的重要程度之高,甚至应当将其单独定义为一种抽象计算机的语言。

曾经作为一个独立程序的编译器现已被划分为两个相互独立的程序。第一个程序,仍然延续了编译器(compiler)的称呼,负责将高级代码转变为中间的JVM指令;第二个程序则负责将这份JVM代码转译为目标计算机硬件平台(简称为"硬件平台")的机器语言。

有条理且正式的虚拟机语言概念拥有诸多实践上的优点。

首先,只需要替换虚拟机实现部分(有时也被称为编译器的后端程序,backend)就能相对轻松地获取支持不同硬件平台的编译器。因此,虚拟机在不同硬件平台之间的可迁移性可以实现代码效率、硬件成本以及程序开发难度之间的平衡。

其次,许多语言的编译器都能够复用相同的JVM后端,使得代码共享和语言交互成为可能。比如Scala就在复用Java的后端

相关推荐
Dxxyyyy5 分钟前
零基础学JAVA--Day27(注释+异常+异常处理方法)
java·开发语言
深圳南柯电子17 分钟前
深圳南柯电子|医疗电子EMC整改:助医疗器械安全稳定的关键环节
网络·人工智能·安全·互联网·实验室·emc
Craaaayon29 分钟前
如何选择两种缓存更新策略(写缓存+异步写库;写数据库+异步更新缓存)
java·数据库·redis·后端·缓存·mybatis
AAA卷不动了33 分钟前
JVM(二)------ 类加载、初始化与单例模式的联系
java·jvm·单例模式
一 乐38 分钟前
点餐|智能点餐系统|基于java+ Springboot的动端的点餐系统小程序(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·小程序·论文
火山上的企鹅1 小时前
Qt C++ 软件开发工程师面试题
c++·qt·面试
mapbar_front1 小时前
进入职场第三课——立足
程序员
少许极端1 小时前
算法奇妙屋(十)-队列+宽搜(BFS)
java·数据结构·算法·bfs·宽度优先·队列
bitbitDown1 小时前
从零打造一个 Vite 脚手架工具:比你想象的简单多了
前端·javascript·面试
沐怡旸2 小时前
【穿越Effective C++】条款16:成对使用new和delete时要采用相同形式——内存管理的精确匹配原则
c++·面试