java之虚拟机详解
2016-06-24 16:48
253 查看
java虚拟机即在机器和程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器在任何平台上都提供给编译程序一个共同的接口,这样编译程序只需要生成虚拟机能够理解的代码即可,虚拟机接收到代码后,由其内部的解释器将代码转换为特定系统(windows,linux等系统)的机器码执行。这就解释了java的跨平台,想起了那时刚学习java老师说的:一次编译,到处运行。能这么NB多亏了解释器,解释给各个特定机器。
举个简单的例子,香港人只懂粤语,河南人只能听懂豫语,上海人只能听懂沪语,习大大(上海人,沪语-假设编者没有地域偏见)这个村长要通过村里喇叭开会,如何才能是三个地方的人都听懂呢?习大大用普通话叙述,而三个地方的人都带有语言解析器,例如河南人带的解析器可以将普通话转化为豫语,其他类似。这样大会就可以完整召开了。
上述例子中,普通话就是.class文件,语言解析器就是java虚拟机。
下面看一下java_andy给出的详细过程
*.java→*.class→机器码→java编译器 (编译) → 虚拟机(解释执行) → 解释器(翻译) → 机器码
java中,类加载器把一个类装入java虚拟机需要经过三个步骤来完成:装载、链接、初始化。其中链接又分为校验、准备、解析过程
装载:查找和导入.class文件
链接:检查装入.class文件的正确性,然后,java虚拟机为变量分配内存,设置默认值。
初始化:把符号引用变成直接引用....
举个简单的例子,香港人只懂粤语,河南人只能听懂豫语,上海人只能听懂沪语,习大大(上海人,沪语-假设编者没有地域偏见)这个村长要通过村里喇叭开会,如何才能是三个地方的人都听懂呢?习大大用普通话叙述,而三个地方的人都带有语言解析器,例如河南人带的解析器可以将普通话转化为豫语,其他类似。这样大会就可以完整召开了。
上述例子中,普通话就是.class文件,语言解析器就是java虚拟机。
下面看一下java_andy给出的详细过程
*.java→*.class→机器码→java编译器 (编译) → 虚拟机(解释执行) → 解释器(翻译) → 机器码
java中,类加载器把一个类装入java虚拟机需要经过三个步骤来完成:装载、链接、初始化。其中链接又分为校验、准备、解析过程
装载:查找和导入.class文件
链接:检查装入.class文件的正确性,然后,java虚拟机为变量分配内存,设置默认值。
初始化:把符号引用变成直接引用....
1 public class Main { 2 3 private static int size=1; 4 5 public static void main(String args[]) { 6 7 User u = new User(); 8 9 u.setName("李文水"); 10 11 u.setPwd("159"); 12 13 String name = u.getName(); 14 15 String pwd = u.getPwd(); 16 17 u = null; 18 19 } 20 21 } 22 23 public class User { 24 25 private String name; 26 27 private String pwd; 28 29 public String getName() { 30 31 return name; 32 33 } 34 35 public void setName(String name) { 36 37 this.name = name; 38 39 } 40 41 public String getPwd() { 42 43 return pwd; 44 45 } 46 47 public void setPwd(String pwd) { 48 49 this.pwd = pwd; 50 51 } 52 53 }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树