JBang 25.11
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
.javaet l'exécuter immédiatement - Éviter la configuration du projet : Pas de
pom.xml, pas debuild.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
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
Pour une documentation complète sur JBang, consultez :
- JBang Getting Started - Installation et bases
- Script Directives Reference - Toutes les directives disponibles
- Dependencies - Gestion des dépendances avancée
Création d'un script webforJ
Créez un fichier nommé HelloWorld.java avec le contenu suivant :
///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
| Ligne | Objet |
|---|---|
///usr/bin/env jbang "$0" "$@" ; exit $? | Ligne shebang permettant d'exécuter le script directement sur les systèmes Unix |
//JAVA 21 | Spécifie la version minimum Java requise ; JBang la télécharge automatiquement si nécessaire |
//DEPS com.webforj:webforj-jbang-starter:25.11 | Déclare le starter webforJ JBang comme dépendance en utilisant des coordonnées Maven |
@SpringBootApplication | Active la configuration automatique de Spring Boot |
extends App | Fait 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.
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 :
- Téléchargez les dépendances (uniquement lors de la première exécution)
- Compilez le script
- Démarrez le serveur intégré sur un port aléatoire disponible
- 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éfaut | Description |
|---|---|---|
webforj.jbang.auto-shutdown | true | Active ou désactive l'arrêt automatique |
webforj.jbang.idle-timeout | 5 | Secondes à 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églage | Valeur | Description |
|---|---|---|
server.port | 0 | Attribution de port aléatoire pour éviter les conflits lors de l'exécution de plusieurs scripts |
server.shutdown | immediate | Arrêt rapide pour une terminaison rapide du script |
spring.main.banner-mode | off | Masque la bannière de Spring Boot pour une sortie plus propre |
logging.level.root | ERROR | Journalisation minimale pour garder la sortie de la console propre |
logging.level.com.webforj | WARN | Affiche uniquement les avertissements et les erreurs de webforJ |
webforj.devtools.browser.open | true | Ouvre 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 :
- Arrêtez le script en cours d'exécution (fermez l'onglet du navigateur ou appuyez sur
Ctrl+C) - Modifiez votre code
- 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.