-
Notifications
You must be signed in to change notification settings - Fork 2
Home
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.
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.
Javasm is the IntelliJ IDEA plugin that adds:
- Syntax highlighting and code completion for
.jalfiles - 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.
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) |
- JAL Instructions Reference
- JAL Syntax Guide
- Debugging with Javasm
- Migrating from Jasmin
- Mnemonics on Instructions
- Install the Javasm plugin from IntelliJ Marketplace.
- Create a Java project with IntelliJ IDEA wizard.
- Create a JAL Source Directory:
- Right-click on the project root → New → Directory
- Name it
src/main/jal
- Write
.jalfiles 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.
- Download the JAL CLI Compiler from The releases page
This page contains the latest release of the JAL CLI Compiler named
langjal-<version>.zip. - Decompress the downloaded file to a directory of your choice.
- Add the
bindirectory to your system's PATH environment variable. - Write
.jalfiles using the JAL syntax.
Compile JAL files using the JAL CLI compiler:
$ jalc MyProgram.jalOr specify multiple JAL files:
$ jalc MyJALFilesTo 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.jarYou 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- 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" } - Write your JAL source files in the
src/main/jaldirectory. - Build your project using:
or just compile JAL files:
./gradlew build
./gradlew compileJAL
Contributions to both JAL and the Javasm plugin are welcome. Check out the GitHub repo for issue tracking, discussions, and PR guidelines.
-
LangJAL
The implementation of the JAL language and the development of the JAL CLI compiler. - Javasm IntelliJ Plugin The plugin that integrates JAL with IntelliJ IDEA.
- jal-gradle-plugin A plugin for using JAL in Gradle projects.
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.