什么是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。