Java虚拟机(JVM)的“一次编写,到处运行”
2016-06-16 16:31
399 查看
如何理解“一次编写,到处运行”,即 Write Once and Run Anywhere(WORA)?
关于java的跨平台特性,我想用两句话概述下,就是执行的是字节码(bytecode),而不是二进制码。
java语言之所以能够实现跨平台,本质原因是JVM不是跨平台的。
如何理解WORA?
一次面试时被问到这个问题,说实话,我是个java菜鸟,第一次同时这个概念,我之前只知道java是跨平台的,与平台无关的。
如果问我为什么?只相到一个词,虚拟机,当时回答的很没有逻辑,估计给面试官留下不好的印象,好像还提到JNI的概念,我现在还不知道这跟JNI 有何关系?如果你知道,可以在下面评论留言交流下吗?谢谢你,朋友。
Write Once.java程序编译一次,即可生成对应的字节码文件(.class文件),只要有虚拟机,此字节码文件就能运行,而不管所在的环境是什么样的。
Run Anywhere.就是可以到处运行。但不同的平台的虚拟机不同,由于java程序生成的字节码文件是相同的,不同平台上的不同虚拟机的映射原则不一样,可以说,JVM屏蔽了平台的差异。看下图:
jdk与JVM的关系?
参考资料
Difference between JDK, JRE and JVM:http://www.javatpoint.com/difference-between-jdk-jre-and-jvm
JVM (Java Virtual Machine) :
http://www.javatpoint.com/internal-details-of-jvm
Platform Independent:
http://www.javatpoint.com/features-of-java
相关文章推荐
- Spring框架学习(三)自动装配
- java眼中的XML---文件读取
- java中的Character和char的区别
- 泛型模式下的Retrofit + rxJava实现三级缓存
- SQL: Java 连接 MySQL
- Itex for java技巧总结
- 注释驱动的 Spring cache 缓存介绍
- 深入Synchronized和java.util.concurrent.locks.Lock的区别详解
- Spring使用注释驱动缓存
- spring 事物处理机制
- Java守护线程(后台线程)
- java jdk版本导致的@override 报错处理
- Java科普之加密算法
- Java科普之加密算法
- Java/XML/HTML文档被记事本打开后中文乱码
- Java: 省略System.out
- java时间转换,2016-06-16T15:02:32转换为2016-06-16 15:02:32
- Ehcache学习(三)ehcache与springAOP拦截器实例
- JDK安装错误
- Java如何Attachment源码