
The non-intrusive Java environment manager for polyglot developers.

jEnv is a command-line tool that empowers developers to manage multiple Java environments with surgical precision. Unlike heavy-duty installers, jEnv follows the 'rbenv' philosophy, utilizing a shims-based architecture to intercept Java commands and route them to the appropriate JDK version based on the current directory or shell context. In the 2026 landscape, where enterprises often juggle legacy Java 8 microservices alongside modern Java 25+ reactive architectures, jEnv serves as the critical abstraction layer that prevents 'JAVA_HOME' pollution. It integrates deeply with common build tools like Maven and Gradle via a dedicated plugin system, ensuring that not only the compiler but the entire toolchain respects the environment's versioning requirements. By leveraging a simple '.java-version' file within project roots, jEnv enables seamless team-wide synchronization of development environments without the overhead of containerization for every local task. Its lightweight footprint and zero-dependency runtime make it the preferred choice for macOS and Linux power users who require high-performance JDK switching across Zsh, Bash, and Fish shells.
jEnv is a command-line tool that empowers developers to manage multiple Java environments with surgical precision.
Explore all tools that specialize in jdk version switching. This domain focus ensures jEnv delivers optimized results for this specific requirement.
Explore all tools that specialize in manage java versions. This domain focus ensures jEnv delivers optimized results for this specific requirement.
Uses lightweight executable wrappers (shims) to intercept and redirect Java calls to the correct binary version.
Detects a .java-version file in the current or parent directory to automatically switch the JDK.
Includes built-in plugins for Maven, Gradle, Ant, and SBT to ensure these tools use the jEnv-selected JDK.
Provides full compatibility with Bash, Zsh, and Fish through dynamic shell initialization scripts.
Allows setting a fallback JDK version at the user level when no local configuration is found.
Enables renaming complex JDK paths into human-readable versions like 'openjdk-21'.
The 'export' plugin dynamically updates the JAVA_HOME variable every time the directory changes.
Install jEnv using Homebrew (brew install jenv) or manual git clone to ~/.jenv
Initialize jEnv in your shell profile (~/.zshrc or ~/.bash_profile) by adding 'eval "$(jenv init -)"'
Restart your terminal session to apply the shim configurations
Locate your installed JDK paths (e.g., /Library/Java/JavaVirtualMachines/)
Register a JDK version with jEnv using 'jenv add /path/to/jdk/'
List all registered versions using 'jenv versions' to verify successful registration
Set a global Java version for your machine using 'jenv global [version]'
Set a local project-specific version by running 'jenv local [version]' within the project root
Enable the export plugin ('jenv enable-plugin export') to ensure $JAVA_HOME is automatically updated
Verify the setup by running 'java -version' and 'echo $JAVA_HOME' inside and outside project directories
All Set
Ready to go
Verified feedback from other users.
"Highly praised for its simplicity and for not cluttering the system. Users prefer it over SDKMAN for its strict adherence to the rbenv-style version switching."
Post questions, share tips, and help other users.
No direct alternatives found in this category.