Installation
Auf der JBang Seite findest du Anleitungen für Windows, Linux und Mac. Es gibt Unterstützung für Paketmanager (Chocolatey, Scoop, asdf, brew, sdkman, ...) und Docker.
Beispiele
Hello World
public class hello {
public static void main(String[] args) {
System.out.println("Hello " + args[0]);
}
}
Listing: hello.java
Ausführen mit:
jbang hello.java Bonn
h2 Server
Das Skript startet einen h2-Datenbankserver. Die notwendige Abhängigkeit lädt JBang automatisch von Maven Central.
///usr/bin/env jbang "$0" "$@" ; exit $?
//DEPS com.h2database:h2:2.3.230
//Java 21
import org.h2.tools.*;
import static org.h2.tools.Server.*;
public class h2 {
public static void main(String[] ignored) throws Exception {
Server server = createTcpServer("-ifNotExists").start();
System.out.println(server.getStatus());
}
}
Listing: h2.java
SQL/JDBC Client
SQL Befehle können mit dem Skript sql.java an Datenbankserver über JDBC gesendet werden.
jbang sql.java "select * from fruits"
Kataloge
Hier findest du unseren JBang Catalog mit Aliasen auf github.
Java in der Kommandozeile
Java in der Kommandozeile geht mit JBang natürlich auch.
jbang -c 'println("Hi!")'
ls -al | jbang -c 'lines().forEach(System.out::println)'
ls -al | jbang -c 'lines().filter(l->!l.contains("total")).map(l->l.split("\\s+")).forEach(a->printf("Datei %s hat %s Bytes\n",a[8],a[4]))'
Faker
Mit Faker können Beispieldaten für Tests erzeugt werden. Das Skript erzeugt ein Faker-Objekt, das dann in der Kommandozeile verwendet werden kann.
//DEPS com.github.javafaker:javafaker:1.0.2
import com.github.javafaker.Faker;
Faker faker = new Faker(new Locale("DE"));
Listung: faker.jsh
Die Einzeiler unten verwenden das Faker-Objekt um Beispieldaten zu erzeugen:
jbang -s faker.jsh -c 'Stream.generate(faker.hitchhikersGuideToTheGalaxy()::quote).forEach(n->println(n))'
jbang -s faker.jsh -c \n
'Stream.generate(()->faker.address()).forEach(a->printf("%s %s\n%s %s\n\n", a.streetName(), a.streetAddressNumber(), a.zipCode(), a.city()))'
Markdown
In Markdown eingebettetes Java...
# JBang Markdown
Ausführen von Skripten in Markdown.
```jsh
//DEPS com.github.ricksbrown:cowsay:1.1.0
import com.github.ricksbrown.cowsay.*;
System.out.println(Cowsay.say(args));
```
Listing: cow.md
kann mit JBang ebenfalls ausgeführt werden:
jbang cow.md
Sonstige Kommandos
jbang edit h2.java
jbang export fatjar h2.java
jbang org.membrane-soa:starter:5.7.0 -h
jbang https://raw.githubusercontent.com/predic8/jbang-catalog/refs/heads/main/sql.java "select * from fruits"
jbang alias add https://raw.githubusercontent.com/predic8/jbang-catalog/refs/heads/main/sql.java
jbang membrane@predic8 -c proxies.xml
jbang gavsearch@demo log4j
jbang --java 21 --enable-preview -c 'print(STR."First arg is \{args[0]}!")'
jbang jdk list