Passer au contenu principal

JBang 25.11

Ouvrir dans ChatGPT

JBang est un outil qui vous permet d'exécuter du code Java sous forme de scripts, sans fichiers de construction, configuration de projet ou compilation manuelle. L'intégration de webforJ avec JBang vous permet de créer rapidement des applications webforJ, idéales pour la prototypage rapide, l'apprentissage et les démos rapides, sans avoir besoin des dépendances et de l'infrastructure d'un programme Java entièrement développé.

Pourquoi utiliser JBang avec webforJ

Les projets webforJ traditionnels utilisent Maven ou Gradle avec plusieurs fichiers de configuration et une structure de projet standard. Cette configuration est standard pour les applications de production mais peut sembler lourde pour des expériences ou des démos simples.

Avec JBang, vous pouvez :

  • Commencer instantanément : Écrire un seul fichier .java et l'exécuter immédiatement
  • Éviter la configuration du projet : Pas de pom.xml, pas de build.gradle, pas de structure de répertoire
  • Partager facilement : Envoyer à quelqu'un un seul fichier qu'il peut exécuter avec une commande
  • Apprendre plus rapidement : Se concentrer sur les concepts de webforJ sans la complexité des outils de construction

L'intégration inclut l'arrêt automatique du serveur lorsque vous fermez l'onglet du navigateur, gardant ainsi votre flux de travail de développement propre.

Prérequis

Installer JBang

Choisissez votre méthode d'installation préférée :

# Universel (Linux/macOS/Windows avec 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

Vérifiez l'installation :

jbang --version
Version Java par défaut

Lorsque vous exécutez JBang pour la première fois sans JDK installé, JBang télécharge automatiquement un. Vous pouvez définir la version et le fournisseur du JDK avant d'exécuter JBang :

export JBANG_DEFAULT_JAVA_VERSION=21
export JBANG_JDK_VENDOR=temurin
En savoir plus sur JBang

Pour une documentation complète sur JBang, consultez :

Création d'un script webforJ

Créez un fichier nommé HelloWorld.java avec le contenu suivant :

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("Quel est votre nom ?");
private Button btn = new Button("Dire Bonjour");

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

self.add(hello, btn);
}
}

Comprendre la structure du script

LigneObjet
///usr/bin/env jbang "$0" "$@" ; exit $?Ligne shebang permettant d'exécuter le script directement sur les systèmes Unix
//JAVA 21Spécifie la version minimum Java requise ; JBang la télécharge automatiquement si nécessaire
//DEPS com.webforj:webforj-jbang-starter:25.11Déclare le starter webforJ JBang comme dépendance en utilisant des coordonnées Maven
@SpringBootApplicationActive la configuration automatique de Spring Boot
extends AppFait de cette classe une application webforJ

La dépendance webforj-jbang-starter inclut tout ce dont vous avez besoin pour exécuter une application webforJ : le starter Spring Boot, les outils de développement et l'ouverture automatique du navigateur.

Version

Remplacez 25.11 par la dernière version de webforJ. Vérifiez Maven Central pour la dernière version publiée.

Ajout de dépendances

Vous pouvez ajouter des dépendances Maven supplémentaires en utilisant plusieurs lignes //DEPS :

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

Les dépendances utilisent des coordonnées Maven standard (groupId:artifactId:version). JBang les récupère automatiquement depuis Maven Central lors de la première exécution.

Exécution de votre script

Exécutez le script avec JBang :

jbang HelloWorld.java

JBang fera :

  1. Téléchargez les dépendances (uniquement lors de la première exécution)
  2. Compilez le script
  3. Démarrez le serveur intégré sur un port aléatoire disponible
  4. Ouvrez votre navigateur par défaut vers l'application

Rendre le script exécutable

Sur les systèmes Unix, vous pouvez rendre le script directement exécutable :

chmod +x HelloWorld.java
./HelloWorld.java

Cela fonctionne grâce à la ligne shebang en haut du fichier.

Prise en charge d'IDE

JBang s'intègre avec des IDE Java populaires, y compris VS Code, IntelliJ IDEA, Eclipse et d'autres. Ces intégrations offrent des fonctionnalités telles que l'autocomplétion des directives, la résolution automatique des dépendances et la possibilité d'exécuter et de déboguer des scripts directement à partir de l'IDE.

Consultez la documentation d'intégration IDE de JBang pour des instructions d'installation et les éditeurs pris en charge.

Configuration

Le starter webforJ JBang inclut des valeurs par défaut sensées optimisées pour le script. Vous pouvez personnaliser le comportement en utilisant des propriétés système.

Arrêt automatique

Par défaut, le serveur s'arrête automatiquement lorsque tous les onglets du navigateur connectés à l'application sont fermés. Cela garde votre flux de travail de développement propre en ne laissant pas de serveurs orphelins en cours d'exécution.

PropriétéPar défautDescription
webforj.jbang.auto-shutdowntrueActive ou désactive l'arrêt automatique
webforj.jbang.idle-timeout5Secondes à attendre après la dernière déconnexion du navigateur avant l'arrêt

Pour désactiver l'arrêt automatique :

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

Pour changer le délai d'attente inactif :

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

Paramètres par défaut

Le starter JBang configure les valeurs par défaut suivantes :

RéglageValeurDescription
server.port0Attribution de port aléatoire pour éviter les conflits lors de l'exécution de plusieurs scripts
server.shutdownimmediateArrêt rapide pour une terminaison rapide du script
spring.main.banner-modeoffMasque la bannière de Spring Boot pour une sortie plus propre
logging.level.rootERRORJournalisation minimale pour garder la sortie de la console propre
logging.level.com.webforjWARNAffiche uniquement les avertissements et les erreurs de webforJ
webforj.devtools.browser.opentrueOuvre automatiquement le navigateur lorsque l'application démarre

Redeploiement et rechargement en direct

Les scripts JBang ne prennent pas en charge le rechargement en direct. Pour voir les changements :

  1. Arrêtez le script en cours d'exécution (fermez l'onglet du navigateur ou appuyez sur Ctrl+C)
  2. Modifiez votre code
  3. Exécutez à nouveau jbang HelloWorld.java

Pour un déploiement automatique lors du développement, envisagez d'utiliser un projet Maven complet avec Spring DevTools. Consultez la documentation sur le rechargement en direct pour plus de détails.

Transition vers un projet complet

Lorsque votre prototype dépasse un seul fichier, créez un projet approprié en utilisant startforJ ou l'archétype Maven. Vous pouvez copier directement la logique de votre script dans la structure de projet générée.