社区
Java SE
帖子详情
java是边解释边执行还是一次性解释然后执行
笨小鸟
2012-10-12 09:14:12
两个问题
1.java是边解释边执行还是一次性解释然后执行?
2.如果是边解释边执行那么是不是每次运行到相同函数又会重新解释?会自动缓存吗?
请明白的大侠告知小弟。
...全文
616
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
的
解释
执行
是先全部
解释
完后再
执行
还是边
解释
边
执行
?
它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来
解释
执行
字节码。从而实现了“一次编译、到处
执行
”的跨平台特性。
Java
语言是
解释
型的。如前所述,
Java
程序在
Java
平台上被编译为字节码格式,然后可以在实现这个
Java
平台的任何系统中运行。在运行时,
Java
平台中的
Java
解释
器对这些字节码进行
解释
执行
,
执行
过程中需要的类在联接阶段被载入到运行环境中。既然Ja
java
语言是一种
解释
执行
的语言吗_
JAVA
到底是编译型语言还是
解释
性语言?
有人说
Java
是编译型的。因为所有的
Java
代码都是要编译的,.
java
不经过编译就无法
执行
。 也有人说
Java
是
解释
型的。因为
java
代码编译后不能直接运行,它是
解释
运行在JVM上的,所以它是
解释
型的。对于C和C++,它们经过一次编译之后,可以由操作系统直接
执行
,所以它们是编译型语言。而
Java
不一样,它首先由编译器编译成.class(字节码)文件,然后在通过JVM从.class文件中读一行
解释
...
【
Java
核心技术卷】
Java
的
解释
执行
与编译
执行
简化版的过程图示: 一、编译
执行
和
解释
执行
的一些基本概念: JVM:一种能够运行
Java
字节码(
Java
bytecode)的虚拟机。(下面有更具体的JVM的内容) 字节码:字节码是已经经过编译(.class文件),但与特定机器码无关,需要
解释
器转译后才能成为机器码的中间代码。
Java
字节码:是
Java
虚拟机
执行
的一种指令格式。
解释
器:是一种电脑...
java
是
解释
执行
还是先编译后
执行
?
java
是
解释
执行
还是先编译后
执行
?
java
-version的输出;Hotspot虚拟机的两种模式:server模式和client模式;
java
解释
器和编译器共存;JIT即时编译器
Java SE
62,630
社区成员
307,264
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章