How do I install EK9?

← Getting Started · Ref: Q12

EK9 requires Java 25 or later. The recommended JDK is Azul Zulu (https://www.azul.com/downloads/) which provides free, production-ready builds for all platforms.

Installation steps:

1. Install Java 25+:

   Download and install Azul Zulu JDK 25 (or any Java 25+ JDK). Verify with:
     javac -version
   Must show version 25 or higher.

2. Get the EK9 compiler:

   The compiler is distributed as two files:
   - `ek9` (or `ek9.exe` on Windows): a lightweight native wrapper
   - `ek9c-jar-with-dependencies.jar`: the compiler itself
   Place both in the same directory and add that directory to your PATH.

3. Verify installation:

     ek9 -V                    show compiler version
     ek9 -h                    show help
     ek9 -H                    list all help keywords

Alternative setup with EK9_HOME:

   Instead of placing both files together, set the EK9_HOME environment variable to point to the directory containing the JAR:
     export EK9_HOME=/opt/ek9
   The `ek9` wrapper checks EK9_HOME first, then looks relative to its own location.

Memory configuration:

   EK9_COMPILER_MEMORY="-Xmx1g"       compiler memory (default: 512m)
   EK9_APPLICATION_MEMORY="-Xmx2g"    program memory (default: 512m)

For compiler developers (building from source):

     git clone https://github.com/stephenjohnlimb/ek9.git
     cd ek9
     mvn clean install
   The JAR appears at compiler-cli/target/ek9c-jar-with-dependencies.jar
   The native wrapper is built via CMake during the Maven build.

On Linux/macOS, EK9 files with the #!ek9 shebang can run directly:

     chmod u+x hello.ek9
     ./hello.ek9

The code example below is a quick installation verification program.

See Q2 for compiling and running programs. See Q21 for the built-in help system. See Q252 for verbose and debug compilation modes.

Example

defines module qa.getting.started.install.ek9

  defines program
    VerifyInstallation()
      stdout <- Stdout()

      stdout.println("EK9 is installed and working!")
      stdout.println("Try: ek9 -V for version info")
      stdout.println("Try: ek9 -h String for type help")
      stdout.println("Try: ek9 -H for all help keywords")

Common mistakes

E50060 — EK9 Stdout uses println() for output, not writeLine() or write(). AI often generates method names from other languages. Triggers E50060 — method not resolved. See ek9 -h Stdout for the full API.

Incorrect:

stdout.writeLine("EK9 is installed and working!")

Correct:

stdout.println("EK9 is installed and working!")
Other ways to ask this
  • What are the prerequisites for EK9?
  • How do I set up EK9 on my machine?
  • What do I need to run the EK9 compiler?
  • How do I get started with EK9 installation?

Coming from another language?

Python: python.org installer or system package manager. Java: JDK download from Oracle/Azul/Adoptium. Rust: rustup one-line installer. Go: go.dev/dl installer. Node: nodejs.org or nvm. EK9 requires a Java 25+ JDK as its runtime platform, with a native C wrapper providing a simple command-line interface.

Keywords: version, first, download, JDK, prerequisites, PATH, beginner, Java, Azul, setup, migrate, start, install, intro, EK9_HOME