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-binstall
first. - 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
Please add eval $(~/.cargo/bin/sdk init)
to your shell profile.
- CI friendly:
sdk install -y java
for 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/21
mt add 17.0.4-tem
: add JDK from$HOME/.sdk/candidates/java/17.0.4-tem
mt 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
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