了解JDK,JRE和JVM

什么是JVM

大家都知道,计算机只能识别0,1序列
我们学习的C语言、java都是高级语言,接近英文语法,但是计算机并不认识它们,
所以就需要一个翻译员来在高级程序和0,1序列间做翻译。

问题在于,每个平台认识的0,1序列式不一样的,
比如,一个指令在Windows上是0101,到了Linux下也许是1010,
因此必须使用不同的编译程序为不同平台编译出可执行的机器码。

所以,在Windows上编译过的程序无法直接拿到Linux上执行。

java语言也需要编译,但是它编译后,不会直接生成0,1序列,而是翻译为中介格式的位码,也就是.class文件

而此时,JVM(java虚拟机)就会将已经是位码的文档,翻译成 相依于平台 的机器码。


对java而言,只认识一种操作系统,这个系统即JVM,位码文档就是JVM的可执行文件
(就好比.exe是Windows的可执行文件)

JVM和JRE的区别

JRE即java的执行环境,其中包含JVM(没有操作系统,.class文件压根无法执行)和javaSE API。

javaSE API中含高了各式各样常用的链接库。
比如说System.out.println("Hello");
这行代码中,System是一个类,out是它的一个对象,println()是out对象的方法。
这些都是前人已经编译好,并放进了API中,我们才能直接使用的。

API中还包含了很多链接库,如集合,I/O,AWT等,不负责任地说,学习java,就是学习各种链接库的使用

实际上JRE还包括了部署技术,也就是如何将程序安装到客户端的技术。如图1(在下方)
也可以直接进这个网址 http://docs.oracle.com/javase/8/docs/index.html 查看原图
点击(部署)Deployment即可查看其中的技术
(反正我看不懂其中的英文。。。有能力的看看吧)

所以我们可以看出,JRE并不是单纯的JDK,还包含了API和Deployment哦。

最后就是大Boss---->JDK,即java开发工具,其中包含了JRE,还包含了javac(编译工具),javadoc(生成帮助文档工具)等

其实我对于javadoc并不是很了解,也解释不清楚,只知道他会根据程序中的一些特殊注释格式生成注释文档。如:

/**
*@autor 张三
*/

生成的注释文档中就会显示本程序的autor是 ”张三“。

对于其中各标签的说明可见javadoc百度百科:

http://baike.baidu.com/link?url=8ZMSgujSxY2rMQA7gBQDRiHCGsPYxoHNWbxwPUOz9iATTyskQ9T3BOPpbaCXhf8gjbWgtlSIo17YbR_JavMzzK

有了这些工具,我们才能愉快地开发。

所以,如果你不需要写JAVA程序,只需要把可执行文件运行起来的话,只需要安装JRE就好了,即执行.class文件需要API和JVM。