Zum Hauptinhalt springen

JBang 25.11

In ChatGPT öffnen

JBang ist ein Tool, mit dem Sie Java-Code als Skripte ausführen können – ohne Build-Dateien, Projekteinrichtung oder manuelle Kompilierung. Die JBang-Integration von webforJ ermöglicht es Ihnen, webforJ-Apps schnell zu erstellen. Sie eignet sich besonders für schnelles Prototyping, zum Lernen und für kurze Demos, ohne dass die herkömmlichen Abhängigkeiten und die Infrastruktur eines vollwertigen Java-Programms erforderlich sind.

Warum JBang mit webforJ verwenden?​

Herkömmliche webforJ-Projekte verwenden Maven oder Gradle mit mehreren Konfigurationsdateien und einer standardisierten Projektstruktur. Diese Einrichtung ist für Produktions-Apps üblich, kann sich für einfache Experimente oder Demos jedoch als aufwendig erweisen.

Mit JBang können Sie:

  • Sofort loslegen: Eine einzelne .java-Datei schreiben und direkt ausführen
  • Die Projekteinrichtung überspringen: Kein pom.xml, kein build.gradle, keine Verzeichnisstruktur
  • Einfach teilen: Jemandem eine einzelne Datei schicken, die mit einem Befehl ausgeführt werden kann
  • Schneller lernen: Sich ohne die Komplexität von Build-Tools auf webforJ-Konzepte konzentrieren

Die Integration beendet den Server automatisch, wenn Sie den Browser-Tab schließen, und sorgt so für einen aufgeräumten Entwicklungsworkflow.

Voraussetzungen​

JBang installieren​

Wählen Sie Ihre bevorzugte Installationsmethode:

# Universal (Linux/macOS/Windows with bash)
curl -Ls https://sh.jbang.dev | bash -s - app setup

# SDKMan
sdk install jbang

# Homebrew (macOS)
brew install jbangdev/tap/jbang

# Chocolatey (Windows)
choco install jbang

# Scoop (Windows)
scoop install jbang

Überprüfen Sie die Installation:

jbang --version
Standard-Java-Version

Wenn Sie JBang zum ersten Mal ausführen und kein JDK installiert ist, lädt JBang automatisch eines herunter. Sie können die JDK-Version und den Anbieter festlegen, bevor Sie JBang ausführen:

export JBANG_DEFAULT_JAVA_VERSION=21
export JBANG_JDK_VENDOR=temurin
Mehr über JBang erfahren

Eine umfassende Dokumentation zu JBang finden Sie hier:

Ein webforJ-Skript erstellen​

Erstellen Sie eine Datei namens HelloWorld.java mit folgendem Inhalt:

HelloWorld.java
///usr/bin/env jbang "$0" "$@" ; exit $?
//DEPS com.webforj:webforj-jbang-starter:25.11
//JAVA 21

package bang;

import com.webforj.App;
import com.webforj.annotation.Routify;
import com.webforj.component.Composite;
import com.webforj.component.Theme;
import com.webforj.component.button.Button;
import com.webforj.component.button.ButtonTheme;
import com.webforj.component.field.TextField;
import com.webforj.component.icons.FeatherIcon;
import com.webforj.component.layout.flexlayout.FlexDirection;
import com.webforj.component.layout.flexlayout.FlexLayout;
import com.webforj.component.toast.Toast;
import com.webforj.router.annotation.Route;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@Routify
public class HelloWorld extends App {
public static void main(String[] args) {
SpringApplication.run(HelloWorld.class, args);
}
}

@Route("/")
class MainView extends Composite<FlexLayout> {

private final FlexLayout self = getBoundComponent();
private TextField hello = new TextField("What is your name?");
private Button btn = new Button("Say Hello");

public MainView() {
self.setDirection(FlexDirection.COLUMN);
self.setMaxWidth(300);
self.setStyle("margin", "1em auto");

btn.setPrefixComponent(FeatherIcon.BELL.create())
.setTheme(ButtonTheme.PRIMARY)
.addClickListener(e -> Toast.show("Welcome to webforJ JBang Starter " + hello.getValue() + "!", Theme.GRAY));

self.add(hello, btn);
}
}

Aufbau des Skripts verstehen​

ZeileZweck
///usr/bin/env jbang "$0" "$@" ; exit $?Shebang-Zeile, mit der das Skript direkt auf Unix-Systemen ausgeführt werden kann
//JAVA 21Gibt die erforderliche Mindestversion von Java an; JBang lädt sie bei Bedarf automatisch herunter
//DEPS com.webforj:webforj-jbang-starter:25.11Deklariert den JBang-Starter von webforJ mithilfe von Maven-Koordinaten als Abhängigkeit
@SpringBootApplicationAktiviert die Spring-Boot-Autokonfiguration
extends AppMacht diese Klasse zu einer webforJ-App

