社区
Java SE
帖子详情
java是边解释边执行还是一次性解释然后执行
笨小鸟
2012-10-12 09:14:12
两个问题
1.java是边解释边执行还是一次性解释然后执行?
2.如果是边解释边执行那么是不是每次运行到相同函数又会重新解释?会自动缓存吗?
请明白的大侠告知小弟。
...全文
610
10
打赏
收藏
java是边解释边执行还是一次性解释然后执行
两个问题 1.java是边解释边执行还是一次性解释然后执行? 2.如果是边解释边执行那么是不是每次运行到相同函数又会重新解释?会自动缓存吗? 请明白的大侠告知小弟。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
”指出了这个浏览器的编程语言,
Java
是一种强类型、面向对象的编程语言,以其“一次编写,到处运行”的特性而闻名。它的跨平台能力使得
JAVA
浏览器能在不同的操作系统环境下运行,无需为每个平台单独...
Java
的
解释
执行
是先全部
解释
完后再
执行
还是边
解释
边
执行
从而实现了“一次编译、到处
执行
”的跨平台特性。
Java
语言是
解释
型的。如前所述,
Java
程序在
Java
平台上被编译为字节码格式,然后可以在实现这个
Java
平台的任何系统中运行。在运行时,
Java
平台中的
Java
解释
器对这些...
Java
的
解释
执行
是先全部
解释
完后再
执行
还是边
解释
边
执行
?
从而实现了“一次编译、到处
执行
”的跨平台特性。
Java
语言是
解释
型的。如前所述,
Java
程序在
Java
平台上被编译为字节码格式,然后可以在实现这个
Java
平台的任何系统中运行。在运行时,
Java
平台中的
Java
解释
器对这些...
java
语言是一种
解释
执行
的语言吗_
JAVA
到底是编译型语言还是
解释
性语言?
有人说
Java
是编译型的。...对于C和C++,它们经过一次编译之后,可以由操作系统直接
执行
,所以它们是编译型语言。而
Java
不一样,它首先由编译器编译成.class(字节码)文件,然后在通过JVM从.class文件中读一行
解释
...
Java
是编译
执行
的语言,还是
解释
执行
的语言
Java
由编译器
java
c将
Java
文件编译为.class文件,再通过JVM虚拟机从.class文件中读一行
解释
执行
一行
解释
为二进制代码。
Java
对于多种不同的操作系统有不同的JVM所以
Java
实现了真正意义上的跨平台
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章