JBang 25.11
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, geenbuild.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
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
Voor uitgebreide JBang-documentatie, zie:
- JBang Beginnen - Installatie en basisprincipes
- Script Directives Referentie - Alle beschikbare richtlijnen
- Afhankelijkheden - Geavanceerd afhankelijke beheer
Een webforJ-script maken
Maak een bestand genaamd HelloWorld.java met de volgende inhoud:
///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
| Regel | Doel |
|---|---|
///usr/bin/env jbang "$0" "$@" ; exit $? | Shebang-regel die de uitvoering van het script direct op Unix-systemen mogelijk maakt |
//JAVA 21 | Specificeert de minimale vereiste Java-versie; JBang downloadt deze automatisch indien nodig |
//DEPS com.webforj:webforj-jbang-starter:25.11 | Verklaart de webforJ JBang-starter als afhankelijkheid met behulp van Maven-coördinaten |
@SpringBootApplication | Schakelt de automatische configuratie van Spring Boot in |
extends App | Maakt 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.
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:
- Afhankelijkheden downloaden (alleen bij de eerste uitvoering)
- Het script compileren
- De ingebouwde server starten op een willekeurige beschikbare poort
- 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.
| Property | Standaard | Beschrijving |
|---|---|---|
webforj.jbang.auto-shutdown | true | Zet automatische afsluiting aan of uit |
webforj.jbang.idle-timeout | 5 | Seconden 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:
| Instelling | Waarde | Beschrijving |
|---|---|---|
server.port | 0 | Willekeurige poortaansluiting om conflicten te voorkomen bij het uitvoeren van meerdere scripts |
server.shutdown | immediate | Snelle afsluiting voor een snelle beëindiging van het script |
spring.main.banner-mode | off | Verbergt de Spring Boot-banner voor schonere uitvoer |
logging.level.root | ERROR | Minimale logging om de console-uitvoer schoon te houden |
logging.level.com.webforj | WARN | Toont alleen waarschuwingen en fouten van webforJ |
webforj.devtools.browser.open | true | Opent automatisch de browser wanneer de app start |
Heruitrol en live herladen
JBang-scripts ondersteunen geen live herladen. Om wijzigingen te zien:
- Stop het draaiende script (sluit het browsertabblad of druk op
Ctrl+C) - Bewerk je code
- Voer
jbang HelloWorld.javaopnieuw 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.