在眼睛的眨眼中更改全幕环境:与Java的第1部分
#java #法国 #fullstack #environnement

您是顾问Velopper。您为几个客户工作。或者简单地说,您在空闲时间为雇主和一个或多个开源项目工作。

当您从开发项目转到另一个项目时,您当然必须更改所有工具和标识符...

更改git标识符,gnupg签名,ssh壁橱...更不用说您使用的工具的版本:java,nodejs或python的版本。

甚至还有构造工具的配置,它们必须像Maven或NPM一样更改。

从一个上下文到另一个上下文并不容易。

好消息:我已经暴露了几种解决方案来依靠这些需求,我想与您分享我的研究角色!

我建议您以每个提示的几个小目标项目的形式处理此操作。

java的gur vos版本

让我们开始接近拥有几个版本的Java的事实。

请小心我们不会考虑JavaAnté的版本

如果您是Linux Debian或其欺骗之一(尤其是Ubuntu),则在update-alternatives甚至update-java-alternatives等问题中有相当实用的工具。但是,这些解决方案位于一个系统中,我希望在研究中找到跨平台工具

实际上,有很多工具可以找到其不同版本的Java:jEnv甚至Jabba。就我而言,我想专注于一个相当特色的工具:SDKMan

SDKMAN是Apache 2.0许可下的开源软件。这是一个très actif sur GitHub项目。也可以通过le site Open Collective支持金融项目。

sdkman是不同Java版本的管理中心,但也是工具和其他链接技术。

我们还将能够使用SDKMAN收集其不同版本的Maven或Kotlin(我在个人标题上做)。

安装SDKMAN

要使用SDKMAN,您必须具有Linux,Windows(通过WSL)或MacOS系统。也可以将其安装在FreeBSD甚至Solaris上!

sdkman是命令行工具,他需要与您所宣布的命令行解释器进行交互。在这种情况下,他撒谎和zsh。

要安装SDKMAN,打开终端并键入以下命令:

curl -s "https://get.sdkman.io" | bash

Small 免责声明在这种类型的安装上,即使您邀请您充电并咨询https://get.sdkman.io的内容,以了解脚本在盲目地委托给bash之前做什么!你来到ð

根据您使用的命令行解释器,您的.bashrc.zshrc文件将被修改以添加sdkman的sdk命令。

还要注意,SDKMAN将相信您的用户报告的.sdkman Rebutory Rotatory,我们不仅会找到sdk工具,还可以找到Java,Maven或Kotlin的所有安装。

ted加载了您的Java版本

现在安装了SDKMAN,我们将使用它来安装您的Java版本。

要获得SDKMAN可用的Java版本列表,您必须在终端中键入以下命令:

$> sdk list java

SDKMAN提供可用于MSAGE架构的分布列表(您可以在 Multi-Platform Bainary Distributions 中看到MSAGE ABIAULS ici架构。)。

我个人喜欢使用Java.net的OpenJDK的最后一个稳定版本。

在这些行所在的小时下,这是19.0.2-open版本。

如果要安装此版本,则只需在终端中键入以下命令:

$> sdk install java 19.0.2-open
Downloading: java 19.0.2-open
In progress...
######################################################################### 100,0%
Repackaging Java 19.0.2-open...
Done repackaging...
Cleaning up residual files...
Installing: java 19.0.2-open
Done installing!
Do you want java 19.0.2-open to be set as default? (Y/n): Y
Setting java 19.0.2-open as default.

如上图所示,SDKMAN会问您是否要完成此新的紧密版本作为您的Java版本,您需要:Recondez Y提供您的协议。

您可以验证您对以下命令的影响:

$> java -version
openjdk version "19.0.2" 2023-01-17
OpenJDK Runtime Environment (build 19.0.2+7-44)
OpenJDK 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)

安装其他版本的Java

暂时有好处,在我向您展示的内容之后,SDKMAN与Java的旧手动安装相比无能为力。

确切地说,我们现在将看到此工具的最大优势:安装多个版本的Java并将其传递到另一个版本的能力。

