[讨论] <<深入java虚拟机>>问题讨论

Steven_Xiao 2010-10-12
最近也在跟风看深入JVM,好多概念以前都没有听说过.所以一下子理解起来也挺难的.

请问有看过这本书的人或者对java很了解的人帮我解惑:

java的编译阶段和连接时候的解析阶段有什么区别.

(问题多多.遇到再问吧 )
taolei0628 2010-12-09
简单说一下我的理解。
1、java源代码编译成class字节码文件的静态编译。
2、jvm类装载过程
3、解释运行以及JIT,通常解释运行满足某种条件(通常是超过一定次数)后,启动JIT.
allenhooo 2010-12-31
不太清楚楼主的意思,
编译阶段的所谓解析应当是指编译时对源代码的语法分析?

而连接时后的解析则是对字节码里面的符号引用解析为直接引用。


两个没有直接必然联系。
Willam2004 2011-02-08
lz,我最近也在看深入jvm这本书,不知道lz所问的问题是那块章节内容?
RednaxelaFX 2011-02-08
其实我一直没回复这帖是因为不知道如何回复好…因为看不懂问题,或者说为了说清楚挺麻烦的。如果能用原文来问就好了。
不知道楼主问的是不是[Java源码的编译过程(source compilation)],与[JVM在链接时做的符号解析(resolution)]相关?这里resolution翻译为解析其实很容易引起混乱,有译作“决议”的,意思比较准确但感觉有点怪?不过日文里也是这么翻的。
chenchao051 2011-02-28
RednaxelaFX 写道
其实我一直没回复这帖是因为不知道如何回复好…因为看不懂问题,或者说为了说清楚挺麻烦的。如果能用原文来问就好了。
不知道楼主问的是不是[Java源码的编译过程(source compilation)],与[JVM在链接时做的符号解析(resolution)]相关?这里resolution翻译为解析其实很容易引起混乱,有译作“决议”的,意思比较准确但感觉有点怪?不过日文里也是这么翻的。


想必对ClassLoader中的 protected  void resolveClass(Class<?> c) 方法也感到相当的无语。
  
fycghy0803 2011-03-18
   编译过程是对源代码(.java文件)变为.class文件的过程,而虚拟机运行时对class的连接阶段的解析,则是对class文件中内容进行验证的过程.如你在编译时,使用到了dom4j.jar中的某个class文件,并且编译时可以找到这个jar包,这些编译就会通过;
    但当你运行时,没有在运行路径中加入这个jar包,则解析时就会报相应的classNotFoundException错误!
IcyFenix 2011-03-18
fycghy0803 写道
而虚拟机运行时对class的连接阶段的解析,则是对class文件中内容进行验证的过程


可以说校验是连接阶段做的事情,但是不能说连接阶段做的事情是校验。
Global site tag (gtag.js) - Google Analytics