<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dylan Béhêtre</title>
    <description>The latest articles on DEV Community by Dylan Béhêtre (@dylanbehetre).</description>
    <link>https://dev.to/dylanbehetre</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3165542%2F1e95510a-6d44-4a5a-94b8-5651ad74b40f.JPG</url>
      <title>DEV Community: Dylan Béhêtre</title>
      <link>https://dev.to/dylanbehetre</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dylanbehetre"/>
    <language>en</language>
    <item>
      <title>Enfin un gestionnaire de version pour Java compatible nativement sous Windows (et bien plus)</title>
      <dc:creator>Dylan Béhêtre</dc:creator>
      <pubDate>Thu, 15 May 2025 12:54:07 +0000</pubDate>
      <link>https://dev.to/zenika/enfin-un-gestionnaire-de-version-pour-java-compatible-nativement-sous-windows-et-bien-plus-2kfg</link>
      <guid>https://dev.to/zenika/enfin-un-gestionnaire-de-version-pour-java-compatible-nativement-sous-windows-et-bien-plus-2kfg</guid>
      <description>&lt;p&gt;Cela fait plusieurs années que je trouve contraignant le fait d’avoir à switcher d’une version de Java à une autre, lorsque je travaille sur plusieurs projets ayant des stacks techniques différentes. Il en va de même pour les versions d’autres outils tels que Node.js.&lt;/p&gt;

&lt;p&gt;Mes précédents essais m’avaient menés vers &lt;a href="https://sdkman.io/install/" rel="noopener noreferrer"&gt;SDKMAN&lt;/a&gt;, qui n’était pas pleinement compatible avec les outils sur mon espace Windows (terminal et IDE).&lt;/p&gt;

&lt;p&gt;Dernièrement, un collègue, &lt;a href="https://www.linkedin.com/in/guillaumefayemi/" rel="noopener noreferrer"&gt;Guillaume FAYEMI&lt;/a&gt;, a trouvé la solution qui a dépassé mes attentes : &lt;a href="https://mise.jdx.dev/about.html" rel="noopener noreferrer"&gt;mise-en-place&lt;/a&gt; (alias &lt;em&gt;mise&lt;/em&gt;). C’est une solution open-source, avec plus de 15.4K étoiles sur &lt;a href="https://github.com/jdx/mise" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, permettant de gérer facilement la mise en place d’une configuration de développement local, sur plusieurs systèmes d’exploitation, dont Windows.&lt;/p&gt;

&lt;p&gt;Il permet :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;l’installation d’outils tels que Java (des centaines d’autres sont disponibles) ;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;la gestion automatique des variables d’environnements ;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;la possibilité de lancer des commandes au chargement de la configuration.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Mise en place sur mon poste Windows
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Powershell 7+ en pré-requis pour Windows
&lt;/h3&gt;

&lt;p&gt;Pour disposer d’un terminal compatible sous windows, &lt;em&gt;mise&lt;/em&gt; nécessite &lt;a href="https://learn.microsoft.com/fr-fr/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.5" rel="noopener noreferrer"&gt;l’installation de la dernière version de Powershell&lt;/a&gt;. De mon côté, j’ai opté pour l’installation via &lt;em&gt;winget&lt;/em&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;winget&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;search&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Microsoft.PowerShell&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Installation de mise
&lt;/h3&gt;

&lt;p&gt;De la même manière, j’ai installé &lt;em&gt;mise&lt;/em&gt; via &lt;em&gt;winget&lt;/em&gt; :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;winget&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;install&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;jdx.mise&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Configuration automatique de &lt;em&gt;mise&lt;/em&gt; pour Powershell
&lt;/h3&gt;