要列出可用Java版本的列表,请按照下一章的方式执行以下命令:

$> sdk list java
================================================================================
Available Java Versions for macOS ARM 64bit
================================================================================
 Vendor        | Use | Version      | Dist    | Status     | Identifier
--------------------------------------------------------------------------------
 Corretto      |     | 19.0.2       | amzn    |            | 19.0.2-amzn         
               |     | 19.0.1       | amzn    |            | 19.0.1-amzn         
               |     | 17.0.6       | amzn    |            | 17.0.6-amzn         
               |     | 17.0.5       | amzn    |            | 17.0.5-amzn         
               |     | 11.0.18      | amzn    |            | 11.0.18-amzn        
               |     | 11.0.17      | amzn    |            | 11.0.17-amzn        
               |     | 8.0.362      | amzn    |            | 8.0.362-amzn        
               |     | 8.0.352      | amzn    |            | 8.0.352-amzn        
 Gluon         |     | 22.1.0.1.r17 | gln     |            | 22.1.0.1.r17-gln    
               |     | 22.1.0.1.r11 | gln     |            | 22.1.0.1.r11-gln    
 GraalVM       |     | 22.3.r19     | grl     |            | 22.3.r19-grl        
               |     | 22.3.r17     | grl     |            | 22.3.r17-grl        
               |     | 22.3.r11     | grl     |            | 22.3.r11-grl        
               |     | 22.3.1.r19   | grl     |            | 22.3.1.r19-grl      
               |     | 22.3.1.r17   | grl     |            | 22.3.1.r17-grl      
               |     | 22.3.1.r11   | grl     |            | 22.3.1.r11-grl      
               |     | 22.2.r17     | grl     |            | 22.2.r17-grl        
               |     | 22.2.r11     | grl     |            | 22.2.r11-grl        
               |     | 22.1.0.r17   | grl     |            | 22.1.0.r17-grl      
               |     | 22.1.0.r11   | grl     |            | 22.1.0.r11-grl      
 Java.net      |     | 21.ea.8      | open    |            | 21.ea.8-open        
               |     | 21.ea.7      | open    |            | 21.ea.7-open        
               |     | 21.ea.6      | open    |            | 21.ea.6-open        
               |     | 21.ea.5      | open    |            | 21.ea.5-open        
               |     | 21.ea.4      | open    |            | 21.ea.4-open        
               |     | 20.ea.34     | open    |            | 20.ea.34-open       
               |     | 20.ea.33     | open    |            | 20.ea.33-open       
               |     | 20.ea.32     | open    |            | 20.ea.32-open       
               |     | 20.ea.31     | open    |            | 20.ea.31-open       
               |     | 20.ea.30     | open    |            | 20.ea.30-open       
               | >>> | 19.0.2       | open    | installed  | 19.0.2-open         
               |     | 19.0.1       | open    |            | 19.0.1-open         
 Liberica      |     | 19.0.2.fx    | librca  |            | 19.0.2.fx-librca    
               |     | 19.0.2       | librca  |            | 19.0.2-librca       
               |     | 19.0.1.fx    | librca  |            | 19.0.1.fx-librca    
               |     | 19.0.1       | librca  |            | 19.0.1-librca       
               |     | 17.0.6.fx    | librca  |            | 17.0.6.fx-librca    
               |     | 17.0.6       | librca  |            | 17.0.6-librca       
               |     | 17.0.5.fx    | librca  |            | 17.0.5.fx-librca    
               |     | 17.0.5       | librca  |            | 17.0.5-librca       
               |     | 11.0.18.fx   | librca  |            | 11.0.18.fx-librca   
               |     | 11.0.18      | librca  |            | 11.0.18-librca      
               |     | 11.0.17.fx   | librca  |            | 11.0.17.fx-librca   
               |     | 11.0.17      | librca  |            | 11.0.17-librca      
               |     | 8.0.362.fx   | librca  |            | 8.0.362.fx-librca   
               |     | 8.0.362      | librca  |            | 8.0.362-librca      
               |     | 8.0.352.fx   | librca  |            | 8.0.352.fx-librca   
               |     | 8.0.352      | librca  |            | 8.0.352-librca      
 Liberica NIK  |     | 22.3.r17     | nik     |            | 22.3.r17-nik        
               |     | 22.3.r11     | nik     |            | 22.3.r11-nik        
               |     | 22.3.1.r17   | nik     |            | 22.3.1.r17-nik      
               |     | 22.3.1.r11   | nik     |            | 22.3.1.r11-nik      
               |     | 22.2.r17     | nik     |            | 22.2.r17-nik        
               |     | 22.2.r11     | nik     |            | 22.2.r11-nik
 Microsoft     |     | 17.0.6       | ms      |            | 17.0.6-ms           
               |     | 17.0.5       | ms      |            | 17.0.5-ms           
               |     | 11.0.18      | ms      |            | 11.0.18-ms          
               |     | 11.0.17      | ms      |            | 11.0.17-ms          
 Oracle        |     | 19.0.2       | oracle  |            | 19.0.2-oracle       
               |     | 19.0.1       | oracle  |            | 19.0.1-oracle       
               |     | 17.0.6       | oracle  |            | 17.0.6-oracle       
               |     | 17.0.5       | oracle  |            | 17.0.5-oracle       
 SapMachine    |     | 19.0.2       | sapmchn |            | 19.0.2-sapmchn      
               |     | 19.0.1       | sapmchn |            | 19.0.1-sapmchn      
               |     | 17.0.6       | sapmchn |            | 17.0.6-sapmchn      
               |     | 17.0.5       | sapmchn |            | 17.0.5-sapmchn      
               |     | 11.0.18      | sapmchn |            | 11.0.18-sapmchn     
               |     | 11.0.17      | sapmchn |            | 11.0.17-sapmchn     
 Semeru        |     | 18.0.2       | sem     |            | 18.0.2-sem          
               |     | 17.0.5       | sem     |            | 17.0.5-sem          
               |     | 17.0.4.1     | sem     |            | 17.0.4.1-sem        
               |     | 11.0.17      | sem     |            | 11.0.17-sem         
               |     | 11.0.16.1    | sem     |            | 11.0.16.1-sem       
 Temurin       |     | 19.0.2       | tem     |            | 19.0.2-tem          
               |     | 19.0.1       | tem     |            | 19.0.1-tem          
               |     | 17.0.6       | tem     |            | 17.0.6-tem          
               |     | 17.0.5       | tem     |            | 17.0.5-tem          
               |     | 11.0.18      | tem     |            | 11.0.18-tem         
               |     | 11.0.17      | tem     |            | 11.0.17-tem         
 Zulu          |     | 19.0.2       | zulu    |            | 19.0.2-zulu         
               |     | 19.0.2.fx    | zulu    |            | 19.0.2.fx-zulu      
               |     | 19.0.1       | zulu    |            | 19.0.1-zulu         
               |     | 19.0.1.fx    | zulu    |            | 19.0.1.fx-zulu      
               |     | 17.0.6       | zulu    |            | 17.0.6-zulu         
               |     | 17.0.6.fx    | zulu    |            | 17.0.6.fx-zulu      
               |     | 17.0.5       | zulu    |            | 17.0.5-zulu         
               |     | 17.0.5.fx    | zulu    |            | 17.0.5.fx-zulu      
               |     | 11.0.18      | zulu    |            | 11.0.18-zulu        
               |     | 11.0.18.fx   | zulu    |            | 11.0.18.fx-zulu     
               |     | 11.0.17      | zulu    |            | 11.0.17-zulu        
               |     | 11.0.17.fx   | zulu    |            | 11.0.17.fx-zulu     
               |     | 8.0.362      | zulu    |            | 8.0.362-zulu        
               |     | 8.0.362.fx   | zulu    |            | 8.0.362.fx-zulu     
               |     | 8.0.352      | zulu    |            | 8.0.352-zulu        
               |     | 8.0.352.fx   | zulu    |            | 8.0.352.fx-zulu     
