Skip to content

aurumcodex/jdkenv

Repository files navigation

jdkenv GitHub Workflow Status

A simple Go program to manage and install (if not found) various JDKs.

Useful for when you use multiple JDK implementations, or want to build on different versions to test your Java projects or other JVM language projects on different standard libraries.

Creates a directory .jdkenv in the $HOME directory, and will contain the downloaded JDK .tar.gz archives fully extracted. Once a JDK has been selected, an env file will be created within the .jdkenv directory that can then be sourced via a shell recfile. (.bashrc, .zshrc, .profile, etc.)

Takes quite a lot of inspiration from how JetBrains' IntelliJ IDEA IDE can download and use various JDKs. (Even the .toml files take quite a lot of inspiration from IntelliJ’s *.intellij files for its known JDKs.)

Note
Environment variable setting not yet implemented. macOS testing needs to be done, as well as determining the best way of writing to Window’s environment variables.

Dependencies

  • Go 1.15 (min version needs to be checked from deps)

Installation

Using Go Modules

  • Make sure $GOBIN and $GOPATH are set, and $GOBIN is added to your $PATH

  • Run go get -u github.com/aurumcodex/jdkenv

Usage

Running this program without a subcommand will only print the set JDK and Java version given.

Usage:
  jdkenv [flags]
  jdkenv [command]

Available Commands:
  azul        Set usage of Azul Zulu Community JDK
  corretto    Set usage of Amazon Corretto JDK
  errors      Print error codes and their meanings
  help        Help about any command
  liberica    Set usage of BellSoft Liberica JDK
  local       Set usage of a locally installed JDK
  openjdk     Set usage of AdoptOpenJDK
  oracle      Set usage of Oracle OpenJDK Reference Implementation
  sapmachine  A brief description of your command
  system      Set usage of system installed JDK

Flags:
  -h, --help       help for jdkenv
  -j, --java int   use specific Java version (valid: 8, 11, 15) (default 8)
      --no-color   use monochrome output
      --spinner    disables the activity spinner (default true)

Supported JDKs

JDK Implementation Java 8 Java 11 Java 15 Notes

Oracle OpenJDK

Windows and Linux Only

Amazon Corretto

none

BellSoft Liberica

none

AdoptOpenJDK

Hotspot and OpenJ9 JVMs supported

SAP Sapmachine

none

Azul Zulu Community

none

License

JDKEnv is licensed under the Apache 2.0 License. See LICENSE for more details.

Third Party libraries used (and their licenses)
  • briandowns/spinner (Apache-2.0)

  • cavaliercoder/grab (BSD-3)

  • logrusorgru/aurora (Unlicense)

  • mholt/archiver (MIT)

  • pelletier/go-toml (MIT)

  • spf13/cobra (Apache-2.0)

  • go-ini/ini (Apache-2.0)