Skip to content
PeyaPeyaPeyang edited this page Jul 23, 2025 · 6 revisions

Welcome to the Java Assembly Language Wiki

JAL (Java Assembly Language) is a modern, debuggable, and developer-friendly JVM assembly language.

JAL was designed as a full replacement for the abandoned Jasmin project, offering a cleaner syntax, better error handling, and built-in support for modern Java bytecode. Javasm brings JAL into IntelliJ IDEA with full editor and debugger integration.

このページは日本語でもご覧いただけます。


🧭 What is JAL?

JAL (Java Assembly Language) is a textual assembler for the JVM:

  • Designed to be readable and writable by humans
  • Maps directly to JVM bytecode
  • Supports modern JVM versions
  • Clear instruction syntax and stack behavior
  • Easily embeddable into toolchains

It was created to replace Jasmin, which has not been maintained for years and lacks support for modern development workflows.


🧰 What is Javasm?

Javasm is the IntelliJ IDEA plugin that adds:

  • Syntax highlighting and code completion for .jal files
  • Integration with Run Configurations
  • Full debugger support (breakpoints, step over/in, variable inspection)
  • Navigation between source and bytecode
  • In-editor documentation for all instructions

If you're using JAL, Javasm is the toolchain frontend you want.


🔄 From Jasmin to JAL

Why switch from Jasmin?

Feature Jasmin JAL + Javasm
Actively maintained
IDE integration ✅ IntelliJ support
Modern JVM support ✅ (supports new bytecodes)
Debugging support ✅ Breakpoints, stepping, stack
Clear syntax & docs ⚠️
Extensible ✅ (planned macro system)

📚 Documentation


🔧 Getting Started

― With Javasm Plugin

  1. Install the Javasm plugin from IntelliJ Marketplace.
  2. Create a Java project with IntelliJ IDEA wizard.
  3. Create a JAL Source Directory:
    • Right-click on the project root → New → Directory
    • Name it src/main/jal
  4. Write .jal files using the JAL syntax.

If your .jal file contains a valid main method, you can run it like a regular Java program. To run a JAL file, click the green run icon next to the main method.


― With JAL CLI Compiler

  1. Download the JAL CLI Compiler from The releases page This page contains the latest release of the JAL CLI Compiler named langjal-<version>.zip.
  2. Decompress the downloaded file to a directory of your choice.
  3. Add the bin directory to your system's PATH environment variable.
  4. Write .jal files using the JAL syntax.

Compile JAL files using the JAL CLI compiler:

$ jalc MyProgram.jal

Or specify multiple JAL files:

$ jalc MyJALFiles

To create a .jar file from your compiled JAL files, use the --output option:

$ jalc MyProgram.jal --output /path/to/MyProgram.jar
$ jalc MyJALFiles --output /path/to/MyJALFiles.jar

You can also specify the output directory for the compiled classes:

$ jalc MyProgram.jal --output /path/to/output/directory
$ jalc MyJALFiles --output /path/to/output/directory

― With JAL Gradle Plugin

  1. Apply the plugin in your build.gradle(.kts):
    plugins {
        id 'tokyo.peya.langjal' version '1.0.0'
    }
     plugins {
         id("tokyo.peya.langjal") version "1.0.0"
     }
  2. Write your JAL source files in the src/main/jal directory.
  3. Build your project using:
    ./gradlew build
    or just compile JAL files:
    ./gradlew compileJAL

🤝 Contributing

Contributions to both JAL and the Javasm plugin are welcome. Check out the GitHub repo for issue tracking, discussions, and PR guidelines.

❤️ Sister Projects


✨ A Modern JVM Assembly Workflow

JAL brings JVM assembly into the 2020s. Javasm makes it usable. Together, they offer a complete ecosystem for learning, experimenting, and building directly on the Java Virtual Machine — with full IDE support and modern tooling.


Welcome to the next generation of JVM assembly.

Clone this wiki locally