================================================================================
Omit Identifier to install default version 17.0.6-tem:
    $ sdk install java
Use TAB completion to discover available versions
    $ sdk install java [TAB]
Or install a specific version by Identifier:
    $ sdk install java 17.0.6-tem
Hit Q to exit this list view
================================================================================
(END)

您可以清楚地注意到,这些是ARM 64BITS MACOS体系结构的版本(我当前使用MacBook Air M2)...并且有很多 < /strong>。

根据不同的供应商,我今天不会让您比较对Java的夹具的防御(也许会成为未来文章的一部分?),但是我©我都使用我的 no Bleeding Edge < /em>,Zulu。

版本

在这种情况下,我喜欢Zulu的版本是compilateur JIT Falcon basé sur LLVMgarbage collector C4

在我工作的客户中,我们找到了针对Java 8、11和最近17的项目。

i因此,使用以下命令安装了17.0.6-zulu版本:

$> sdk install java 17.0.6-zulu
Downloading: java 17.0.6-zulu
In progress...
########################################################################## 100,0%
Repackaging Java 17.0.6-zulu...
Done repackaging...
Installing: java 17.0.6-zulu
Done installing!
Do you want java 17.0.6-zulu to be set as default? (Y/n): n

这次,与第一次不同,我已经使用此版本的Java呈现了版本。

