关于JDK一些概念和JDK的安装配置(Linux/Windows适用)

前言

Java的开发环境配置其实并不复杂,也是下载安装-环境变量-终端测试版本这个过程。问题在于Java有巨多的不好辨析的概念,如OpenJDK,OracleJDk,JavaSE,JavsEE,JavaME等等。其实它们理解起来也不复杂。

参考

1.JDK这么多名字?有什么区别?

事情的渊源还得从Java发展历史说起。简单来说,以前Java是Sun公司管的,后来Orcale公司接管了Java,并继续更新Java,Oracle公司发行的Java就被称为OracleJDK,再后来,Oracle公司开源了Java,建立了OpenJDK项目,这个项目也就是后来的OpenJDK。也就是说OracleJDK和OpenJDK是一家公司的,它们殊途同归,至少在代码层面上它们的差别微乎其微。较大的差别在许可证:

OpenJDK根据许可证GPL v2发布
OracleJDK根据Oracle二进制代码许可协议获得许可。

OpenJDK项目首页
OpenJDK下载页
OracleJDK首页

后来,更多的公司参与了OpenJDK的维护中,各大互联网公司也发布了有自己商业标准的JDK,如下:

Build LTS 宽松式许可证 TCK 测试 未修改上游的构建 提供商业支持
AdoptOpenJDK Yes Yes No 可选 可选(IBM)
Alibaba Dragonwell Yes Yes Yes No No
Amazon Corretto Yes Yes Yes No 可选 (on AWS)
Azul Zulu Yes Yes Yes No 可选
BellSoft Liberica JDK Yes Yes Yes No 可选
Huawei bisheng JDK Yes Yes Yes No No
IBM Java SDK Yes No Yes No Yes
Microsoft Build of OpenJDK Yes Yes Yes No No (beta)
ojdkbuild Yes Yes No Yes No
OpenLogic OpenJDK Yes Yes Yes No 可选
Oracle GraalVM Community Edition No Yes Yes No No
Oracle GraalVM Enterprise Edition Yes No Yes No Yes
Oracle Java SE Yes No Yes No Yes
Oracle OpenJDK No Yes Yes Yes No
Red Hat build of OpenJDK Yes Yes Yes No Yes
Tencent Kona Yes Yes Yes No No
SAP SapMachine Yes Yes Yes No 可选 (for SAP products)

LTS:"Long Term Support"的简写,即长期支持版本
TCK:OpenJDK项目提供的一种测试,其实不怎么重要

总而言之,不管什么JDK,某种程度上都可以说是OpenJDK项目衍生出来的,只是它们在协议,接口等等方面有些许差别。

2.JavaEE JavaSE JavaME各是什么?

JavaSE : Java Standard Edition 的缩写,即Java标准版本,俗称JDK
JavaEE : Java Platform Enterprise Edition 的缩写,即Java 平台企业版,在JavaSE上添加了一套接口和标准,多用于企业级开发,包括web开发。
JavaME : Java Micro Edition,即Java微型版本,是JavaSE的删减版本,多用于移动设备如手机,机顶盒开发。

扫描二维码关注公众号,回复: 16801353 查看本文章

3.怎么选JDK?

不建议直接用原版的OpenJDK。

并不是上面表格中Yes越多越好

个人推荐以有对应操作系统安装包的优先,如debian系统的.deb包等等,主要原因在于使用安装包便于卸载配置等,并且有些安装包会替你设置环境变量(开箱即用!),其次,部分Java应用程式通过检测注册表来检测Java的位置,使用安装包会有极大的简便性,

最终还是根据个人的需求选,如架构,需求的JDK版本。Alibaba的DragonWell就只有JDK8和JDK11。
我个人比较推荐BellSoft的JDK(Full版本),AdoptiumJDK,AmazonJDK,排名即推荐程度。它们共同特征为:安装包提供,JDK版本多,国内下载快。

4.JDK安装和配置

以BellSoftJDK为例子

Windows

下载官网的msi安装包,进行安装。

之后进行环境配置(BellSoft的JDK会直接帮你添加环境变量,如果不嫌麻烦可以不管,我这里选择直接删掉)
在这里插入图片描述

在系统变量中新建JAVA_HOME,全大写,一些软件默认通过JAVA_HOME环境变量获得JDK,如果你有多个JDK,可以像我这样配置,这样只需要很简单的更改就可以切换全局JDK。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

记得在Path里声明以下,这个Path以后就不用动了,直接操作JAVA_HOME
在这里插入图片描述
之后还是cmd检测一下:
在这里插入图片描述

Linux

如果有安装包就直接安装包,没有就找个地方解压一下,反正最后要得到一个文件夹。

如果是使用安装包安装,可以直接跳过注册update-alter这一步,如果是zip安装,则需要手动注册一下对应jdk的update-alter。参考文章

update-alternatives --install /usr/bin/java java /example/jdk-1.8/bin/java 100 ##最后面的数字大小表示优先级
update-alternatives --install /usr/bin/java java /example/jdk-11/bin/java 200 ##倒数第二个参数是JDK目录
update-alternatives --install /usr/bin/java java /example/jdk-17/bin/java 300 ##其它的不用动

update-alternatives --install /usr/bin/javac javac /example/jdk-1.8/bin/javac 100
update-alternatives --install /usr/bin/java javac /example/jdk-11/bin/javac 200
update-alternatives --install /usr/bin/javac javac /example/jdk-17/bin/javac 300

无论如何,都可以使用update-alternatives --config javacupdate-alternatives --config java快捷切换编译器:
在这里插入图片描述之后还可以添加以下环境变量,在~/.zshrc~/.bashrc都可以,不建议直接配全局。
需要注意的是,这个环境变量不会影响update-alternatives --config javac的选项,你选了jdk8,编译器输出还是jdk8,不会因为是jdk17的java_home改变。
请添加图片描述注意一定要有这个/

如果比较有手法,还可以在.zshrc里使用alias缩写快捷切换java和javac版本。
在这里插入图片描述

alias changejdk8="echo 2 | sudo update-alternatives --config java && echo 2 | sudo update-alternatives --config javac && java -version && javac -version"

题外话:VSCode配置

VSCode的Java插件有时候不吃JDK,这个时候需要手动配置一下:

Linux和Windows是一样的

在这里插入图片描述
如果有多个JDK可以这样配置,其中标注为default的是默认使用JDK

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_74075298/article/details/132562410