合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
>[success] # 安装Java 1. 通过官网下载 www.sun.com www.oracle.com 2. 若下载的是安装版,则一路点击下一步安装即可, 若下载的是绿色版,则直接解压即可,**安装的路径中不要有 中文,不要有空格等一些特殊的符号** 3. 下载完成后JDK 目录 | 目录名称 | 说明 | | --- | --- | | bin | 该路径下存放了JDK的各种工具命令以及其它的一系列用于开发诊断、分析、调试、管理的工具和命令。javac和java就放在这个目录。 | | conf | 该路径下存放了JDK的相关配置文件。 | | include | 该路径下存放了一些平台特定的头文件。 | | jmods | 该路径下存放了JDK的各种模块。 | | legal | 该路径下存放了JDK各模块的授权文档。 | | lib | 该路径下存放了JDK工具的一些补充JAR包。 | | jre| 在java11开始jdk 文件里面就没有了这个目录,现在鼓励的是通过 jlink 自行构建所需的 runtime,理解成按需导入运行环境需要那些使用的api 按需生成对应运行环境支持api即可,参考文章https://blog.csdn.net/zbr0819/article/details/102793155 | * **java8 对比 java11** Java 11 中不再单独提供 JRE,而是将 JRE 的功能合并到了 JDK 中,所以在 Java 11 安装目录下并没有`jre`目录。同时,Java 11 中还引入了模块化系统,因此多了一个`jmods`目录。 | 目录 | Java 8 | Java 11 | 主要内容 | | --- | --- | --- | --- | | bin | jdk1.8.0\_x\\bin | jdk-11\\bin | Java 开发工具和命令行工具 | | include | jdk1.8.0\_x\\include | jdk-11\\include | Java Native Interface (JNI) 头文件 | | jre | jdk1.8.0\_x\\jre | \- | JRE(Java 运行环境)和 Java 应用程序包 | | lib | jdk1.8.0\_x\\lib | jdk-11\\lib | Java 类库和支持文件 | | conf | \- | jdk-11\\conf | JDK 配置文件 | | legal | \- | jdk-11\\legal | 包含了许可证和版权信息 | | jmods | \- | jdk-11\\jmods | jmod 文件,Java 模块化系统的打包形式 | | include.zip | jdk1.8.0\_x\\include.zip | \- | JNI 头文件的压缩包 | | src.zip | jdk1.8.0\_x\\src.zip | \- | Java 开发工具源码的压缩包 | | demo | jdk1.8.0\_x\\demo | \- | 演示示例 | | sample | \- | jdk-11\\sample | 示例代码和演示应用程序 | | man | jdk1.8.0\_x\\man | jdk-11\\man | JDK 文档的 Unix 手册页 | >[danger] ##### java 执行运行 1. 开发Java程序,需要三个步骤:**编写程序,编译程序,运行程序** * 编写程序就是需要安装java 规范编写 后缀为 `java` 的文件 * 使用 `javac` 指令执行 **java文件编译**,将文件转换成字节码,产生`class`文件,其中`class` 作为**交给计算机执行的文件** * 使用 `java` 指令 用来执行`class`文件程序运行 >[danger] ##### 配置环境变量 为了可以在`cmd`任何地方都可以执行 `java` 和 `javac` 两个指令,需要将两个执行配置到全局环境中,否则就只能在其脚本目录文件执行 **配置方式** `计算机 => 右击,选择属性 => 高级系统设置 => 高级 => 环境变量 => 系统变量 => 找到Path, 点击编辑 => 将javac.exe所在的路径信息配置到 Path变量值的最前面,加上英文版的分号 => 一路点击确定即可` * **以前下载的老版本**的JDK是没有自动配置的,而且自动配置的也只包含了4个工具而已,所以我们需要删掉已经配置完毕的,再次重新配置Path环境变量 ![](https://img.kancloud.cn/ad/b2/adb2a05d74542f4af1da27b7af6fc7d4_1264x363.png) 以前下载的老版本的JDK是没有自动配置的,而且自动配置的也只包含了4个工具而已,所以我们需要删掉已经配置完毕的,再次重新配置Path环境变量。 配置方式将`JDK安装`在了哪个位置具体位置进行配置,这里设置全局系统环境变量`JAVA_HOME`,在 `path `位置使用变量配置,这样好处使用其他软件时候可以直接配置变量`JAVA_HOME` ![](https://img.kancloud.cn/75/77/7577a97c93a72c8984eacd1d4a809673_783x205.png) ![](https://img.kancloud.cn/da/5e/da5ee64db2528cbd8ed407941c52b479_693x222.png) `bin `文件中可执行的命令更多 ![](https://img.kancloud.cn/1a/d3/1ad3095466383b680b756ed318f890ac_361x514.png) * **注意现在最新从官网上下载**的`JDK`安装时会自动配置`javac`、`java`命令的路径到Path环境变量中去 ,所以`javac`、`java`可以直接使用 >[danger] ##### win10 失效问题 当电脑重启之后,环境变量失效了。表示操作系统不支持自定义的环境变量。 **步骤**: * 还是要配置`JAVA_HOME`给以后的相关软件去使用 * 我们可以把java和javac的完整路径配置到PATH当中。**新配置** `JAVA_HOME` 配置 为`C:\JDK\bin` path 为`%JAVA_HOME` 。**老配置**是`C:\JDK` 在path 拼接时候`%JAVA_HOME\bin` >[danger] ##### 在jdk 中更多指令 1. `java`:这个可执行程序其实就是JVM,运行Java程序,就是启动JVM,然后让JVM执行指定的编译后的代码; 2. `javac`:这是Java的编译器,它用于把Java源码文件(以.java后缀结尾)编译为Java字节码文件(以.class后缀结尾); 3. `jar`:用于把一组.class文件打包成一个.jar文件,便于发布; 4. `javadoc`:用于从Java源码中自动提取注释并生成文档; 5. `jdb`:Java调试器,用于开发阶段的运行调试。 >[success] # 初识java 1. Java版本`Java SE`、`Java EE`、`Java ME` * `Java SE ,(Java Platform, Standard Edition)`称之为 **Java平台标准版,是 Java平台的基础是其他两个版本的基础**包含了运行Java应用所需要的**基础环境**和**核心类库**还定义了**基于桌面应用的基础类库**,通过使用这些类库 我们可以去写一些桌面应用 * `Java EE,(Java Platform,Enterprise Edition)`称之为Java平台企业版,Java EE构建在Java SE基础之上,用于构建企业级应用,用于Web方向的网站开发 * `Java ME (Java Platform,Micro Edition)`称之为Java 平台微型版,用于嵌入式消费类电子设备或者小型移动设备的开发。为机顶盒、移动电话和PDA等嵌入式消费电子设备提供的Java解决方案 2. `Java SE`就是标准版,包含标准的`JVM和标准库`,其中 `EE `和 `SE `用的是一套JVM 即java虚拟机,`Java EE`只是在`Java SE`的基础上加上了大量的`API`和库,以便方便开发Web应用、数据库、消息服务等,`ME `比较特殊`SE`无在`ME`上运行,其中`JVM`也是瘦身版本 ![](https://img.kancloud.cn/63/37/6337692d4bd34b272438ae0d10720a56_391x201.png) 3. `Java`向下兼容。新的版本只是在原有的基础上添加了一些新的功能而已,因此高版本可以运行低版本代码,但低版本代码不一定能运行高版本(高版本可能用了低版本不支持的api) >[danger] ##### JDK、JRE、JVM ![](https://img.kancloud.cn/ba/5f/ba5f9287fe594339b7cc187a66f3406e_1634x351.png) 1. `JDK(Java Development Kit)` 称为**Java开发工具**,包含了JRE和开发工具,是开发阶段使用,安装了JDK,就无需再单独安装JRE了,其中的开发工具:**编译工具(javac.exe),打包工具(jar.exe)** 等 2. `JRE全称Java Runtime Environment`即 **java运行环境**,`Jre`大部分都是 C 和 C++ 语言编写的,他是我们在编译包含一些核心类库主要是`java.lang`包:包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等,系统缺省加载这个包,简单来说 JRE 就是 ** JVM + 核心类库+运行工具** 二者最大区别在于 如果是开发使用需要安装`JDK` 使用 `JDK `中的一些开发工具,`JDK` 包含了 `JRE` Java 运行环境,仅仅是想运行一个开发好的`Java`程序,计算机中只需要安装`JRE`即可,他们关系`JDK 包含JRE 包含 JVM`,如果只有`Java`源码,要编译成`Java`字节码,就需要`JDK`,因为`JDK`除了包含`JRE`,还提供了**编译器、调试器等开发工具。** 3. JVM全称`Java Virtual Machine` 即**java虚拟机**,不同平台有自己虚拟机因此可以跨平台运行 ![](https://img.kancloud.cn/e2/cb/e2cb1244ff2a6b2cce3993b7cd2db501_512x203.png) >[danger] ##### Java语言跨平台的原理 1. 现在js 运行环境一般都是**v8 引擎**,不同系统环境安装对应的**v8 引擎** 即可在不同环境下运行`js`,java 同理 将其编译为扩展名为 `.class` 的字节码。如果想要**执行字节码文件**,平台上面必须安装`JVM`,`JVM `解释器会将字节码解释成**依赖于平台的机器码** ![](https://img.kancloud.cn/5b/1c/5b1cb59fd03fdce4cb2c5f0ede4fcdde_1714x697.png) ![](https://img.kancloud.cn/c4/2a/c42a38d7aafa687c701864246438f96a_1050x394.png)