对于11.0.18-zulu8.0.362-zulu版本而言,欺骗并不是很大不同:

$> sdk install java 11.0.18-zulu
(...)
$> sdk install java 8.0.362-zulu
(...)

您会看到您帖子上安装的Java的最后三个LTS版本!

从一个版本的Java转到另一个版本

要更改当前版本的Java,您将必须使用以下命令(此处使用17.0.6-zulu版本说明):

$> sdk use java 17.0.6-zulu

Using java version 17.0.6-zulu in this shell.

当前版本的小估算使得可以确认操作的正确功能:

$> java -version
openjdk version "17.0.6" 2023-01-17 LTS
OpenJDK Runtime Environment Zulu17.40+19-CA (build 17.0.6+10-LTS)
OpenJDK 64-Bit Server VM Zulu17.40+19-CA (build 17.0.6+10-LTS, mixed mode, sharing)

Java版本的自动更改

可能使用SDKMAN记录特定项目的Java的当前版本。

想象一下,您的客户有一个仍然使用Java 8的客户的旧版项目。

要将此版本的Java与上述项目相关联,您将必须转到此项目,更改Java的版本并启动sdk env init命令:

~ $> cd devel/mon_client/projet_java8
~/devel/mon_client/projet_java8 $> sdk use java 8.0.362-zulu
Using java version 8.0.362-zulu in this shell.
~/devel/mon_client/projet_java8 $> sdk env init
.sdkmanrc created.
~/devel/mon_client/projet_java8 $> java -version
openjdk version "1.8.0_362"
OpenJDK Runtime Environment (Zulu 8.68.0.19-CA-macos-aarch64) (build 1.8.0_362-b08)
OpenJDK 64-Bit Server VM (Zulu 8.68.0.19-CA-macos-aarch64) (build 25.362-b08, mixed mode)

现在,使用这种配置,将足以在相关的reaire中启动sdk env命令,以便将正确的Java版本分为切片!

~ $> cd devel/mon_client/projet_java8
~/devel/mon_client/projet_java8 $> sdk env
Using java version 8.0.362-zulu in this shell.

现在更好:可以确保Java版本更改时,您会在输入该配置项目的补救措施时自动

为此,您必须将SDKMAN的配置修改为~/.sdkman/etc/config文件,并将配置变量分配给true

可以使用以下命令在MacOS上的一行中这样做:

$> sed 's/sdkman_auto_env=false/sdkman_auto_env=true/g' ~/.sdkman/etc/config > /tmp/sdkman-cfg && cat /tmp/sdkman-cfg > ~/.sdkman/etc/config

