【Java面向对象系列 温故知新 + 循序整理 】>> JDK管理Java应用
what@管理Java应用:指创建Java应用的目录结构、编译、运行,以及发布Java应用的操作。
1.Java应用常用目录结构>>
目录 | 描述 |
---|---|
src 子目录 | 存放Java源代码 |
classes 子目录 | 存放编译生成的Java类文件 |
lib 子目录 | 存放第三方Java软件的Jar文件 |
doc 子目录 | 存放各种帮助文档 |
doc\api 子目录 | 存放JavaDoc 文档 |
deploy 子目录 | 存放Java应用的打包文件 |
2.JDK简介以及主要组成>>
what:JDK 是Java Development Kit(Java 开发工具包)的缩写。它为Java应用程序提供了基本的开发和运行环境,JDK也别称为Java标准开发环境(Java Standard Edition,JavaSE)。
JDK主要包括的内容(了解并掌握):
- Java虚拟机(Java Virtual Machine):负责解析和执行Java程序。Java虚拟机可以运行在各种操作系统平台上。
- JDK类库(JavaSE API):提供基础的Java类及各种实用类。java.lang、java.io、java.util、java.awt、javax.swing和java.sql包中的类都位于JDK类库中。
- 开发工具:可执行工具,如:javac.exe(编译工具)、java.exe(运行工具)、javadoc.exe(生成JavaDoc文档的工具)和jar.exe(打包工具)等
3.编译Java源文件(饭碗)>>
what:javac命令用于编译Java源文件,javac 命令的使用语法如下:
javac [options] [sourcefiles] ====》 javac命令 + 命令选项(参数) + 源文件路径
javac命令后面跟多个命令选项,以便控制javac命令的编译方式。主要命令选项如下表:
命令选项 | 说明 |
---|---|
-nowarn | 不输出警告信息。非默认选项 |
-verbose | 输出编译器运行中的详细工作信息。非默认选项 |
-classpath 路径 | 指定或覆盖classpath环境变量,默认为当前路径 |
-sourcepath 路径 | 指定Java源文件的路径 |
-d 目录 | 指定编译生成的类文件的存放目录 |
-help | 显示各个命令选项的用法 |
javac命令中可以指定编译多个Java源文件,这些文件之间以空格隔开。
编译的流程 ===》 问题导火线(若A类引用B类,编译的流程是怎样个流程???) 如下解答:
(1)由于A类引入B类,因此Java编译器在编译A类时,需先到classpath路径下寻找B.class文件,然后到sourcepath目录下寻找B.java文件。
(2)如果同时找到了B.class文件和B.java文件,Java编译器会根据B.java文件的更新日期来判断B.class有没有过期,如果过期,就重新编译B.java,否则就直接使用B.class。
(3)如果只找到B.class文件,Java编译器就直接使用这个B.class。如果只找到B.java文件,Java编译器就会编译这个B.java。
(4)如果既没有找到B.java文件,也没有找到B.class文件,就会抛出编译错误,提示无法解析A类的“B”符号
4.运行Java源文件(饭碗)>>
what:java命令用于运行Java程序,它会启动Java虚拟机加载相关的类,然后调用主程序类的main()方法。java命令后面也跟参数选项,如下:
命令选项 | 说明 |
---|---|
-classpath 路径 | 指定或覆盖classpath环境变量 |
-verbose | 输出运行中的详细工作详细。非默认选项 |
-D<属性名=属性值> | 设置系统属性 |
-jar | 指定运行某个Jar文件中的特定Java类 |
-help | 显示各个命令选项的用法 |
5.给Java应用打包(饭碗)>>
what:JDK的jar命令能够把Java应用打包成一个文件,这个文件的拓展名为.jar。这种打包文件被称为JAR文件(Java Archive)文件,它独立于任何操作系统平台,而且支持压缩格式。给Java应用打包的好处在于:便于发布Java应用,提高在网络上传输Java应用的速度。
打包的步骤如下(同Linux系统中的压缩解压雷同):
(1)首先在DOS命令行转到要打包的Java应用程序中的classes目录下;
(2)然后运行如下命令:jar -cvf XXX路径\XXX.jar *
java命令和javac命令会读取JAR文件中的Java类。例如以下命令会把XXX.jar添加到classpath中,然后运行其中的XXX类
java -claspath XXX路径\XXX.jar XXX类
jar命令还具有展开JAR文件的功能,如下命令:
jar -xvf XXX路径\XXX.jar
6.使用和创建JavaDoc文档(饭碗)>>
what:Java类通过JavaDoc文档来对外公布自身的用法,JavaDoc文档是基于HTML格式的帮组文档。
why:对于用户创建的Java类,如何编写这种HTML格式的JavaDoc文档呢?手工编写JavaDoc文档显示是很费力的事!
how:JDK提供了一个javadoc.exe程序,它能够识别Java源文件中符合特定规范的注释语句,根据这些注释语句自动生成JavaDoc文档。
6.1 javadoc命令的用法 >
javadoc命令和javac命令一样,也包含了许多命令选项,如下表列举了一些常用命令选项的用法
命令选项 | 描述 |
---|---|
-public | 非默认选项。仅为public访问级别的类及类的成员生成JavaDoc文档 |
-protected | 默认选项。仅为public和protected访问级别的类及类的成员生成JavaDoc文档 |
-package | 非默认选项。仅为public和protected以及默认访问级别的类及类的成员生成JavaDoc文档 |
-private | 非默认选项。仅为public、protected、默认以及private访问级别的类及类的成员生成JavaDoc文档 |
-version | 非默认选项。解析@version标记 |
-author | 非默认选项。解析@author标记 |
-splitindex | 非默认选项。把索引文件划分为每个字母对应一个索引文件 |
-sourcepath 路径 | 默认为当前目录。指定Java源文件的路径 |
-classpath 路径 | 默认为当前目录。指定classpath |
-d 目录 | 默认为当前目录。指定JavaDoc文档的输出目录 |
javadoc命令的使用格式如下:
javadoc[options] [packagenames] [sourcefiles] =====》 命令 + 参数 + 生成文档的位置 + 要生成文档的源文件路径(支持多个,空格隔开)
在Java源文件中,只有满足特定规范的注释及特定的用法,才会构成JavaDoc文档。这些规范包括:
(1)注释以“/**”开始,并以“*/”结束,里面可以包含普通文本、HTML标记和JavaDoc标记。
(2)javadoc命令只处理Java源文件中在类声明、接口声明、成员方法声明、成员变量声明以及构造方法声明之前的注释,忽略位于其他地方的注释。
6.2 JavaDoc标记
what@JavaDoc标记:在构成JavaDoc文档的注释语句中,可以使用JavaDoc来描述作者、版本、方法参数和方法返回值等信息。常见的JavaDoc标记如下表:
JavaDoc标记 | 描述 |
---|---|
@version | 指定版本信息 |
@since | 指定最早出现在哪个版本 |
@author | 指定作者 |
@see | 生成参考其他JavaDoc文档的链接 |
@link | 生成参考其他JavaDoc文档的链接,它和@see标记的区别在于:@link标记能嵌入到注释语句中 |
@deprecated | 用来表明被注释的类、变量或方法已经不提倡使用,在将来的版本中可能被废弃 |
@param | 描述方法的参数 |
@return | 描述方法的返回值 |
@throws | 描述方法抛出的异常,指明抛出异常的条件 |
7. Java虚拟机运行Java程序的基本原理
Java虚拟机(Java Virtual Machine,JVM)是由JDK提供的一个软件程序。虚拟机的任务是执行Java程序。
从上图可看出,由Java源文件编译出来的类文件可以在任意一种平台上运行,Java语言之所以有这种跨平台的特点,要归功于Java虚拟机。Java虚拟机封装了底层操作系统的差异,不管是在哪种平台上,都按以下同样的步骤来运行程序:
(1)把.class文件中的二进制数据加载到内存中。
(2)对类的二进制数据进行验证。
(3)解析并执行指令。