当前位置: 首页 > 科技观察

Java升级如此之快,如何实现多个版本的灵活切换和管理?

时间:2023-03-12 06:56:32 科技观察

前言这两年Java版本升级频繁,感觉自己刚刚掌握了Java8。写这篇文章的时候,听说了java14的消息,是否是新特性(Java12中的collectors.teeing)。/兼容性的需要,我们可能不得不面对管理多个Java版本的情况。另外,Oracle从Java11开始就更改了用户协议,任何商业使用都是要收费的。写这篇文章的时候,得到了“微软宣布加入OpenJDK”的消息,打不过就选OpenJDK。就G,当你理解了故事之后,你就可以配置单个Java环境变量了。一点技术含量都没有,但是当你需要管理多个Java版本的时候,重复配置环境变量显然是一件很无聊的事情。按照传统的配置方式,我们不能变通。切换Java版本。那么如何轻松管理和使用多个版本的Java呢?多版本Java管理显然我们不是第一个遇到这种困境的人。我知道的现有解决方案有3种:Jabbajenvsdkman本文主要讲解如何使用sdkman来打破我们面临的困境,帮助我们灵活配置和使用Javasdkman简介SDKMAN是一个多软件开发并行版本管理工具大多数基于Unix的系统上的工具包(Java、Groovy、Scala、Kotlin和Ceylon。Ant、Gradle等)。它提供了一个方便的命令行界面(CLI)和API,用于安装、切换、删除和列出候选人。本文主要通过管理Java来讲解sdkman的使用。在类unix平台上安装sdkman非常简单。可以在MacOSX、Linux、WLS、Cygwin、Solaris和FreeBSD上顺利安装,还支持Bash和ZSHshell。只需打开一个新的终端,输入:$curl-s"https://get.sdkman.io"|bash按照相应的命令提示符,完成相应的操作后,继续输入:$source"$HOME/.sdkman/bin/sdkman-init.sh》这里可以验证sdk的安装版本:$sdkversion上图中红框标记的是我当前的sdkman版本。我每次执行sdkversion命令的时候都会检查是否有新的版本。如果要更新,可以输入y。一些系统版本不包括zip和unzip。如果在安装过程中遇到相关错误,可以输入以下命令安装zip并解压$sudoapt-getinstallzipunzip从上面的安装命令可以看出sdkman默认安装路径在$HOME/.sdkman下,我们可以同样自定义安装路径,只需要指定SDKMAN_DIR变量值:$exportSDKMAN_DIR="/usr/local/sdkman"&&curl-s"https://get.sdkman.io"|bash到这里sdkman的安装就结束了。让我们看看如何使用sdkman。使用教程在命令行下学习一个新的小工具。当然你可以查看它的帮助命令。输入:$sdkmanhelp感觉上图是按颜色划分的终于sdkman的使用说明结束了。下面根据上图详细说明教程sdk列表的使用方法。首先,输入:$sdklist绿色标记的是sdkman集成的所有可用的candidates,按回车键,你会看到更多可用的candidates,我们指定candidate,输入:$sdklistjava从上图中可以看到所有的java的可用版本,以及标识符indentifier,以及状态status,我已经安装了java12和11,这些信息作为铺垫,我们可以在sdkman中安装任何内置的软件开发工具包。继续以java为例。sdkinstall回顾sdkmanhelp命令的输出。使用安装命令,我们将从上图中安装最新的Java版本13.0.1.j9。可以看出,绿色标记的内容是list命令结果中的版本值,但报错不可用,输入标识符号即可正常下载。这里需要注意的是,安装完成后,status会编程当前安装的statussdk。在安装多个版本的java时,我们输入以下命令获取当前候选的版本$sdkcurrentjavasdk用于了解当前版本,如果我们要切换到其他版本,可以输入:$sdkusejava12.0.2.j9-adpt注意??:这里也是指定标识符的值sdkdefault如果我们要指定某个版本为默认版本,可以输入:$sdkdefaultjavajdk1.8.0_162.jdk注意??:这里也是指定标识符的值sdkuninstall当我们要卸载某个版本时,我们可以输入:$sdkdefaultjavajdk1.8.0_162.jdk注意??:这里也是指定标识符的值sdkupgrade如果我们要升级一个候选,我们可以输入:$sdkupgradejavasdkflush使用sdkman的时候会逐渐产生很多缓存内容,我们可以输入清理广播消息:$sdkflushbroadcast清理下载的sdk二进制文件(长期使用后清理可以节省很多空间):$sdkflusharchivescleansup临时文件内容:$sdkflushtempsdkman的基本使用已经介绍到这里。其实大可不必为这些命令操心。起不来的时候执行sdkhelp,暂时看看就行了。卸载sdkman如果我们不喜欢sdkman,我们也可以轻松卸载它:$tarzcvf~/sdkman-backup_$(date+%F-%kh%M)。tar.gz-C~/.sdkman$rm-rf~/.sdkman最后打开你的.bashrc,.bash_profile和/或.profile,找到并删除下面几行#THISMUSTBATTHEENDOFTHEFILEFORSDKMANTOWORK!!![[-s"/home/dudette/.sdkman/bin/sdkman-init.sh"]]&&source"/home/dudette/.sdkman/bin/sdkman-init.sh"我使用zshrc,找到.zshrc文件并删除上面的内容到这里。基于Unix系统,介绍了sdkman的安装、使用和下载。你可以试试看。相信很多朋友都用Windows,除了jenv。sdkman和jabba都有针对windows用户的解决方案:sdkmanwindows解决方案在sdkman官网首页也提供了针对windows用户的解决方案。朋友们,您可以找到以下位置进行查看。我看了一下过程,也很简单。Windows电脑,请自行尝试。Soulquest你现在用的Java版本是多少?你有没有关注新版本尝试更多的新功能?你的灯还亮着吗?