社区
Java SE
帖子详情
java是边解释边执行还是一次性解释然后执行
笨小鸟
2012-10-12 09:14:12
两个问题
1.java是边解释边执行还是一次性解释然后执行?
2.如果是边解释边执行那么是不是每次运行到相同函数又会重新解释?会自动缓存吗?
请明白的大侠告知小弟。
...全文
654
10
打赏
收藏
java是边解释边执行还是一次性解释然后执行
两个问题 1.java是边解释边执行还是一次性解释然后执行? 2.如果是边解释边执行那么是不是每次运行到相同函数又会重新解释?会自动缓存吗? 请明白的大侠告知小弟。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
JavaNet的牛肉粉丝
2012-10-12
打赏
举报
回复
运行字节码的工作是由解释器来完成的。解释器执行过程分3步执行:代码载入、代码校验和代码执行。代码载入由“类装载器”(class loader)完成。class loader负责装载运行一个程序所需要的所有代码,包括程序代码中的类所继承的类和被其调用的类。当 class loader装载一个类时,该类被放在自己的名字空间中。除了通过符号引用自己名字空间以外的类,类之间没有其他办法可以影响其他类。
随后,被装入的代码由字节码校验器进行检查。校验器可发现操作数栈益处、非法数据类型转化等多种错误。通过校验后,代码便开始执行了。
Java 字节码执行有两种方式:
(1). 即时编译方式:解释器先将字节码编译成机器码,然后执行该机器码。
(2). 解释执行方式:解释器通过每次解释并执行一小段代码来完成java字节码程序所有的操作。
通常采用第二种方法。
龙四
2012-10-12
打赏
举报
回复
就hotspot虚拟机而言,有两种模式,一是
-client
,二是
-server
-client模式下,是逐条解释执行的
-server模式下,先解释执行,然后jvm统计执行热点,将这些热点代码仔细优化编译成本地代码,然后执行本地代码,当这个热点不再是热点的时候,释放编译的代码,重新解释执行
其它的jvm可能在一启动的时候就全部编译成本地代码
诸如此类,没有强制规定,jvm实现者想怎么做都可以,只要不改变java相关的语义
小傅哥
2012-10-12
打赏
举报
回复
javascript是解释性语言
读一条 执行一条
杀手
2012-10-12
打赏
举报
回复
一次性解释然后执行
gefei0001
2012-10-12
打赏
举报
回复
编译执行。java会有.java .class两种文件,一个是源,一个是编译后的。所以是一次性编译执行。
解释执行的语言,不会生成中间文件,源文件即可执行。
0轰隆隆0
2012-10-12
打赏
举报
回复
[Quote=引用 8 楼 的回复:]
引用 7 楼 的回复:
如果是边解释边执行那么是不是每次运行到相同函数又会重新解释?会自动缓存吗?
会做些偷懒的工作,比如检测到一直重复调用某个函数,直接编译成本地码
[/Quote]
JVM会自行优化!
hheeyyii
2012-10-12
打赏
举报
回复
[Quote=引用 7 楼 的回复:]
如果是边解释边执行那么是不是每次运行到相同函数又会重新解释?会自动缓存吗?
[/Quote]
会做些偷懒的工作,比如检测到一直重复调用某个函数,直接编译成本地码
笨小鸟
2012-10-12
打赏
举报
回复
如果是边解释边执行那么是不是每次运行到相同函数又会重新解释?会自动缓存吗?
0轰隆隆0
2012-10-12
打赏
举报
回复
java很特殊,java程序也需要编译,但是没有直接编译称为机器语言,而是编译称为字节码,然后用解释方式执行字节码。Java既可以被编译,也可以被解释。通过编译器,可以把Java程序翻译成一种中间代码 - 称为字节码 - 可以被Java解释器解释的独立于平台的代码。通过解释器,每条Java字节指令被分析,然后在计算机上运行。只需编译一次,程序运行时解释执行。
hheeyyii
2012-10-12
打赏
举报
回复
对于hotspot
1.可以是存解释性的。
2.可以是通过热点来编译成本地码
3.存本地码
如果你在windows下,默认是第一种。linux默认是第二种。
编译型语言和
解释
型语言的区别
编译型语言如C++、
Java
在开发后需
一次性
转换为特定平台的可
执行
文件,运行时独立,效率高但不跨平台。
解释
型语言如Python、
Java
Script在运行时边
解释
边
执行
,跨平台性好但效率较低。
Java
和C#采用字节码,可在虚拟机中跨平台运行。Python因
解释
器支持而具备优秀的跨平台能力。
编译
解释
两种方式只是翻译的时间不同
本文系统对比编译型与
解释
型语言在翻译
执行
过程、运行效率、内存占用、平台适应性和调试维护五个维度的差异。重点说明编译是
一次性
生成目标代码,而
解释
是边翻译边
执行
;前者通常效率高但跨平台差,后者便于调试和移植但运行开销大。
Java
作为混合模式代表(先编译为字节码,再由JVM
解释
/即时编译)也被隐含关联。
编译原理(龙书):从理论到实践——解析编译器与
解释
器的核心差异
本文深入剖析编译器与
解释
器的本质区别:前者
一次性
将源码翻译为机器码,具备高运行性能与强优化能力;后者边解析边
执行
,提供即时反馈与开发灵活性。文章详述二者在词法/语法分析、中间表示、
执行
模型及优化策略上的异同,并探讨JIT、AOT等混合
执行
模式的技术演进,强调其在现代语言(
Java
、JS、Python)中的工程实践意义。
Java
的
解释
执行
是先全部
解释
完后再
执行
还是边
解释
边
执行
?
本文解析了
Java
语言如何通过编译成字节码,并由不同平台的虚拟机
解释
执行
,实现跨平台特性。介绍了HotSpot虚拟机两种模式:-client模式逐条
解释
执行
,-server模式则先
解释
后编译优化本地代码。
c语言边编译边运行,用什么语言编制的程序是边
解释
边
执行
?
Java
程序的
执行
涉及到编译和
解释
两个过程。
Java
编译器将源代码编译为字节码,而
Java
虚拟机(JVM)则负责
解释
执行
这些字节码。JVM通过类装载器、字节码校验器和
解释
器完成代码的加载、校验和
执行
。
Java
的即时编译(JIT)技术使得部分字节码在运行时可被编译为机器码,以提高
执行
效率。
解释
型语言由于需要边
解释
边
执行
,通常比编译型语言慢,但
Java
的JIT技术在一定程度上弥补了这一差距。
Java SE
62,622
社区成员
307,252
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章