JDK、JRE与JVM 博客分类: Java
程序员文章站
2024-03-22 10:41:46
...
Java是SUN(Stanford University Network,斯坦福大学网络公司)1995年推出的一门高级编程语言。
Java语言是跨平台的,不过前提是需要在运行Java程序的平台上面有与之相对应的JVM(Java Virtual Machine),这里需要注意的是JVM并不是跨平台的,它有Linux版的JVM,Windows版的JVM,Mac版的JVM。。。而这个JVM在 哪里呢,答案是JRE(Java Runtime Environment),中文意思是Java运行环境,它包括jvm与java的核心类库。因此,我们如果想要运行Java程序,我们必须要安装一个 JRE。JRE只是Java程序的运行环境,而作为开发人员,则需要把写好的Java程序进行编译,这样才能在其他PC或者是Server端运行,所以开发人员需要在自己的开发环境中安装一个叫做JDK(Java Development Kit)的工具,中文意思是Java开发工具包,其中JDK中已经包含了JRE,这里总结一下JDK、JRE、JVM三者之间的关系:JDK > JRE > JVM(这里用大于号并不严谨,需要替换成数学中包含符号),JDK与JRE的安装这里不再演示,与平时的安装程序类似(Linux与Mac中另行 Google),这里提一下,在安装JDK过程中,会提示是否安装JRE,上面讲到JDK中已经包含JRE,所以这个步骤可以跳过,当然如果不小心点击安 装了,也不会有任何影响,安装过JDK可以发现其本质也就是把JDK的安装包进行解压,如果需要经常把程序放在其他PC或者是Server端运行的童鞋, 可以把安装好的JDK拷到你的移动设备中,下次只要带你的移动设备就可以了,而不需要再安装JDK,检验JDK是否安装成功,运行一下编译Java程序的编译命令javac即可,打开doc窗口,在窗口中输入javac,可以看到doc窗口中出现'javac' 不是内部或外部命令,也不是可运行的程序或批处理文件。的错误,该错误产生的原因是如果当前执行的程序在当前目录下如果不存在,windows系统会在系统中已有的一个名为path的环境变量指定的目录中查找。如果还没有找到,就出现以上的错误提示,因为javac.exe在JDK的bin目录下面,所以我们需要进入到JDK的bin目录下,再执行javac(javac与javac.exe效果是一样的),这时候doc窗口中就会出现关于javac命令的用法,如果我们另开一个doc窗口,则再输入javac的时候还是会出现刚才上面的的错误(除非这个doc窗口是在JDK中的bin目录下时输入start派生出来的窗口),到这时我们会发现这是相当的麻烦的,根据windows系统在查找可执行程序的原理,可以将java工具所在路径定义到 path环境变量中,让系统帮我们去找运行执行的程序,关于环境变量的配置见Java环境变量。当配置了环境变量后,我们发现在任何目录下面输入 javac时都不会有错误了。
总结:JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性。
java语言是跨平台,jvm不是跨平台的。
JRE(Java Runtime Environment):java的运行环境,包括jvm+java的核心类库。
JDK(Java Development Kit):java的开发工具,包括jre+开发工具
java语言是跨平台,jvm不是跨平台的。
JRE(Java Runtime Environment):java的运行环境,包括jvm+java的核心类库。
JDK(Java Development Kit):java的开发工具,包括jre+开发工具
推荐阅读
-
JDK、JRE与JVM 博客分类: Java
-
JDK代理模式 博客分类: java
-
JDK代理模式 博客分类: java
-
JVM理论与实践【堆内存结构与垃圾回收】 博客分类: Java jvmgc堆内存垃圾回收虚拟机
-
JVM理论与实践【堆内存结构与垃圾回收】 博客分类: Java jvmgc堆内存垃圾回收虚拟机
-
JVM理论与实践【类加载器基础】 博客分类: Java jvm类加载器classloader
-
JAVA NIO之Direct Buffer 与 Heap Buffer的区别? 博客分类: IO and NIO nio direct buffer heap
-
[转]Spring加载resource时classpath*:与classpath:的区别 博客分类: java web jarspringclasspath
-
jar文件的运行方式 博客分类: Java jar运行jre
-
Java线程中yield与join方法的区别 博客分类: Java java