Overslaan naar hoofdinhoud

JBang 25.11

Openen in ChatGPT

JBang is een tool waarmee je Java-code kunt uitvoeren als scripts, zonder buildbestanden, projectinstellingen of handmatige compilatie. De integratie van webforJ JBang stelt je in staat om snel webforJ-apps te creëren, het meest geschikt voor snelle 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 standaard projectstructuur. Deze opzet is standaard voor productie-apps, maar kan zwaar aanvoelen voor eenvoudige experimenten of demo's.

Met JBang kun je:

  • Direct starten: Schrijf een enkel .java-bestand en voer het onmiddellijk uit
  • Projectinstellingen overslaan: Geen pom.xml, geen build.gradle, geen mapstructuur
  • Gemakkelijk delen: Stuur iemand een enkel bestand dat ze met één commando kunnen uitvoeren
  • Sneller leren: Focus op webforJ-concepten zonder de complexiteit van buildtools

De integratie omvat automatische serverafsluiting wanneer je het browsertabblad sluit, zodat je ontwikkelingsworkflow schoon blijft.

Vereisten

JBang installeren

Kies je favoriete installatie methode:

# Universeel (Linux/macOS/Windows met 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 de eerste keer uitvoert zonder een JDK geïnstalleerd, downloadt JBang 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 leren over JBang

Voor uitgebreide JBang-documentatie, zie:

Een webforJ-script maken

Maak een bestand genaamd HelloWorld.java met 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("Wat is je naam?");
private Button btn = new Button("Zeg Hallo");

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("Welkom bij webforJ JBang Starter " + hello.getValue() + "!", Theme.GRAY));

self.add(hello, btn);
}
}

De scriptstructuur begrijpen

RegelDoel
///usr/bin/env jbang "$0" "$@" ; exit $?Shebang-regel die de uitvoering van het script direct op Unix-systemen mogelijk maakt
//JAVA 21Specificeert de minimale vereiste Java-versie; JBang downloadt deze automatisch indien nodig
//DEPS com.webforj:webforj-jbang-starter:25.11Verklaart de webforJ JBang-starter als afhankelijkheid met behulp van Maven-coördinaten
@SpringBootApplicationSchakelt de automatische configuratie van Spring Boot in
extends AppMaakt 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 automatische browseropening.

Versie

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

Afhankelijkheden toevoegen

Je kunt aanvullende 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 standaard Maven-coördinaten (groupId:artifactId:version). JBang haalt ze automatisch op van Maven Central bij de eerste uitvoering.

Je script uitvoeren

Voer het script uit met JBang:

jbang HelloWorld.java

JBang zal:

  1. Afhankelijkheden downloaden (alleen bij de eerste uitvoering)
  2. Het script compileren
  3. De ingebouwde server starten op een willekeurige beschikbare poort
  4. Je standaardbrowser openen naar de app

Het script uitvoerbaar maken

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

chmod +x HelloWorld.java
./HelloWorld.java

Dit werkt vanwege de shebang-regel aan de bovenkant van het bestand.

IDE-ondersteuning

JBang integreert met populaire Java IDE's waaronder VS Code, IntelliJ IDEA, Eclipse en anderen. Deze integraties bieden functies zoals richtlijn-autocompletion, automatische afhankelijkheidsresolutie en de mogelijkheid om scripts direct vanuit de IDE uit te voeren en te debuggen.

Zie de JBang IDE-integratiedocumentatie voor installatie-instructies en ondersteunde editors.

Configuratie

De webforJ JBang-starter bevat redelijke standaardinstellingen die zijn geoptimaliseerd voor scripting. Je kunt het gedrag aanpassen met systeemproperties.

Automatische afsluiting

Standaard sluit de server automatisch af wanneer alle browsertabs die verbonden zijn met de app zijn gesloten. Dit houdt je ontwikkelingsworkflow schoon door geen weesservers achter te laten die draaien.

PropertyStandaardBeschrijving
webforj.jbang.auto-shutdowntrueZet automatische afsluiting aan of uit
webforj.jbang.idle-timeout5Seconden wachten na de laatste browserontkoppeling voordat de server afsluit

Om automatische afsluiting uit te schakelen:

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

Om de idle time-out te wijzigen:

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

Standaardinstellingen

De JBang-starter configureert de volgende standaardinstellingen:

InstellingWaardeBeschrijving
server.port0Willekeurige poortaansluiting om conflicten te voorkomen bij het uitvoeren van meerdere scripts
server.shutdownimmediateSnelle afsluiting voor een snelle beëindiging van het script
spring.main.banner-modeoffVerbergt de Spring Boot-banner voor schonere uitvoer
logging.level.rootERRORMinimale logging om de console-uitvoer schoon te houden
logging.level.com.webforjWARNToont alleen waarschuwingen en fouten van webforJ
webforj.devtools.browser.opentrueOpent automatisch de browser wanneer de app start

Heruitrol en live herladen

JBang-scripts ondersteunen geen live herladen. Om wijzigingen te zien:

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

Voor automatische heruitrol tijdens de ontwikkeling, overweeg het gebruik van een volledig Maven-project met Spring DevTools. Zie de live herlaad documentatie voor meer details.

Overgang naar een volledig project

Wanneer je prototype groter wordt dan een enkel bestand, maak dan een goed project met behulp van startforJ of de Maven-archetype. Je kunt je scriptlogica direct kopiëren naar de gegenereerde projectstructuur.