&lt;p&gt;Pour activer automatiquement la configuration globale ou locale de &lt;em&gt;mise&lt;/em&gt;, il est nécessaire de créer ou mettre à jour le &lt;a href="https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7.5#profile-types-and-locations" rel="noopener noreferrer"&gt;profil du terminal&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Personnellement, j’ai créé un profil “Current User, Current Host” nativement accessible sous &lt;code&gt;$PROFILE&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;New-Item&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ItemType&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;File&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="bp"&gt;$PROFILE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Force&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;puis j’ai ajouté la configuration :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;Add-Content&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="bp"&gt;$PROFILE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Value&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"# Active Mise pour PowerShell"&lt;/span&gt;&lt;span class="w"&gt;  
&lt;/span&gt;&lt;span class="n"&gt;Add-Content&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="bp"&gt;$PROFILE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Value&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mise activate pwsh | Out-String | Invoke-Expression | Out-Null"&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vous pouvez visualiser le contenu de la configuration via :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;notepad&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="bp"&gt;$PROFILE&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Comment mise fonctionne
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Mise&lt;/em&gt; va lire la &lt;a href="https://mise.jdx.dev/configuration.html" rel="noopener noreferrer"&gt;configuration&lt;/a&gt; globale ou locale à l’emplacement courant du terminal puis mettre en place la configuration souhaitée automatiquement. En cas de déplacement dans un autre emplacement, le même &lt;a href="https://mise.jdx.dev/faq.html#what-does-mise-activate-do" rel="noopener noreferrer"&gt;processus&lt;/a&gt; est rejoué.&lt;/p&gt;

&lt;p&gt;La configuration peut se faire manuellement ou en ligne de commande.&lt;/p&gt;

&lt;p&gt;Par exemple, il est possible d’installer et de spécifier l’usage pour l’emplacement courant d’un JDK Java Temurin en version 24 via :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;mise&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;use&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;java&lt;/span&gt;&lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="nx"&gt;temurin-24&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cela va : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Installer le dernier JDK Temurin en version 24 s’il n’est pas déjà présent sur la machine ;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Modifier les variables d’environnement, &lt;code&gt;PATH&lt;/code&gt; et &lt;code&gt;JAVA_HOME&lt;/code&gt;, dans le contexte du terminal ou de l'IDE où la commande a été jouée, pour en faire la version de Java qui y sera utilisée ;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Créer un fichier de configuration &lt;code&gt;mise.toml&lt;/code&gt; à l’emplacement courant du terminal indiquant la configuration à utiliser à cet emplacement.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ainsi, après avoir joué cette commande, tout usage de la commande &lt;em&gt;java&lt;/em&gt;, ou utilisation de Java au travers d’un autre outil tel que Maven ou Gradle, dans ce terminal, ou tout autre terminal se trouvant à cet emplacement, utilisera la version préalablement défini.&lt;/p&gt;

&lt;p&gt;Il est possible d’ajouter l’option &lt;code&gt;-g&lt;/code&gt; (pour global) pour en faire la version par défaut, s’il n’y a pas de configuration plus spécifique localement.&lt;/p&gt;

&lt;p&gt;Pour visualiser l’ensemble des versions disponibles d’un outil, voici un exemple pour Java en Temurin :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;mise&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;ls-remote&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;java&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;findstr&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;temurin&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pour les versions disponibles en local :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;mise&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;ls&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Un plugin pour une intégration aux outils JetBrains comme IntelliJ IDEA
&lt;/h2&gt;

&lt;p&gt;Il est possible d’intégrer un &lt;a href="https://plugins.jetbrains.com/plugin/24904-mise" rel="noopener noreferrer"&gt;plugin Mise&lt;/a&gt;, pour que l’environnement se charge automatiquement, au lancement de l’IDE, ou en cas de refresh explicite. Le plugin permet également de pouvoir visualiser à l’instant &lt;code&gt;t&lt;/code&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;les outils actifs avec leur version ;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;les tâches à jouer ;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;les variables d’environnement spécifiques.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Finalement, l’outil &lt;a href="https://mise.jdx.dev/demo.html" rel="noopener noreferrer"&gt;&lt;em&gt;mise&lt;/em&gt;&lt;/a&gt; remplit très bien son rôle de gestionnaire de versions de Java sur Windows mais il permet bien plus que cela : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;une mise en place automatique de la configuration d’un projet quand on se trouve dedans ;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;la gestion d’autres outils tels que Node.js ;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;la possibilité de gérer également les variables d’environnements et le lancement de scripts.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>java</category>
      <category>development</category>
    </item>
  </channel>
</rss>
