likes
comments
collection
share

Linux使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

作者站长头像
站长
· 阅读数 7

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使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

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

Linux使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

教程同步

本教程同步发布至:

JDK选择

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

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

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

其中,软件包管理器的JDK,也属于OpenJDK的一种。

OpenJDK

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

JDK17又换了许可证了。此 Oracle JDK 许可证允许所有用户免费使用,甚至可以用于商业和生产用途。只要不收费,再分发是允许的。不过OpeJDK还是一直免费。

不过呢?早在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。

Spring framework 6 和Spring Boot 3 都将基于JAVA 17,现在看,可能是使用JDK8或JDK17比较好。

ZuluJDK

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

Linux使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

使用ZuluJDK的优点:

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

当然,如果你需要Oracle JDK,也可以去Oracle官网下载:www.oracle.com/java/techno…

辅助视频

嘿嘿,顺手,做了个教程视频:

www.bilibili.com/video/BV1Yw…

配置JDK

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

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

但是这样安装的OpenJDK,版本不好控制,无法安装上文体积的ZuluJDK

所以,建议自己手动配置JAVA_HOME。

当然,如果你要卸载软件包管理器的JDK,可以:

# Ubuntu/Debian
sudo apt-get purge "java*"
# CentOS
rpm -e --nodeps `rpm -qa | grep java`

JAVA_HOME

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

1. 下载JDK

首先,选择我们要配置的JDK(这里的JDK是作为系统默认JDK),比如,这里我的x86架构服务器配置:

Linux使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

  • tar.gz: JDK压缩归档文件,解压后需要直接配置到环境变量。
  • deb: 软件包管理器安装包,适用于Debian系。
  • rpm:软件包管理器安装包,适用于CentOS系。

本次配置JDK,就使用tar.gz包进行配置了。

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

# 进入用户目录
cd ~
# 新建一个文件夹,用于存放JDK(方便管理)
mkdir myEnvironment
# 进入这个文件夹
cd myEnvironment
# 下载JDK 17
wget "https://cdn.azul.com/zulu/bin/zulu17.32.13-ca-fx-jdk17.0.2-linux_x64.tar.gz"

Linux使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

2. 释放文件

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

# 解压文件
tar -xf zulu17.32.13-ca-fx-jdk17.0.2-linux_x64.tar.gz

Linux使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

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

# 重命名一长串名称的文件夹名为 ZuluJDK16
mv zulu17.32.13-ca-fx-jdk17.0.2-linux_x64 ZuluJDK17
# 删除最开始的压缩包,解决Linux服务器空间
rm -rf zulu17.32.13-ca-fx-jdk17.0.2-linux_x64.tar.gz

Linux使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

现在,前期准备都完成了。准备开始最后一步:配置环境变量

3. 环境变量

首先,明确我们JDK的位置: Linux使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

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

现在,我们进行最后一步,也就是配置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使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

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

# Bash用户
source ~/.bashrc
# ZSH用户
source ~/.zshrc

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

java -version

Linux使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

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

多版本JDK管理

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

Linux使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

如何安装多版本的JDK呢?

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

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到环境变量。

如何配置

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

①下载jenv

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

# 使用Git下载jenv源码到用户目录下的.jenv文件夹
git clone https://github.com/jenv/jenv.git ~/.jenv

Linux使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

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

配置到环境变量

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

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

并添加:

# Jenv
export PATH="$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"

Linux使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

记得按保存嗷。

重载环境变量

最后,我们重载环境变量

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

Linux使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

现在jenv就可以使用了:

jenv help

Linux使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

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

Jenv具体使用

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

1. 新增JDK

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

Linux使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

Linux使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

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

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

jenv add /root/myEnvironment/ZuluJDK11

Linux使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

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

Linux使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

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

2. 切换JDK

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

jenv versions

Linux使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

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

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

jenv local 11

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

Linux使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

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

jenv global 11

3. 管理JDK

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

Linux使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

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

Linux使用Jenv优雅配置多版本JDK,开发环境切换不再繁琐

END

Linux上配置JDK和多版本JDK切换,就是这么地简单。说实话,本篇文章技术含量偏低,主要就是讲解Java配置和Jevn的使用。

不过基础开发工具这个地基一定要打好,后面的高楼才好建。