在gnu linux下,这更简单:

$> sed -i 's/sdkman_auto_env=false/sdkman_auto_env=true/g' ~/.sdkman/etc/config

现在,您在Java 8中项目的反应中有一个小转弯,并且更改是自动的(当心您必须打开一个新终端,以使其有效):

~ $> cd devel/mon_client/projet_java8
Using java version 8.0.362-zulu in this shell.

Maven et de Kotlin的gur vos版本

在Allité中,我并没有真正使用SDKMAN在几个版本的Maven或Kotlin之间进行杂耍

安装他们胃

如果像我一样,您不在乎Maven的版本,您将要从它是最后一个到迄今为止的那一刻,只需在终端中键入下一个订单:

$> sdk install maven
Downloading: maven 3.8.7
In progress...
########################################################################## 100,0%
Installing: maven 3.8.7
Done installing!

安装De Kotlin

对于kotlin有点不同。

这种语言相当一百,因此运气(或运气不好)必须具有多个版本的Kotlin。

但是,您可以像Java一样知道具有以下命令的不同Kotlin版本:

$> sdk list kotlin
================================================================================
Available Kotlin Versions
================================================================================
 > * 1.8.0               1.4.0               1.2.60              1.1.3          
     1.7.21              1.3.72              1.2.51              1.1.2-5        
     1.7.20              1.3.71              1.2.50              1.1.2-2        
     1.7.10              1.3.70              1.2.41              1.1.2          
     1.7.0               1.3.61              1.2.40              1.1.1          
     1.6.21              1.3.60              1.2.31              1.1            
     1.6.20              1.3.50              1.2.30              1.0.7          
     1.6.10              1.3.41              1.2.21              1.0.6          
     1.6.0               1.3.40              1.2.20              1.0.5-2        
     1.5.31              1.3.31              1.2.10              1.0.5          
     1.5.30              1.3.30              1.2.0               1.0.4          
     1.5.21              1.3.21              1.1.61              1.0.3          
     1.5.10              1.3.20              1.1.60              1.0.2          
     1.5.0               1.3.11              1.1.51              1.0.1-2        
     1.4.31              1.3.10              1.1.50              1.0.1-1        
     1.4.30              1.3.0               1.1.4-3             1.0.1          
     1.4.21              1.2.71              1.1.4-2             1.0.0          
     1.4.20              1.2.70              1.1.4                              
     1.4.10              1.2.61              1.1.3-2                            

================================================================================
+ - local version
* - installed
> - currently in use
================================================================================
(END)

您还会注意到我在我的帖子上死了最后一个版本(每小时筛选这些行的1.8.0)。

要在他的最后一个版本中安装Kotlin,您只需在命令行上输入:

$> sdk install kotlin

具有像1.2.71版本这样的太空版本:

$> sdk install kotlin 1.2.71

要从一个版本到另一个版本,它与我们使用Java学到的东西相同。

还有其余的?

在我的下一篇文章中,我将向您解释如何更改为“ applight aveptory 作为我所在的Reactory的函数...

如果您有意,请与我联系或在LinkedIn上关注我!

我也想迅速地向您解释我是谁ð

我叫Hoani Cross。我来自法语polynue。

它一直是计算机(我开始在CP中开发,大约40年前),我在许多环境中都被掌握了很多位置,直到DSI的位置...

今天,我是法国节点SFEIR的经理和后端建筑师。 Sfeir的特殊性之一是管理人员也是对客户的任务豁免。我们了解员工正在管理和相信我的工作,这是一个神圣的!最后,在Sfeir上联系我们所有人的是对计算机科学的热情……她已经关注我已有40年了,同样告诉您我跌倒在正确的位置!

此外,如果您充满激情。>

最后,我也是Geek & Rentable博客的适当性,我的访问我建议您。有了这个博客,我想帮助冰球运动员或其他科技演员,充满热情,但不幸地误解了他们的工作状况甚至职业。

ã