Overslaan naar hoofdinhoud

JBang 25.11

Openen in ChatGPT

JBang is een tool waarmee je Java-code als scripts kunt uitvoeren, zonder buildbestanden, projectconfiguratie of handmatige compilatie. Met de webforJ JBang-integratie kun je snel webforJ-apps maken. De integratie is vooral geschikt voor rapid prototyping, leren en snelle demo's, zonder de traditionele afhankelijkheden en infrastructuur van een volledig Java-programma.

Waarom JBang gebruiken met webforJ​

Traditionele webforJ-projecten gebruiken Maven of Gradle, met meerdere configuratiebestanden en een standaardprojectstructuur. Deze opzet is gebruikelijk voor productie-apps, maar kan omslachtig aanvoelen voor eenvoudige experimenten of demo's.

Met JBang kun je:

  • Direct aan de slag: schrijf één .java-bestand en voer het meteen uit
  • Projectconfiguratie overslaan: geen pom.xml, geen build.gradle, geen mappenstructuur
  • Eenvoudig delen: stuur iemand één bestand dat diegene met één opdracht kan uitvoeren
  • Sneller leren: focus op webforJ-concepten zonder de complexiteit van buildtools

De integratie sluit de server automatisch af wanneer je het browsertabblad sluit, zodat je ontwikkelworkflow overzichtelijk blijft.

Vereisten​

JBang installeren​

Kies de gewenste installatiemethode:

# 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

Controleer de installatie:

jbang --version
Standaard Java-versie

Wanneer je JBang voor het eerst uitvoert zonder dat er een JDK is geïnstalleerd, downloadt JBang er automatisch een. Je kunt de JDK-versie en -leverancier instellen voordat je JBang uitvoert:

export JBANG_DEFAULT_JAVA_VERSION=21
export JBANG_JDK_VENDOR=temurin
Meer informatie over JBang

Raadpleeg de volgende bronnen voor uitgebreide documentatie over JBang:

Een webforJ-script maken​

Maak een bestand met de naam HelloWorld.java en de volgende inhoud:

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);
}
}

De scriptstructuur begrijpen​

RegelDoel
///usr/bin/env jbang "$0" "$@" ; exit $?Shebang-regel waarmee het script rechtstreeks op Unix-systemen kan worden uitgevoerd
//JAVA 21Geeft de minimaal vereiste Java-versie aan; JBang downloadt deze automatisch indien nodig
//DEPS com.webforj:webforj-jbang-starter:25.11Declareert de webforJ JBang-starter als afhankelijkheid met Maven-coördinaten
@SpringBootApplicationSchakelt de automatische configuratie van Spring Boot in
extends AppMaakt van deze klasse een webforJ-app

De afhankelijkheid webforj-jbang-starter bevat alles wat nodig is om een webforJ-app uit te voeren: de Spring Boot-starter, ontwikkeltools en het automatisch openen van de browser.

Versie

Vervang 25.11 door de nieuwste webforJ-versie. Kijk op Maven Central voor de meest recente release.

Afhankelijkheden toevoegen​

Je kunt extra Maven-afhankelijkheden toevoegen met meerdere //DEPS-regels:

///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

Afhankelijkheden gebruiken de standaard Maven-coördinaten (groupId:artifactId:version). JBang haalt ze bij de eerste uitvoering automatisch op van Maven Central.

Je script uitvoeren​

Voer het script uit met JBang:

jbang HelloWorld.java

JBang zal:

  1. Afhankelijkheden downloaden (alleen de eerste keer)
  2. Het script compileren
  3. De ingesloten server starten op een willekeurige beschikbare poort
  4. Je standaardbrowser openen met de app

Het script uitvoerbaar maken​

Op Unix-systemen kun je het script rechtstreeks uitvoerbaar maken:

chmod +x HelloWorld.java
./HelloWorld.java

Dit werkt dankzij de shebang-regel bovenaan het bestand.

IDE-ondersteuning​

JBang kan worden geïntegreerd met populaire Java-IDE's, waaronder VS Code, IntelliJ IDEA, Eclipse en andere. Deze integraties bieden functies zoals automatisch aanvullen van directives, automatische afhankelijkhedenresolutie en de mogelijkheid om scripts rechtstreeks vanuit de IDE uit te voeren en te debuggen.

Raadpleeg de documentatie over IDE-integratie van JBang voor installatie-instructies en ondersteunde editors.

Configuratie​

De webforJ JBang-starter bevat passende standaardinstellingen die zijn geoptimaliseerd voor scripting. Je kunt het gedrag aanpassen met behulp van systeemeigenschappen.

Automatisch afsluiten​

Standaard wordt de server automatisch afgesloten wanneer alle browsertabbladen die met de app zijn verbonden, worden gesloten. Zo blijft je ontwikkelworkflow overzichtelijk en blijven er geen verweesde servers actief.

EigenschapStandaardBeschrijving
webforj.jbang.auto-shutdowntrueAutomatisch afsluiten in- of uitschakelen
webforj.jbang.idle-timeout5Het aantal seconden dat na de verbinding van de laatste browser wordt gewacht voordat de server wordt afgesloten

Schakel automatisch afsluiten uit:

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

Wijzig de time-out voor inactiviteit:

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

Standaardinstellingen​

De JBang-starter configureert de volgende standaardinstellingen:

InstellingWaardeBeschrijving
server.port0Willekeurige poorttoewijzing om conflicten te voorkomen wanneer meerdere scripts worden uitgevoerd
server.shutdownimmediateSnel afsluiten zodat scripts vlot kunnen worden beëindigd
spring.main.banner-modeoffVerbergt de Spring Boot-banner voor een overzichtelijkere uitvoer
logging.level.rootERRORMinimale logging om de console-uitvoer overzichtelijk te houden
logging.level.com.webforjWARNToont alleen waarschuwingen en fouten van webforJ
webforj.devtools.browser.opentrueOpent de browser automatisch wanneer de app start

Opnieuw implementeren en live herladen​

JBang-scripts ondersteunen geen live herladen. Zo bekijk je wijzigingen:

  1. Stop het actieve script (sluit het browsertabblad of druk op Ctrl+C)
  2. Bewerk je code
  3. Voer jbang HelloWorld.java opnieuw uit

Overweeg voor automatische herimplementatie tijdens de ontwikkeling een volledig Maven-project met Spring DevTools. Raadpleeg de documentatie over live herladen voor meer informatie.

Overstappen naar een volledig project​

Wanneer je prototype uitgroeit tot meer dan één bestand, maak je een project aan met startforJ of de Maven-archetype. Je kunt de logica uit je script rechtstreeks kopiëren naar de gegenereerde projectstructuur.

Blijf leren