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开发工具(jdkbin)
- java.exe 运行代码**(.class文件)**
- javac.exe 编译代码**(.java文件)**
- javap.exe 查看编译之后的字节码
- javadoc.exe 项目体系+注释说明导出
2、 基础开发系统库(jdkjrelibrt.jar)
3、 基础开发库的源码(jdksrc.zip)
JREJRE**(Java Runtime Environment,Java运行环境)**,包含JVM标准实现及Java核心类库。JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器)
JVMJVM 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版本信息,则环境变量设置成功
是编译命令,将.java源文件编译成.class字节码文件。
- cmd命令:javac HelloWorld.java
是运行字节码文件;由java虚拟机对字节码进行解释和运行。
- cmd命令:java HelloWorld
- 新建一个HelloWorld.java文件
-
在cmd命令中进入当前路径。使用d:切换到D盘,使用cd D:temp切换到当前路径。
-
dos中输入javac HelloWorld.java,在当前路径中生成HelloWorld.class文件
- dos中输入java HelloWorld,成功打印Hello World!
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 选项
--module-path <路径> 指定查找应用程序模块的位置
--system 指定查找系统模块的位置
--class-path <路径> 指定查找用户类文件的位置
-classpath <路径> 指定查找用户类文件的位置
-cp <路径> 指定查找用户类文件的位置
-bootclasspath <路径> 覆盖引导类文件的位置
--multi-release 指定要在多发行版 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."":()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用于描述类或者方法的作用。Javadoc可以写在类上面和方法上面。
https://docs.oracle.com/javase/7/docs/technotes/tools/windows/javadoc.html
javadoc:使用说明
https://blog.csdn.net/vbirdbest/article/details/80296136



