当前位置:   article > 正文

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

bellsoft jdk

前言

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,如下:

BuildLTS宽松式许可证TCK 测试未修改上游的构建提供商业支持
AdoptOpenJDKYesYesNo可选可选(IBM)
Alibaba DragonwellYesYesYesNoNo
Amazon CorrettoYesYesYesNo可选 (on AWS)
Azul ZuluYesYesYesNo可选
BellSoft Liberica JDKYesYesYesNo可选
Huawei bisheng JDKYesYesYesNoNo
IBM Java SDKYesNoYesNoYes
Microsoft Build of OpenJDKYesYesYesNoNo (beta)
ojdkbuildYesYesNoYesNo
OpenLogic OpenJDKYesYesYesNo可选
Oracle GraalVM Community EditionNoYesYesNoNo
Oracle GraalVM Enterprise EditionYesNoYesNoYes
Oracle Java SEYesNoYesNoYes
Oracle OpenJDKNoYesYesYesNo
Red Hat build of OpenJDKYesYesYesNoYes
Tencent KonaYesYesYesNoNo
SAP SapMachineYesYesYesNo可选 (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的删减版本,多用于移动设备如手机,机顶盒开发。

3.怎么选JDK?

不建议直接用原版的OpenJDK。

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

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

最终还是根据个人的需求选,如架构,需求的JDK版本。Alibaba的DragonWell就只有JDK8和JDK11。

我个人比较推荐BellSoft的JDK(Full版本),AdoptiumJDK,AmazonJDK,排名即推荐程度。它们共同特征为:安装包提供,JDK版本多,国内下载快。

======== 2024.3.22更新 ========

Bellsoft因为某些原因关闭了一部分JDK的下载,目前只有Standard版本可供下载。除此以外,经过我的长期体验来看,我可以做一些其他的推荐。

如果你对稳定性,性能(其实这个差别不大)有相当的要求,可以选择Corretto,其作为亚马逊官方出产的OpenJDK你大可以相信它的使用体验,并且Corretto同样提供多架构,多操作系统和多版本的支持。

如果你对开源有比较高的要求,可以选择Adoptium,它来自Java开源大户Eclipse,后者甚至把Adoptium的网站都开源在Github上了,同样提供多架构,多操作系统和多版本的支持,但是它的官网下载是直通Github并且跳过个人验证的,意味着你不能使用镜像站进行加速,不过好在清华开源镜像站做了Adoptium的镜像,你可以直接百度找到(清华开源镜像站的支持让Adoptium的下载速度极其可观)。

如果你对JDK组件有一些特别的要求,比如JavaFX,CRaC等,你可以选择Zulu(也只能选这个了,上面两家的JDK都没有这方面的专门版本),Zulu来自azul(JDK社区的长期高质量贡献者),完全有使用和质量的保障,并且Zulu有多个构建版本,如专门集成了JavaFX的版本和同时集成JavaFX和CRaC的版本,同样提供多架构,多操作系统和多版本的支持,下载速度和网页访问速度也并非完全隔绝国内用户,是我个人最推荐的JDK vendor。

================================

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

无论如何,都可以使用update-alternatives --config javacupdate-alternatives --config java快捷切换编译器:
在这里插入图片描述之后还可以添加以下环境变量,打开~/.bashrc文件,向文件中直接加入以下内容。

请添加图片描述注意一定要有这个/

需要注意的是,这个环境变量不会影响update-alternatives --config javac的选项,你选了jdk8,编译器输出还是jdk8,不会因为是jdk17的java_home改变。

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

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

题外话:VSCode配置

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

Linux和Windows是一样的

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

在这里插入图片描述

============ 2024.3.22更新 ============

目前VSCode的Java插件发生了更新,“java.home"属性改名成了"java.jdt.ls.java.home”,言下之意是应该这样配置:
在这里插入图片描述====================================

========== 2024.4.3更新 ==========

抽空查看了一下IDEA的源代码,发现了它检测JDK版本的机制。

首先它会通过调用的方式获取Java版本信息的输出,如对于JDK8会在/lib/rt.jar中读取:

在这里插入图片描述

之后会对返回的字符串进行分析,获取Vendor信息和版本信息,下面的一部分代码可以看到这个实现的过程,最下面一部分可以看到已经在配对一些版本了:

在这里插入图片描述

最后,这是IDEA所能识别(我理解为JetBrains的官方支持或推荐)的JDK版本:

在这里插入图片描述

=========================================================

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/498723
推荐阅读
相关标签
  

闽ICP备14008679号