Jumper is a scripting language for the JVM with the syntax of Java and the lightness of Lua.
import java.util.ArrayList;
dyn greet(name) { return "Hello, " + name; }
dyn names = new ArrayList();
names.add("Jumper");
names.add("Java");
dyn point = { x: 1, y: 2 };
for (dyn n : names) println(greet(n) + " " + (point.x + point.y));dynfor dynamic values,int,long,double,boolean,Stringwhere you want types checked- functions, classes, lambdas, tables (
{ x: 1 }), modules (import "utils.jmp";) - Java classes used directly:
import,new, method calls, fields - an interpreter and a compiler to JVM bytecode for hot code
Scripts inside a Java application: plugins and mods of a server, user automation, configs with logic.
- Embedding - a standard
javax.scriptengine, the host passes its objects to scripts. - Safety - every script runs under an access policy (
.jma): which Java packages, classes and methods it may touch. Everything else is closed. - Configs -
.jmcfiles are a safe subset of the language: data, conditions, no loops or Java. - Editors - IntelliJ IDEA, VS Code, Neovim.
Requires Java 21+. Jumper is published through JitPack: Tag below is a release tag, the latest one is on the badge above.
repositories {
mavenCentral()
maven("https://jitpack.io")
}
dependencies {
implementation("com.github.jumper-lang:jumper:Tag")
}repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
}
dependencies {
implementation 'com.github.jumper-lang:jumper:Tag'
}<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependency>
<groupId>com.github.jumper-lang</groupId>
<artifactId>jumper</artifactId>
<version>Tag</version>
</dependency>ScriptEngine jumper = new ScriptEngineManager().getEngineByName("jumper");
jumper.put("name", "world");
jumper.eval("println(\"Hello, \" + name);");Download jmp.jar from Releases:
java -jar jmp.jar script.jmp