1、JAVA运行环境
JAVA概念描述图如下:
JDK是JRE的超集,也就是只要JRE有的JDK都有,同时JDK还提供了java程序开发过程中的编译器和调试器。JRE提供java基础类库,java虚拟机(JVM)等,能运行java编程语言编写的应用程序。
如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。
2、JDK版本
2.1、jdk版本特性
jdk各版本特性说明书如下:
Jdk版本 | 发布日期 | 功能特性 |
Jdk 1.0 | 1996-01-23 | 此版本包括两个部分:运行环境(即Java Runtime Environment,JRE)和开发环境(Java Development Kit,IDK)。运行环境包括核心API,集成API、用户界面API、发布技术、Java虚拟机(Java Virtual Machine,JVM)五个部分;其中开发环境包括编译Java程序的编译器(javac 命令)。 |
Jdk 1.1 | 1997-02-19 | 1、增加了JIT(Just In Time,即时编译)编译器 2、JDBC 3、内部类 4、Java Bean 5、RMI 6、内省反射 |
Jdk 1.2 | 1998-12-04 | 此版本是Java历史上最重要的JDK版本,伴随JDK1.2一同发布的还有JSP/SERVLET、EJB等规范,并将Java分成了J2EE、J2SE和J2ME三个版本。 1、集合框架 2、字符串常量做内存映射; 3、JIT编译器 (Just In Time) 4、对打包Java文件数字签名 5、控制授权访问系统资源的策略工具 6、JFC(Java Foundation Classes) Swing 1.0, 拖放和Java2D类库 7、Java插件 8、JDBC可滚动结果集,BLOB,CLOB,批量更新和用户自定义类型 9、Applet中添加声音支持 |
Jdk 1.3 | 2000-05-08 | 1、Java Sound API; 2、jar文件索引; 3、对Java的各个方面都做了大量优化和增强 |
Jdk 1.4 | 2004-02-13 | 是JDK历史上最为成熟的版本。此时Compaq,Fujitsu、SAS、Symbian、IBM等公司的参与,使JDK1.4成为发展最快的一个JDK版本。JDK1.4已经可以使用Java实现大多数的应用。 在此期间Java语言在企业应用领域大放异彩。涌现大量基于Java语言的开源框架:Struts、WebWork、Hibernate、Spring等;大量企业应用服务器也开始涌现:WebLogic、WebSphere、JBoss等。 1、XML处理 2、Java打印服务 3、日志API(Logging) 4、Java Web Start 5、JDBC 3.0 API 6、断言机制 7、参数API (Preferences) 8、链式异常处理 9、支持IPV6 10、正则表达(Regular) 11、image I/O API |
Jdk 5 | 2004-09-30 | Sun将JDK1.5改为Java5.0,J2EE、J2SE和J2ME也相应的改为Java SE、Java ME、Java EE。增加了泛型、增强for循环、可变数量的形参、注释(Annotations)、自动拆箱和装箱等功能;发布新的企业级平台规范,如通过注释等新特性来简化EJB的复杂性,并推出EJB3.0规范,还推出了自己的MVC框架规范:JSF。 引入的新特性包括: 1、泛型(Generic) 2、For-Each循环 3、自动装箱与拆箱 4、类安全枚举 (Enum) 5、可变参数(Varargs) 6、静态导入( import static) 7、元数据注解(Annotation) 8、内省(Introspect) |
Jdk 6 | 2006-04 | 2006年12月发布。引入了一个支持脚本引擎的新框架、UI的增强、对WebService支持的增强(JAX-WS2.0和JAXB2.0)、一系列新的安全相关的增强、JDBC4.0、Compiler API、通用的Annotations支持。 引入的新特性包括: 1、Web服务元数据 2、脚本语言支持 3、JTable的排序和过滤 4、更简单,更强大的JAX-WS 5、轻量级Http Server 6、嵌入式数据库 Derby |
Jdk 7 | 2011-07-28 | 2011年7月28日Oracle公司发布,引入了二进制整数、支持字符串的switch语句、菱形语法、多异常捕捉、自动关闭资源的try语句等新特性。 引入的新特性包括: 1、switch 语句支持 String 2、泛型对象类型推断 3、catch 多个类型异常 4、支持动态语言; 5、改进泛型类型可变参数 6、语法上支持集合而不一定是数组 7、新增取环境信息的工具方法 8、boolean类型反转:空指针安全,参与位运算 9、char间的equals 10、安全的加减乘除 11、map集合支持并发请求 12、引入Java NIO.2开发包; 13、字面值中使用下划线 14、null值得自动处理. |
Jdk 8 | 2014-03-18 | 2014年3月18日,oracle公司发布了Java1.8,带来了全新的Lambda表达式,函数式接口、Lambda 表达式、集合的流式操作、注解的更新、安全性的增强、IO\NIO 的改进、完善的全球化功能等。 引入的新特性包括: 1、Lambda表达式 2、管道和流 3、新的日期和时间 API 4、默认的方法; 5、类型注解: 6、Nashorn javascript引擎; 7、并行累加器; 8、并行操作 9、内存错误移除 |
Jdk 9 | 2014-09-21 | 引入的新特性包括: 1、Jigsaw 项目; 2、模块化源码 3、简化进程API 4、轻量级 JSON API 5、时间和货币的API 6、改善锁争用机制 7、代码分段缓存 8、智能Java编译, 第二阶段 9、HTTP 2.0客户端 10、Java的REPL实现 |
Jdk 10 | 2018-03-14 | 引入的新特性包括: 1、局部变量类型推断 2、将JDK多存储库合并为单储存库 3、垃圾回收接口 4、并行Full GC 的G1 5、应用数据共享 6、线程局部管控 7、移除Native-Header Generation Tool (javah) 8、Unicode 标签扩展 9、备用内存设备上分配堆内存 10、基于实验JAVA 的JIT 编译器 11、Root 证书 12、基于时间的版本控制 |
Jdk 11 | 2018-09-26 | 引入的新特性包括: 1、字符串加强 2、HttClient Api 3、用于 Lambda 参数的局部变量语法 4、ZGC (并发回收的策略) |
Jdk 12 | 2019-03-20 | 引入的新特性包括: 1、Switch Expressions 2、Shenandoah GC (GC 算法) |
Jdk 13 | 2019-09-17 | 引入的新特性包括: 1、switch优化更新 2、文本块升级 3、重新实现旧版套接字API 4、核心库/java.util中:I18N 5、增加ZGC以将未使用的堆内存返回给操作系统 |
Jdk 14 | 2020-03-17 | 引入的新特性包括: 1、switch优化变更为最终版 2、垃圾回收相(删除cms垃圾收集器;弃用 ParallelScavenge + SerialOld GC 的垃圾回收算法组合;将 zgc 垃圾回收器移植到 macOS 和 windows 平台) 3、instanceof的模式匹配(预览版) 4、删除了安全库java.security.acl API 5、货币格式(优化) 6、友好的空指针异常 7、外部存储器API(孵化) |
Jdk 15 | 2020-09-15 | 1、数据签名算法(EdDSA) 2、封闭类(预览特性) 3、隐藏类 4、移除了 Nashorn JavaScript 脚本引擎、APIs,以及 jjs 工具 5、重新实现了老的 DatagramSocket API 接口 6、准备禁用和废除偏向锁 7、模式匹配(第二次预览) 8、ZGC:一个可伸缩、低延迟的垃圾回收器 9、文本块 10、Shenandoah:一个低停顿时间的垃圾回收器 11、移除了Solaris和SPARC端口 12、外存访问API(二次孵化) 13、Records(第二次预览) 14、废除RMI激活,以便在将来进行删除 |
Jdk 16 | 2021-03-16 | 1、Vector API(孵化器) 2、启用C++14语言功能 3、从Mercurial迁移到Git 4、迁移到GitHub 5、ZGC:并发线程堆栈处理 6、Unix域套接字通道 7、Alpine Linux端口 8、弹性元空间 9、Windows/Aarch64端口 10、外链API(孵化器) 11、基于值的类的警告 12、打包工具 13、外内存访问API(第三孵化器) 14、Instanceof的模式匹配 15、记录 16、默认情况下强封装JDK内部 17、密封类(第二次预览) |
Jdk 17 | 2021-09-14 | 1、恢复始终严格的浮点语义 2、增强的伪随机数生成器 3、新的macOS渲染管道 4、支持macOS Aarch64 5、删除已弃用的Applet API 6、更强大的封装JDK内部元素 7、swith的类型匹配(预览) 8、删除远程方法调用激活机制 9、密封类(转正) 10、删除实验性的AOT和JIT编译器 11、弃用安全管理器以进行删除 12、外部函数和内存API(孵化) 13、Vector API(第二次孵化) 14、特定于上下文的反序列化过滤器 |
Jdk 18 | 2022-3-22 | 1、默认为UTF-8字符编码 2、简单的网络服务器 3、Java API文档中的代码片段 4、使用方法句柄重新实现核心反射 5、Vector API(三次孵化) 6、互联网地址解析SPI 7、Foreign Function & Memory API(二次孵化) 8、swith模式匹配(二次预览) 9、弃用完成删除 |
Jdk 19 | 2022-9-20 | 1、记录模式(预览) 2、Linux/RISC-V移植 3、外部函数和内存API(预览) 4、虚拟现成(预览) 5、Vector API(四次孵化) 6、swith模式匹配(三次预览) 7、结构化并发 |
Jdk 20 | 2023-03-21 | 1、作用域值(Scoped Values,孵化阶段) 2、记录模式(Record Patterns,第二轮预览) 3、switch的模式匹配(Pattern Matching for swith,第四轮预览) 4、外部函数域内存API(Foreign Function & Memory API,第二轮预览) 5、虚拟线程(Virtual Threads,第二轮预览) 6、结构化并发(Structured Concurrency,第二轮孵化) 7、Vector API(第五轮孵化) |
Jdk 21 | 2023-9-19 | 1、虚拟线程 2、顺序集合 3、记录类型的模式 4、switch的模式匹配 5、分代式ZGC 6、废弃Windows 32位版本 7、未命名类和实例main方法 8、字符串模板 9、未命名模式和变量 10、外部方法和内存API 11、Vector API 12、分代式Shenandoah |
2.2、JDK版本LTS
LTS是企业中使用的JDK版本长期支持版本。目前的LTS版本有:JDK8、jdk8、jdk11、jdk17、jdk21
jdk企业中用的最多版本是jdk8、jdk17、jdk21
3、下载JDK(含JRE)【windows版本与linux版本】
3.1下载JDK
oracle官网:https://www.oracle.com/【注释:360急速浏览器点击菜单可能无反应,建议用edge】
点击products,点击Java
点击download Java
就到了java download页面
【linux版本下载】
点击linux
ARM64 Compressed Archive:压缩存档(通常是 .tar.gz 或 .tar.xz 格式),ARM64 架构的处理器
ARM64 RPM Package:RPM 软件包(适用于基于 RPM 的 Linux 发行版,如 Fedora、openSUSE、CentOS 等),ARM64 架构的处理器
x64 Compressed Archive:压缩存档(通常是 .tar.gz 或 .tar.xz 格式),适用于 x86_64 架构的处理器,也就是常见的 64 位 Intel 或 AMD 处理器。【centos用这个】
x64 Debian Package:Debian 软件包(.deb 格式),适用于 x86_64 架构的处理器。
x64 RPM Package:RPM 软件包(适用于基于 RPM 的 Linux 发行版,如 Fedora、openSUSE、CentOS 等)。同样是 x86_64 架构的处理器。
【windows版本下载】
点击windows
有3个版本,第一个是压缩版,解压就可以使用,但是需要自己配置一些东西,不建议。
第二个是exe安装版本,一般都用这个,建议下载这个。
第三个是msi安装版本,其实也exe差不多,基本一样,这是windows的安装程序。
点击后面的链接即可下载完成
就下载好了
【其他版本下载】
如果想要获得jdk其他版本的。点击Java archive
详细网址:https://www.oracle.com/java/technologies/downloads/archive/
往下拉,就可以看到java的所有版本了。这里是java se的所有jdk版本
比如下载jdk11
点击jdk11,这就是jdk11下载页面
往下拉,就可以看到jdk11最新的版本是jdk 11.0.18
在下面找到windows的,installer是exe的安装包,compressed archive是压缩包。点击就可以下来了。
注意:这样的下载需要登录oracel账号,详情见下面说明
下载说明:
从jdk 1.1到jdk16,下载是这种样式的,download里面是文件类型。点击下载,这种需要登录oracle账号。否则不能下载
点击下载包会提示
然后登录oracle账号,否则不能下载
登录了账号后就可以下载了
从jdk 17之后,下载是这种样式的,download里面是连接地址。点击下载,就可以直接下载了,不用登录oracle账号
就直接下载好了
jdk所有下载界面如下:
jdk 1.1
说明:jdk 1.1的最新版本是jdk 1.1.8_16。但是jdk 1.1.8_16只支持solaris,不支持windows,支持windows的最新版本是jdk 1.1.8_010。jdk 1.1的windows安装包只有一个exe
jdk 1.2
说明:jdk 1.2的最新版本是jdk 1.2.2_017。jdk 1.2的windows安装包只有一个exe
jdk 1.3
说明:jdk 1.3的最新版本是jdk 1.3.1_29。但是jdk 1.3.1_29只支持solaris,不支持windows,支持windows的最新版本是jdk 1.3.1_28 Vintage Windows。这个包是在jdk 1.3.1_28中也不含windows,所以做了一个复古windows包Vintage Windows
jdk 1.3的windows安装包只有一个exe
jdk 1.4
说明:jdk 1.4的最新版本是jdk 1.4.2_30。但是jdk 1.4.2_30只支持solaris,不支持windows,支持windows的最新版本是jdk 1.4.2_19。
jdk 1.4开始支持多种windows安装包
ia64是Intel Itanium 架构的 64 位处理器,我们的电脑基本都是x86或x64(x64是从x86演变来的)的,所以不要ia64的exe包
i586 是指 Intel x86 架构,也称为 Pentium 架构。是早期的 32 位处理器架构,x64 的处理器是从x86演变而来的,支持x86,jdk 1.4目前还不支持x64的64位系统
i586的包有两个Offline是离线安装包,Online是在线安装包
jdk 5
说明:jdk 5的最新版本是jdk 5.0u22
amd64是amd架构,我们电脑常用的都是intel的架构,这个包不要。
有两个Offline是离线安装包,Online是在线安装包
jdk 6
说明:jdk 6的最新版本是jdk 6u45
ia64不要。jdk 6支持两种windows安装包,x86和x64
jdk 6开始支持intel x64系统了
jdk 7
说明:jdk 7最新版本是jdk 7u80,windows有两个安装包x86是32位的,x64是64位的
jdk 8
说明:jdk 8最新版本是jdk 8u361,windows有两个安装包x86是32位的,x64是64位的
jdk 9
说明:jdk 9的最新版本是jdk 9.0.4,jdk 9开始windows只提供一个x64的exe安装包,jdk 9以后不提供x86的安装包了。
jdk 10
说明:jdk 10的最新版本是jdk 10.0.2,jdk 10也是只提供一个windows x64的安装包,不提供x86安装包
jdk 11
说明:jdk 11的最新版本是jdk 11.0.18,jdk 11开始后提供压缩包
installer是exe安装包
compressed archive是压缩包
jdk 12
说明:jdk 12的最新版本是jdk 12.0.2。jdk 12的exe是安装包,zip是压缩包
jdk 13
说明:jdk 13的最新版本是jdk 13.0.2。jdk 13的Installer是安装包,compressed archive是压缩包
jdk 14
说明:jdk 14的最新版本是jdk 14.0.2。jdk 14的Installer是安装包,compressed archive是压缩包
jdk 15
说明:jdk 15的最新版本是jdk 15.0.2。jdk 15的Installer是安装包,compressed archive是压缩包
jdk 16
说明:jdk 16的最新版本是jdk 16.0.2。jdk 16的Installer是安装包,compressed archive是压缩包
jdk 17
说明:jdk 17的最新版本是jdk 17.0.7。从jdk 17开始下载方式为3种:compressed archive为压缩包,installer为exe安装包,MSI Installer为msi安装包。
jdk 17以后download里面不再是文件,而是地址。从jdk 17以后下载,不用登录oracle账号,也可以下载jdk了
jdk 18
说明:jdk 18的最新版本号是jdk 18.0.2.1。jdk 18下载方式为:compressed archive为压缩包,installer为exe安装包,MSI Installer为msi安装包。
jdk 19
说明:jdk 19的最新版本号是jdk 19.0.2。jdk 19下载方式为:compressed archive为压缩包,installer为exe安装包,MSI Installer为msi安装包。
jdk 20
说明:jdk 20的最新版本号是jdk 20.0.1。jdk 20下载方式为:compressed archive为压缩包,installer为exe安装包,MSI Installer为msi安装包。
4、JDK安装
4.1 JDK安装【Windows】
右击,以管理员运行
点击下一步
点击更改,更改路径
选择要安装的路径,点击确定
选择好路径后,点击下一步
安装中
点击关闭,安装完成
找到安装的路径,复制地址:D:\Program Files\Java\jdk-14.0.1
右击电脑,点击属性,点击高级系统设置
选择到高级页面,点击环境变量
在系统变量下点击新建
添加JAVA_HOME变量(输入变量名和变量值),点击确定
继续新建个系统变量
添加CLASSPATH变量(输入变量名),变量值中输入【.;%JAVA_HOME%\lib】(建议直接复制【】里面的内容),点击确定
在系统变量中找到path变量,点击编辑或双击
点击新建
输入【%JAVA_HOME%\bin】,点击确定。(注意:win7中用户输入【;%JAVA_HOME%\bin】,注意前面多个分号)
点击确定
点击确定
运行,输入cmd,点击确定
输入java -version,点击enter,可以看到安装的jdk的版本14.0.1
能运行成功版本号,说明jdk安装成功。
输入java
输入javac
4.2 JDK安装【Centos】
centos安装jdk17
1、离线包安装
使用tar.gz包安装
在usr目录下新建java文件夹
mkdir java
进入java文件夹:cd java
将压缩文件上传到java文件夹下【文件太大,rz上传会出错,用工具上传文件。】
解压命令tar -zxvf jdk-17_linux-x64_bin.tar.gz
解压后就看到有jdk文件夹了
配置环境变量
vi /etc/profile
将以下信息添加到配置文件最后面
export JAVA_HOME=/usr/java/jdk-17.0.12
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
保存退出
刷新命令或者重启机器(刷新就可以了,不用重启)
刷新命令source /etc/profile
重启机器shutdown -r now
这里刷新命令
查看jdk版本
命令:java -version
出现版本信息说明jdk安装完成。
2、在线安装【tar.gz包安装】
打开oracle官网:https://www.oracle.com/cn
找到jdk17的linux包地址。找tar.gz包,使用x64架构的。
下载地址:https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
下载tar.gz包。命令:wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
tar.gz包下载成功
说明:如果没有wget命令,需要安装wget。命令:yum install wget
解压命令tar -zxvf jdk-17_linux-x64_bin.tar.gz
解压后就看到有jdk文件夹了
配置环境变量
vi /etc/profile
将以下信息添加到配置文件最后面
export JAVA_HOME=/usr/java/jdk-17.0.12
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
保存退出
刷新命令或者重启机器(刷新就可以了,不用重启)
刷新命令source /etc/profile
重启机器shutdown -r now
这里刷新命令
查看jdk版本
命令:java -version
出现版本信息说明jdk安装完成。
4.3 JDK安装【Ubuntu】
ubuntu安装JDK:
进入对应路径下,这里以root为例:
进入root,创建一个java文件夹
把下载的jdk包上传到java路径下
运行命令安装
dpkg -i jdk-14.0.1_linux-x64_bin.deb
报错:
dpkg frontend lock is locked by another process
解决方法:
重启服务器
运行下面命令解锁
rm /var/lib/dpkg/lock
通过下面命令查看是否已经解锁
dpkg --configure -a
这样说明没解锁
这样说明解锁了
再运行命令安装
dpkg -i jdk-14.0.1_linux-x64_bin.deb
这样就安装好了
通过命令找到安装位置
whereis jvm
安装路径在/usr/lib/jvm
设置环境变量,其中JAVA_HOME为上一步查询的位置
export JAVA_HOME=/usr/lib/jvm/jdk-14.0.1
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib
使用命令在profile中添加
vim /etc/profile
重启系统reboot,然后检查java -version,有版本信息输出表示安装成功
5、JDK文档下载
【jdk17文档下载】
打开oracle官网,点击产品-Java
拉到下方,长到Java SE
点击立即下载Java或者Oracle JDK,这两个到同一个连接
在下载jdk页面下方有文档下载,点击documentation download
点击jdk-17.0.10_doc-all.zip
勾选,点击download jdk-17.0.10_doc-all.zip
下载完成