谁能为我讲清楚编译,装载,连接,初始化这之间的关系和顺序?越清楚越好。

xuanxufeng 2012-07-24 10:11:56
谁能为我讲清楚编译,装载,连接,初始化这之间的关系和顺序?越清楚越好。特别是涉及到static类型的成员。
...全文
128 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
BadPattern 2012-07-25
  • 打赏
  • 举报
回复
java是动态语言,没有链接这一步骤,只在类加载的过程中有连接过程.
编译就是将源文件编译为class文件.
类加载过程分为:加载,连接(又分为验证,准备和解析三步)和初始化,static成员在准备的过程中被分配内存并赋予默认值(位模式全部为0),在初始化的过程通过初始化方法(静态方法,静态块等)被赋予各种程序员想要给予的值.
Sammie 2012-07-24
  • 打赏
  • 举报
回复
Java的运行过程:
Java源文件(*.java)——>Java编译器——>字节码文件(*.class)——>类装载器——>字节码校检器——>解释器——>操作系统(Windows、Linux等)整个文件Load到内存区,一系列动作之后形成操作系统认识的代码,操作系统找到main方法开始实行。

每个解释:
1、编译:指使用Java编译器对源文件进行错误排查的过程,编译后将生成后缀名为.class的字节码文件的过程。

2、装载:运行JVM字节码的工作是由解释器( java命令 )来完成的。解释执行过程分三部进行:代码的装入、代码的校验和代码的执行。装入代码的工作由"类装载器"(class loader)完成。
ClassLoader.getSystemClassLoader().loadClass(类)。最终产生一个CLASS对象

3、连接:装载后进行验证、预备和解析的过程。
-- 验证:类在语法等相关的验证
-- 预备:就是你类中一些变量等等开辟空间的操作
-- 解析:在类型的常量池中寻找类、接口、字段和方法的符号引用,把这些符号引用替换成直接引用。

4、初始化:我所理解的是代码执行的顺序。

他们之间的关系:
一个类的源文件先编译成字节码文件,然后在执行这类的时候需要做先装载,然后连接,最后初始化。

以上个人理解,关于理论问题最怕害人,所以仅供参考。
冰思雨 2012-07-24
  • 打赏
  • 举报
回复
没听说Java还有连接这个步骤。连接,在学C语言的时候,听说过。

编译,就是把按照Java语法规则编写的文本文件(源码文件)按照一定的规则转换成字节码文件(.class文件)的过程。

字节码文件能够被JVM识别,并解释执行。字节码文件的数据结构,是开放的,官方已经制定了标准。

装载,就是Java虚拟机将字节码文件的内容,读取到内存当中的过程。
mengyalizuopeng 2012-07-24
  • 打赏
  • 举报
回复
Bruce Eckel可以 ,。。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