一、JDK,JRE,JVM的关系(JDK1.8)
JDK包含JRE,而JRE包 含JVM
JDK = JRE + Java的开发工具(javac.exe,java.exe,javadoc.exe)
JRE = JVM + Java核心类库
JDK
JDK全称Java SE Development kit(JDK),即java标准版开发包,是Oracle提供的一套用于开发java应用程序的开发包,它提供编译,运行java程序所需要的各种工具和资源,包括java编译器,java运行时环境,以及常用的java类库等。
它包含了:
1、 JAVA开发工具(jdk\bin)
- java.exe 运行代码**(.class文件)**
- javac.exe 编译代码**(.java文件)**
- javap.exe 查看编译之后的字节码
- javadoc.exe 项目体系+注释说明导出
2、 基础开发系统库(jdk\jre\lib\rt.jar)
3、 基础开发库的源码(jdk\src.zip)
JRE
JRE**(Java Runtime Environment,Java运行环境)**,包含JVM标准实现及Java核心类库。JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器)
JVM
JVM Java Virtual Machine,就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序首先被编译为.class文件,这种类文件可以在虚拟机上运行,也就是说class并不直接与机器的操作系统相对应。而是经过虚拟机间接的与操作系统交互,由虚拟机将程序解释给本地系统执行,只有jvm还不能将class执行,因为在解释class的时候jvm需要调用解释所需要的类库lib,而jre包含lib类库,jvm屏蔽了具体操作系统平台的相关信息,使得java程序只需要生成在java虚拟机上运行的目标代码。可以在多种平台(操作系统)上不加修改的运行。
二、设置环境变量
在java 中需要设置三个环境变量
(1)配置path变量
(2)配置classpath变量
(3)配置JAVA_HOME变量
但java版本1.5之后不用再设置classpath了
Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找**。用户通过设置环境变量,来更好的运行进程。**
-
首先在应用窗口搜索系统环境变量
-
点击环境变量,然后新建系统变量
-
变量名中输入:
JAVA_HOME
变量值中输入:JDK安装路径
-
点击Path变量,点击系统变量中的编辑,然后点击新建``%JAVA_HOME%\bin`
- 在cmd中,输入
java -version
,显示出java版本信息,则环境变量设置成功
三、javac.exe和java.exe的使用
1、javac.exe
是编译命令,将.java
源文件编译成.class
字节码文件。
- cmd命令:
javac HelloWorld.java
2、java.exe
是运行字节码文件;由java虚拟机对字节码进行解释和运行。
- cmd命令:
java HelloWorld
3、示例
- 新建一个
HelloWorld.java
文件
-
在cmd命令中进入当前路径。使用
d:
切换到D盘,使用cd D:\temp
切换到当前路径。
-
dos中输入
javac HelloWorld.java
,在当前路径中生成HelloWorld.class
文件
- dos中输入
java HelloWorld
,成功打印Hello World!
四、javap.exe的使用
javap是JDK自带的反汇编器,可以查看java编译器为我们生成的字节码。通过它,我们可以对照源代码和字节码,从而了解很多编译器内部的工作。
语法:
--help -help -h -? 输出此帮助消息
-version 版本信息
-v -verbose 输出附加信息
-l 输出行号和本地变量表
-public 仅显示公共类和成员
-protected 显示受保护的/公共类和成员
-package 显示程序包/受保护的/公共类
和成员 (默认)
-p -private 显示所有类和成员
-c 对代码进行反汇编
-s 输出内部类型签名
-sysinfo 显示正在处理的类的
系统信息(路径、大小、日期、SHA-256 散列)
-constants 显示最终常量
--module <模块>, -m <模块> 指定包含要反汇编的类的模块
-J<vm-option> 指定 VM 选项
--module-path <路径> 指定查找应用程序模块的位置
--system <jdk> 指定查找系统模块的位置
--class-path <路径> 指定查找用户类文件的位置
-classpath <路径> 指定查找用户类文件的位置
-cp <路径> 指定查找用户类文件的位置
-bootclasspath <路径> 覆盖引导类文件的位置
--multi-release <version> 指定要在多发行版 JAR 文件中使用的版本
-
使用
javap -c HelloWoeld
,便可对HelloWorld.class进行反汇编
D:\>cd D:\temp D:\temp>javap -c HelloWorld Compiled from "HelloWorld.java" public class HelloWorld { public HelloWorld(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object."<init>":()V 4: return public static void main(java.lang.String[]); Code: 0: getstatic #7 // Field java/lang/System.out:Ljava/io/PrintStream; 3: ldc #13 // String Hello world! 5: invokevirtual #15 // Method java/io/PrintStream.println:(Ljava/lang/String;)V 8: return }
五、javadoc.exe的使用
Javadoc用于描述类或者方法的作用。Javadoc可以写在类上面和方法上面。
https://docs.oracle.com/javase/7/docs/technotes/tools/windows/javadoc.html
javadoc:使用说明
https://blog.youkuaiyun.com/vbirdbest/article/details/80296136