Wukong is a Java toolchain written with Rust.
- Startup time matters: Rust is fast, and Java takes ages to start.
- No environment dependencies: No need to install JDK with different versions.
- Binary file size matters: small size, easy to distribute. GraalVM native-image is not small enough.
- Install:
cargo binstall wukong. Please runcargo install cargo-binstallfirst. - JBang-rs: Run Java code
~/.cargo/bin/jbang --help - SDKMAN-rs: Manage JDK and tools
~/.cargo/bin/sdk --help - Maven Central Search: Artifact search
~/.cargo/bin/mcs --help - JAR file analyzer: artifact analyzer
~/.cargo/bin/jarviz --help - Maven Toolchains:
~/.cargo/bin/mt --help - jenv-rs:
~/.cargo/bin/jenv --help
- JBang(Java): https://www.jbang.dev/
- SDKMAN(bash): https://sdkman.io/
- jenv(bash): https://github.com/jenv/jenv
- Maven Toolchains CLI: https://maven.apache.org/guides/mini/guide-using-toolchains.html
- Maven Central Search: https://search.maven.org/
- JAR file analyzer: https://github.com/kordamp/jarviz
- jaz: https://learn.microsoft.com/en-us/java/jaz/overview
Please add eval $(~/.cargo/bin/sdk init) to your shell profile.
- CI friendly:
sdk install -y javafor auto-install - Silent mode:
sdk -q install java - Major version support(Temurin by default):
sdk install java 21,sdk use java 21
- use version:
eval $(sdk use java 21)
- jdks: list all installed JDKs
- vendors: list all vendors and available JDK versions.
- list: list JDKs from
~/.m2/toolchains.xml - add: add JDK into
~/.m2/toolchains.xml - remove: remove JDK from
~/.m2/toolchains.xml
- list all vendors and jdk versions:
mt vendors mt add 21: add JDK 21 from$HOME/.jbang/cache/jdks/21mt add 17.0.4-tem: add JDK from$HOME/.sdk/candidates/java/17.0.4-temmt add /path/to/java-home: add JDK from/path/to/java-home
jarviz is a JAR file analyzer written in Rust, and inspired by kordamp/jarviz.
- bytecode matric:
jarviz bytecode matrix - bytecode show:
jarviz bytecode show --pom - entries list:
jarviz entries list --file=path/to/jarfile.jar - services list:
jarviz services list --pom
jaz: a lightweight utility that simplifies how Java developers run their applications on JDK 17+.
Detected variables:
- JAVA_HOME
- JAVA_VERSION
- JAVA_VENDOR
- JAVA_OPTIONS
Features:
.envsupport with dotenvx
Roadmap
- ⚙️ JVM configuration profiles
- 📦 AppCDS support
- 🔄 Continuous tuning
- 📊 Telemetry
- 📦 Leyden support
Integration with direnv by sdk direnv init:
- Java Home:
.java-version,.sdkmanrc - Aut candidate home and path for SDKMAN:
.sdkmanrc
- SDKMAN CLI: SDKMAN CLI Native with Rust
- OneIO: all-in-one convenient IO library for Rust
- startup-time: Measure startup time of different programming languages
- jbang(1): https://www.jbang.dev/documentation/guide/latest/cli/jbang.html
- jaz: a lightweight utility that simplifies how Java developers run their applications on Azure