Die Abhängigkeit webforj-jbang-starter enthält alles, was zum Ausführen einer webforJ-App benötigt wird: den Spring-Boot-Starter, Entwicklungstools und das automatische Öffnen des Browsers.

Version

Ersetzen Sie 25.11 durch die neueste webforJ-Version. Die aktuellste Version finden Sie auf Maven Central.

Abhängigkeiten hinzufügen​

Sie können zusätzliche Maven-Abhängigkeiten mit mehreren //DEPS-Zeilen hinzufügen:

///usr/bin/env jbang "$0" "$@" ; exit $?
//JAVA 21
//DEPS com.webforj:webforj-jbang-starter:25.11
//DEPS com.google.code.gson:gson:2.11.0
//DEPS org.apache.commons:commons-lang3:3.14.0

Abhängigkeiten verwenden standardmäßige Maven-Koordinaten (groupId:artifactId:version). JBang lädt sie beim ersten Ausführen automatisch von Maven Central herunter.

Skript ausführen​

Führen Sie das Skript mit JBang aus:

jbang HelloWorld.java

JBang wird:

  1. Abhängigkeiten herunterladen (nur beim ersten Ausführen)
  2. Das Skript kompilieren
  3. Den eingebetteten Server auf einem zufällig ausgewählten verfügbaren Port starten
  4. Ihren Standardbrowser mit der App öffnen

Skript ausführbar machen​

Auf Unix-Systemen können Sie das Skript direkt ausführbar machen:

chmod +x HelloWorld.java
./HelloWorld.java

Dies funktioniert aufgrund der Shebang-Zeile am Anfang der Datei.

IDE-Unterstützung​

JBang lässt sich in beliebte Java-IDEs integrieren, darunter VS Code, IntelliJ IDEA, Eclipse und weitere. Diese Integrationen bieten Funktionen wie die automatische Vervollständigung von Direktiven, die automatische Auflösung von Abhängigkeiten sowie die Möglichkeit, Skripte direkt in der IDE auszuführen und zu debuggen.

Anweisungen zur Einrichtung und eine Liste der unterstützten Editoren finden Sie in der Dokumentation zur JBang-IDE-Integration.

Konfiguration​

Der JBang-Starter von webforJ enthält sinnvolle, für Skripte optimierte Standardeinstellungen. Sie können das Verhalten mithilfe von Systemeigenschaften anpassen.

Automatisches Beenden​

Standardmäßig wird der Server automatisch beendet, wenn alle mit der App verbundenen Browser-Tabs geschlossen werden. So bleibt Ihr Entwicklungsworkflow aufgeräumt und es laufen keine verwaisten Server weiter.

EigenschaftStandardwertBeschreibung
webforj.jbang.auto-shutdowntrueAktiviert oder deaktiviert das automatische Beenden
webforj.jbang.idle-timeout5Sekunden, die nach dem Trennen des letzten Browsers bis zum Beenden gewartet wird

So deaktivieren Sie das automatische Beenden:

jbang -Dwebforj.jbang.auto-shutdown=false HelloWorld.java

So ändern Sie die Leerlaufzeitüberschreitung:

jbang -Dwebforj.jbang.idle-timeout=30 HelloWorld.java

Standardeinstellungen​

Der JBang-Starter konfiguriert die folgenden Standardeinstellungen:

EinstellungWertBeschreibung
server.port0Zufällige Portzuweisung, um Konflikte beim Ausführen mehrerer Skripte zu vermeiden
server.shutdownimmediateSchnelles Beenden, damit Skripte zügig beendet werden
spring.main.banner-modeoffBlendet das Spring-Boot-Banner aus, um die Ausgabe übersichtlicher zu halten
logging.level.rootERRORMinimale Protokollierung, damit die Konsolenausgabe übersichtlich bleibt
logging.level.com.webforjWARNZeigt nur Warnungen und Fehler von webforJ an
webforj.devtools.browser.opentrueÖffnet beim Start der App automatisch den Browser

Neubereitstellung und Live-Reload​

JBang-Skripte unterstützen kein Live-Reload. So übernehmen Sie Änderungen:

  1. Beenden Sie das laufende Skript (schließen Sie den Browser-Tab oder drücken Sie Ctrl+C)
  2. Bearbeiten Sie Ihren Code
  3. Führen Sie jbang HelloWorld.java erneut aus

Für eine automatische Neubereitstellung während der Entwicklung können Sie ein vollständiges Maven-Projekt mit Spring DevTools verwenden. Weitere Informationen finden Sie in der Dokumentation zu Live-Reload.

Zu einem vollständigen Projekt wechseln​

Wenn Ihr Prototyp über eine einzelne Datei hinauswächst, erstellen Sie ein richtiges Projekt mit startforJ oder dem Maven-Archetyp. Sie können die Logik Ihres Skripts direkt in die generierte Projektstruktur übernehmen.

Weiterlernen