Elide includes the commands needed for common Java and Kotlin workflows. The 1.5.0 toolchain supports Java 25 and Kotlin 2.4.10.
Compile and run
elide javac -- -d out Hello.java
elide java -- -cp out Hello
elide kotlinc -- -d out Hello.kt
elide java -- -cp out HelloKtOptions for the wrapped compiler or runtime go after --.
Format
Format Java and Kotlin together:
elide format -- src
elide format -- -n src # check onlyUse elide javaformat or elide ktfmt when you need options specific to one
formatter.
Build a project
With an elide.pkl manifest, Elide can install Maven dependencies, compile
source sets, run tests, and assemble declared artifacts:
elide install
elide build
elide testJVM tests require a test source set in the manifest.
Compile progress
While elide build compiles a Java source set, the task line names the file
javac is working on and the progress bar fills as each source file completes,
so a large compile shows movement instead of an unchanging spinner. Kotlin has
no equivalent per-file hook, so its task line reports the source count it is
working through. Progress lines are part of the interactive display: in CI,
when output is redirected, or under an AI agent harness, the build prints plain
per-task lines only.
Progress reaches the display the same way in every distribution. When the
compilers run in-process — JVM mode, or a native-image build where jvmtools
is folded into the engine itself (musl, or --no-jvmtools-library) — the
compiler calls the build’s receiver directly. On the default split native
distribution the compilers run inside libjvmtools, and each event is sent
back to the engine as it happens over a native callback the compile call
carries with it.
Compiler diagnostics travel the same channel, so a warning or an error appears
while the compile that produced it is still running, in the order the compiler
emitted it, rather than arriving as a batch once the task finishes. The same
applies to elide javaformat, elide ktfmt and elide format, whose task
lines name each file as it is checked or rewritten, and say what happened to
it: left alone, rewritten, would be rewritten, or failed to parse — or, for the
rare invocation only the tool’s own driver can answer, simply that it was
checked.
Existing build systems
Existing builds can invoke Elide’s compiler wrappers directly with the same
argument boundary used above. Bazel integrations can use the persistent-worker
mode exposed by elide javac --persistent_worker and
elide kotlinc --persistent_worker.
Gradle and Maven plugins are released separately from the Elide binary. Their setup is intentionally not duplicated here because plugin versions and configuration can change independently. Use the direct compiler commands when you need a versioned, binary-owned interface.
Reference
- Java compiler
- Kotlin compiler
- Java formatter
- Kotlin formatter
- JAR assembly
- Maven dependencies
- Native Maven
- Testing
- JVM containers
- Native Image
Run elide --help-all for the complete command list.