社区
Java SE
帖子详情
java是边解释边执行还是一次性解释然后执行
笨小鸟
2012-10-12 09:14:12
两个问题
1.java是边解释边执行还是一次性解释然后执行?
2.如果是边解释边执行那么是不是每次运行到相同函数又会重新解释?会自动缓存吗?
请明白的大侠告知小弟。
...全文
638
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默认是第二种。
超漂亮的纯
JAVA
浏览器
超好看,内嵌火狐核心浏览器,支持换肤功能,不依赖客户机浏览器版本
Java
的
解释
执行
是先全部
解释
完后再
执行
还是边
解释
边
执行
?
它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来
解释
执行
字节码。从而实现了“一次编译、到处
执行
”的跨平台特性。
Java
语言是
解释
型的。如前所述,
Java
程序在
Java
平台上被编译为字节码格式,然后可以在实现这个
Java
平台的任何系统中运行。在运行时,
Java
平台中的
Java
解释
器对这些字节码进行
解释
执行
,
执行
过程中需要的类在联接阶段被载入到运行环境中。既然Ja
Java
的
解释
执行
是先全部
解释
完后再
执行
还是边
解释
边
执行
它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来
解释
执行
字节码。从而实现了“一次编译、到处
执行
”的跨平台特性。
Java
语言是
解释
型的。如前所述,
Java
程序在
Java
平台上被编译为字节码格式,然后可以在实现这个
Java
平台的任何系统中运行。在运行时,
Java
平台中的
Java
解释
器对这些字节码进行
解释
执行
,
执行
过程中需要的类在联接阶段被载入到运行环境中。既然Ja...
Java
是
解释
执行
还是编译
执行
的?
目录1、
解释
执行
和编译
执行
的区别1.1、
解释
执行
1.2、编译
执行
2、
Java
是
解释
执行
还是编译
执行
?2.1、
解释
器和编译器2.2、何时编译?2.2.1、热点探测 1、
解释
执行
和编译
执行
的区别
Java
代码要想放到JVM里去运行,首先需要经过
Java
c的编译,将
Java
代码编译为字节码Class文件。 Class文件反汇编后就是一条条JVM指令了,但是这些指令JVM认识,计算机可不认识。 JVM想要
执行
这些指令,该怎么办呢? 1.1、
解释
执行
将JVM指令逐行翻译为本地机器码,逐行翻译,逐行
执行
。 优点:程序
Java
是编译
执行
的语言,还是
解释
执行
的语言
Java
由编译器
java
c将
Java
文件编译为.class文件,再通过JVM虚拟机从.class文件中读一行
解释
执行
一行
解释
为二进制代码。
Java
对于多种不同的操作系统有不同的JVM所以
Java
实现了真正意义上的跨平台
Java SE
62,623
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章