到底什么叫 "解释执行"

pengyou41 2014-06-11 10:37:10
很多书上或者文章上都是这么写:JAVA编译是生成的JVM的指令,运行时,从程序中取一条伪指令,在JVM中翻译成一串机器指令,运行。再取一条指令,再翻译,再运行。
对于其中翻译二字实在不能理解,
目前我的想法是:
1.这个"翻译" 会执行真正意义上的编译和汇编和链接(类似于:cc,as,ld),这样的话是JVM就会把这个指令编译为native code,然后再运行,如果是这样如果这个平台上没有对应的编译器,汇编器,或者链接器,程序岂不是运行不起来,还是JVM有自带的编译器?
2."翻译"应该是JVM在不同平台上对一条JAVA指令对应一个本地的函数(native code),不同平台对应不同的函数,而JVM 就是提供这个本地函数集的作用,这样就实现了编译成同样的字节码可以在不同平台在运行?

如果是第一种,速度肯定不止慢一点点啊,
如果是第二种,速度应该不慢啊,(这种情况JIT应该起不了多少作用)

不知以上理解和正确沾边没有,求赐教,求指正。

...全文
274 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yoara 2014-06-11
  • 打赏
  • 举报
回复
准确的说,JAVA语言的编译是.java代码,翻译成.class字节码的过程,翻译出来的是个什么呢,你可以使用javap -verbose XXX.class(在某些机器环境不用.class后缀),输出查看。 首先明确一个概念,JAVA和JAVA虚拟机是不同的两个层面,特别的,JAVA虚拟机不是专为JAVA一种语言而创建的。。但凡某种高级语言代码能翻译成.class字节码并符合JAVA虚拟机规范所定义的class文件格式,那都能通过JAVA虚拟机运行。如今流行的类似Jruby等很多语言实际上就是建立在JAVA虚拟机之上。 再解释你的疑惑。 1.纯粹的虚拟机执行字节码代码,他的执行方式是“解释执行的”如同你所描述,翻译一条执行一条。这种执行手段不是慢,而是非常慢,sun 基础的虚拟机Visual VM就是基于这种模式,所以在JDK1.2之前,JAVA给人的印象就是运行极慢。其次,JVM的工作就是在解释运行时将字节码翻译成本地汇编码或指令集。 2.因为解释执行的效率问题,sun在1.2后引入了hotspot虚拟机(其实是收购的),它提供了对某些热点代码的即时编译支持(Just In Time,即你所说的JIT),对热点代码(包括常用的方法或常用的代码块)做本地代码化,以避免解释执行的性能消耗。同时,因为他能根据程序运行中所收集的数据信息做热编译,比起C/C++这种静态编译的语言,能做更多更好的优化算法和参数代入。所以,通过长时间运行,JAVA的效率甚至会比c/c++更好。
摘 要 针对高校教师教学业绩管理流程复杂、数据填报不规范、多级审核效率低、统计分析滞后等问题,本文设计并实现一套基于SpringBoot+Vue前后端分离架构的高校教师教学业绩综合管理系统。系统后端以SpringBoot处理业务逻辑与接口开发,前端用Vue构建交互界面,MySQL存储数据,MD5加密保障账号安全,具备低耦合、易扩展、易维护特性。 系统按权限划分为教师、学院管理员、学校管理员三级角色,构建闭环式业绩管理体系。教师可完成信息维护、业绩录入、成果申报、审核跟踪、档案导出、智能咨询与社区互动;学院管理员负责教师管理、业绩初审、数据汇总、通知发布与修正申请;学校管理员承担权限分配、数据维护、业绩终审、统计分析、公告发布与日志审计。 系统实现业绩填报、初审、终审、统计归档全流程线上化,支持批量导入、敏感词过滤、数据可视化、7×24小时AI咨询等功能,规范管理流程、减少统计误差、提升审核效率。测试表明,系统满足高校教学业绩精细化、规范化、信息化管理需求,为教师考核、绩效评定、教学评估提供数据支撑,提升高校教学管理智能化水平。 关键词: SpringBoot;Vue;教学业绩管理;三级权限;前后端分离

51,407

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