目录
Java的三种技术架构
Java SE(Java Platform,Standard Edition):完成桌面应用程序的开发,是其他两者的基础。
Java EE(Java Platform,Enterprise Edition):开发企业环境下的应用程序,主要针对web程序开发。
Java ME(Java Platform,Micro Edition):在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。
一张表解释Java生态框架:(从左到右的包含关系,上下之间平行无关)
JDK、JRE、JVM
JDK(Java Development Kit) :Java开发工具包,是整个JAVA的核心,用于java程序的开发,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。
JRE(Java Runtime Environment):Java运行环境,包含JVM标准实现及Java核心类库。JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器)。
光有JVM还不能成class的 执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。 (jre里有运行.class的java.exe。
JVM(Java Virtual Machine):即java虚拟机, java运行时的环境。JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。针对java用户,也就是拥有可运行的.class文件包(jar或者war)的用户。里面主要包含了jvm和java运行时基本类库(rt.jar)。
Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。
也就是说,如果我写好一个.class文件,我发给你,只要你安装了JVM,就可以在你的电脑上运行。
三者的关系:
JDK=JRE+开发工具
JRE=JVM+类库。
JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib。在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。JVM+Lib=JRE。总体来说就是,我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。
原文链接:https://blog.csdn.net/ancientear/article/details/79483592
javac命令和java命令
javac:负责的是编译的部分,当执行javac时,会启动java的编译器程序,对指定扩展名的.java文件进行编译,生成了jvm可以识别的字节码文件,即class文件,也就是java的运行程序。
java:负责运行部分,会启动jvm,加载所需的类库,并对class文件进行执行。
图解整个过程~
还应该注意的是,在编译的过程中,不是一个.java文件对应一个.class文件,而是一个类对应一个.class文件。这样我们就能保证了用到哪个类就加载哪个类,而不是全部都加载出来。
The end
下期见~~~~~~~~