Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐

Linux、macOS上如何安装多版本JDK呢?即顾及Springboot,又兼顾Minecraft,一面工作,一面生活娱乐。

JDK

JDK,全称:Java Development Kit,也就是Java开发人员发布的免费软件开发工具包。JDK一般包括JRE(Java Runtime Environment),所以我们需要使用Java环境,习惯性叫配置JDK环境

一般,我们需要用到基于Java虚拟机的操作服务时,需要有JDK的环境,这样的Java有两个特点(Write once, run anywhere):

  • 易于移植:只需要有Java的虚拟机(JDK)环境,即可运行Java程序。
  • 需要平台有Java虚拟机支持:Java程序有所限制,需要有Java环境支持

大部分程序开发者,或者普通用户,都有了解过JDK的配置。但是:

  • Linux服务器上怎么配置JDK呢?
  • 能否实现多版本JDK同时配置安装呢?

本次教程,就在Linux(以腾讯云轻量应用服务器演示)上安装多版本JDK,并使用Jenv管理JDK。

安装思路

传统安装(或者说常规安装),是到环境变量文件里,追加JAVA_HOME文件,然后重载配置后,JDK就可以使用了:

Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
JDK

本文的方法,也差不多,但是在常规安装的方法后,追加Jenv的配置,实现JDK的切换:

Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
Jenv管理JDK

JDK选择

在配置JDK前,我们先来看看如何选择JDK。JDK的版本分支很多,大体上分为:

  • OpenJDK:开源的JDK
  • OracleJDK:Oracle公司开发的JDK

这个其实是看个人喜好,但是如果问我,我更推荐OpenJDK,避免项目因为版权问题而引发纠纷(每个程序员,都有个项目做大做强的梦……)

OpenJDK

最开始,JDK由SUN公司开发,但是后来被Oracle公司收购,现在的OracleJDK,其License 协议已经从BCL换成了OTN,这就意味着,你不能在生产环境使用这个版本了(可能要被反薅了🥲)。

不过呢?早在2006 年的 Java One 大会上,Sun公司(那时候还没被Oracle收购)就宣布Java技术的开源,随之诞生了OpenJDK,并在随着Google的Android全面使用OpenJDK开始,OpenJDK使用的人数越来越多。

目前,OpenJDK基本满足所有开发的需求和需要,小部分需要使用OracleJDK的包时,基本也可以通过引用外部包和自己编写依赖包解决(如:sun包下的Base64)。所以,目前使用OpenJDK,不管作为开发还是生产环境,都是不错的选择。

JDK版本选择

JDK的版本怎么选择呢?一般而言,JDK的版本并不是越高版本越好。JDK一般是一个稳定长期支持版本,然后经过两个快速开发版本迭代,再出一个稳定长期版本。比如:JDK8发布,JDK9、JDK10就是开发版本,之后的JDK11又是一个稳定长期支持版本。

所以,通常情况下,我们使用稳定长期支持版本比较好,如:JDK8、JDK11.

ZuluJDK

确定使用OpenJDK和JDK的版本,然后下载呢?这边我推荐ZuluJDK(一个OpenJDK的发行版本)

Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
ZuluJDK

使用ZuluJDK的优点:

  • 支持ARM/X86架构设备
  • 支持Windows/Linux/macOS平台
  • 支持JDK6-JDK Latest版本
  • 支持配置JavaFx(Java的图形包)

当然,如果你需要Oracle JDK,也可以去Oracle官网下载:https://www.oracle.com/java/technologies/javase-downloads.html

配置JDK

第一次使用Linux的用户(尤其是Linux服务器用户)或者是macOS用户,往往是直接用软件项目管理器安装:

# Ubuntu/Debian
sudo apt-get install default-jdk
# Centos
yum install default-jdk

但是这样安装的OpenJDK,版本不好切换,且一般为JDK最新版本(现在是JDK16,你就无法安装JDK8或者11了嗷)。所以,建议自己手动配置JAVA_HOME。

JAVA_HOME

和Windows上的配置一样,我们需要配置JAVA_HOME,进而配置JDK环境。很简单。

1. 下载JDK

首先,选择我们要配置的JDK(这里的JDK是作为系统默认JDK),比如,这里为配置默认JDK为JDK16,因为我的Linux是腾讯云轻量应用服务器的Debian,所以选择x86版本的JDK

Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
x86版本JDK16

我们直接复制下载地址,使用终端连接服务器,之后进行快速设置:

# 进入用户目录
cd ~
# 新建一个文件夹,用于存放JDK(方便管理)
mkdir myEnvironment
# 进入这个文件夹
cd myEnvironment
# 下载JDK 16
wget "https://cdn.azul.com/zulu/bin/zulu16.30.15-ca-fx-jdk16.0.1-linux_x64.tar.gz"
Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
下载JDK

2. 释放文件

下载好后,是一个压缩包文件,我们需要解压:

Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
下载好后文件
# 解压文件
tar -xf zulu16.30.15-ca-fx-jdk16.0.1-linux_x64.tar.gz

为了更方便配置文件,且更让用户能看懂这个是什么文件:),我们重命名:

# 重命名一长串名称的文件夹名为 ZuluJDK16
mv zulu16.30.15-ca-fx-jdk16.0.1-linux_x64 ZuluJDK16
# 删除最开始的压缩包,解决Linux服务器空间
rm -rf zulu16.30.15-ca-fx-jdk16.0.1-linux_x64.tar.gz 
Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
最后结果

现在,前期准备都完成了。准备开始最后一步

3. 环境变量

首先,明确我们JDK的位置:

Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
JDK位置

比如:我的是:/root/myEnvironment/ZuluJDK16

现在,我们进行最后一步,也就是配置JDK到环境变量内。根据你的Shell版本,进行选择:

# Bash Shell用户
vim ~/.bashrc
# ZSH Shell用户
vim ~/.zshrc

P.S:一般Linux默认使用Bash作为默认Shell

追加内容:

# Java_Home记得改成自己的嗷
Java_Home=/root/myEnvironment/ZuluJDK16
CLASSPATH=$Java_Home/lib/
PATH=$PATH:$Java_Home/bin/
export PATH Java_Home CLASSSPATH
Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
添加内容

之后,按ESC,在输入:wq回车保存。最后,终端内输入:

# Bash用户
source ~/.bashrc
# ZSH用户
source ~/.zshrc
Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
重载配置

之后,就可以使用我们的(默认)JDK了:

java -version
Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
JDK

当然,这样只是安装了一个版本JDK,如何安装和配置更多版本的JDK呢?

多版本JDK管理

安装了一个版本的JDK,但是,有时候却因为JDK版本不兼容,导致Springboot打包项目无法启动:

Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
JDK版本不兼容

如何安装多版本的JDK呢?

方法很多,我推荐用jenv管理JDK。

1. Jenv

Jenv项目地址:https://www.jenv.be
按照官网的解释:
jEnv is a command line tool to help you forget how to set the JAVA_HOME environment variable
简单地说:使用一条命令可以轻松配置JAVA_HOME到环境变量。

2. 如何配置

Jenv的配置十分简单,简单地说:下载Jenv配置到环境变量重载环境变量

①下载jenv

方法很多,你可以直接下载Jenv的源码,或者直接用Git去同步源码,比如:

# 使用Git下载jenv源码到用户目录下的.jenv文件夹
git clone https://github.com/jenv/jenv.git ~/.jenv
Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
jenv下载到本地

如果你的服务器无法连接Git,可以试试Gitee的同步源,或者到jenv的项目地址,手动下载Jenv并上传到服务器。

配置到环境变量

之后,我们到环境变量内配置jenv即可:

# Bash Shell用户
vim ~/.bashrc
# ZSH Shell用户
vim ~/.zshrc

并添加:

# Jenv
export PATH="$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"
Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
追加内容

记得按保存嗷。

重载环境变量

最后,我们重载环境变量

# Bash Shell用户
source ~/.bashrc
# ZSH Shell用户
source ~/.zshrc
Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
jenv载入成功

现在jenv就可以使用了:

jenv help
Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
jenv-帮助

接下来,我们重点看看jenv的使用。

Jenv具体使用

Jenv的使用很简单,这边我们讲讲如何Jenv添加新的JDK版本,并切换和管理JDK。

1. 新增JDK

利用上文配置JDK16的方法,我下载了JDK11:

Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
JDK11
Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
下载到服务器

对应的服务器存储地址是:/root/myEnvironment/ZuluJDK11

而我们添加这个JDK也很简单:

jenv add /root/myEnvironment/ZuluJDK11
Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
添加JDK版本

当然,利用同样的方法,加入JDK16:

Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
添加JDK版本

这样,我们就把需要的JDK版本都已经安装好了。只需要切换JDK版本即可。

2. 切换JDK

切换的方法很简单,首先看看当前安装的JDK版本:

jenv versions
Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
查看已经添加的JDK版本

如果没有你想要的JDK版本,按上一步的方法安装即可。

这个时候,我们用的还是默认JDK(system (set by /root/.jenv/version)),我们要切换到JDK11只需要:

jenv local 11

这个时候,这个目录下使用的JDK就是JDK11了:

Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
jenv

P.S:如果你需要全局JDK,可以用:

jenv global 11

3. 管理JDK

有时候,jenv的add扫描,扫描的内容过多怎么办呢?比如,我只添加了JDK11和JDK16,缺有这么多版本JDK:

Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
多余版本

这个时候也很简单,使用remove命令即可:

Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
使用remove命令

END

Linux上配置JDK和多版本JDK切换,就是这么地简单。说实话,本篇文章技术含量偏低,主要就是讲解Jevn的使用。另外,大家也可以看到我腾讯云轻量应用服务器使用的是Oh-my-zsh配置文件的ZSH Shell,它可以补充jenv的代码,有机会,下次讲解如何在腾讯云轻量应用服务器上配置ZSH嗷~

Linux如何优雅配置多版本JDK?JDK开发环境切换不再繁琐
ZSH自动填充jenv

作者:Mintimate

Mintimate’s Blog:https://www.mintimate.cn

本文来自腾讯云计算社区,转载请注明出处:https://computeinit.com/archives/4085

发表评论

登录后才能评论
交流群