Saltar al contenido principal

JBang 25.11

Abrir en ChatGPT

JBang es una herramienta que te permite ejecutar código Java como scripts, sin archivos de construcción, configuración de proyectos o compilación manual. La integración de webforJ JBang te permite crear aplicaciones webforJ rápidamente, más adecuadas para prototipos rápidos, aprendizaje y demostraciones rápidas, sin necesidad de las dependencias e infraestructura tradicionales de un programa Java completamente desarrollado.

Por qué usar JBang con webforJ

Los proyectos tradicionales de webforJ utilizan Maven o Gradle con múltiples archivos de configuración y una estructura de proyecto estándar. Esta configuración es estándar para aplicaciones de producción, pero puede sentirse pesada para experimentos sencillos o demostraciones.

Con JBang, puedes:

  • Comenzar al instante: Escribe un solo archivo .java y ejecútalo de inmediato
  • Omitir la configuración del proyecto: Sin pom.xml, sin build.gradle, sin estructura de directorios
  • Compartir fácilmente: Envía a alguien un solo archivo que puede ejecutar con un comando
  • Aprender más rápido: Enfócate en los conceptos de webforJ sin la complejidad de las herramientas de construcción

La integración incluye el apagado automático del servidor cuando cierras la pestaña del navegador, manteniendo tu flujo de trabajo de desarrollo limpio.

Requisitos previos

Instalar JBang

Elige tu método de instalación preferido:

# Universal (Linux/macOS/Windows con 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

Verifica la instalación:

jbang --version
Versión de Java predeterminada

Cuando ejecutas JBang por primera vez sin un JDK instalado, JBang descarga uno automáticamente. Puedes establecer la versión y el proveedor del JDK antes de ejecutar JBang:

export JBANG_DEFAULT_JAVA_VERSION=21
export JBANG_JDK_VENDOR=temurin
Aprende más sobre JBang

Para documentación integral de JBang, ve:

Creando un script de webforJ

Crea un archivo llamado HelloWorld.java con el siguiente contenido:

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("¿Cuál es tu nombre?");
private Button btn = new Button("Decir Hola");

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

self.add(hello, btn);
}
}

Entendiendo la estructura del script

LíneaPropósito
///usr/bin/env jbang "$0" "$@" ; exit $?Línea shebang que permite ejecutar el script directamente en sistemas Unix
//JAVA 21Especifica la versión mínima de Java requerida; JBang la descarga automáticamente si es necesario
//DEPS com.webforj:webforj-jbang-starter:25.11Declara el iniciador de webforJ JBang como una dependencia usando coordenadas de Maven
@SpringBootApplicationHabilita la autoconfiguración de Spring Boot
extends AppHace que esta clase sea una aplicación de webforJ

La dependencia webforj-jbang-starter incluye todo lo necesario para ejecutar una aplicación de webforJ: el iniciador de Spring Boot, herramientas de desarrollo y apertura automática del navegador.

Versión

Reemplaza 25.11 con la última versión de webforJ. Consulta Maven Central para la versión más reciente.

Agregando dependencias

Puedes agregar dependencias de Maven adicionales usando múltiples líneas //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

Las dependencias utilizan coordenadas de Maven estándar (groupId:artifactId:version). JBang las obtiene automáticamente de Maven Central en la primera ejecución.

Ejecutando tu script

Ejecuta el script con JBang:

jbang HelloWorld.java

JBang hará lo siguiente:

  1. Descargar las dependencias (solo en la primera ejecución)
  2. Compilar el script
  3. Iniciar el servidor embebido en un puerto aleatorio disponible
  4. Abrir tu navegador predeterminado en la aplicación

Haciendo el script ejecutable

En sistemas Unix, puedes hacer que el script sea directamente ejecutable:

chmod +x HelloWorld.java
./HelloWorld.java

Esto funciona gracias a la línea shebang en la parte superior del archivo.

Soporte IDE

JBang se integra con IDEs populares de Java, incluyendo VS Code, IntelliJ IDEA, Eclipse y otros. Estas integraciones proporcionan características como autocompletado de directivas, resolución automática de dependencias y la capacidad de ejecutar y depurar scripts directamente desde el IDE.

Consulta la documentación de integración de JBang con IDE para instrucciones de configuración y editores compatibles.

Configuración

El iniciador de webforJ JBang incluye valores predeterminados sensatos optimizados para scripting. Puedes personalizar el comportamiento usando propiedades del sistema.

Apagado automático

Por defecto, el servidor se apaga automáticamente cuando se cierran todas las pestañas del navegador conectadas a la aplicación. Esto mantiene tu flujo de trabajo de desarrollo limpio al no dejar servidores huérfanos en ejecución.

PropiedadPredeterminadoDescripción
webforj.jbang.auto-shutdowntrueActiva o desactiva el apagado automático
webforj.jbang.idle-timeout5Segundos a esperar después de que la última desconexión del navegador antes de apagar

Para desactivar el apagado automático:

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

Para cambiar el tiempo de espera inactivo:

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

Configuraciones predeterminadas

El iniciador de JBang configura los siguientes valores predeterminados:

ConfiguraciónValorDescripción
server.port0Asignación de puerto aleatorio para evitar conflictos al ejecutar múltiples scripts
server.shutdownimmediateApagado rápido para una terminación rápida del script
spring.main.banner-modeoffOculta el banner de Spring Boot para una salida más limpia
logging.level.rootERRORRegistro mínimo para mantener la salida de la consola limpia
logging.level.com.webforjWARNMuestra solo advertencias y errores de webforJ
webforj.devtools.browser.opentrueAbre automáticamente el navegador cuando la aplicación se inicia

Redistribución y recarga en vivo

Los scripts de JBang no admiten recarga en vivo. Para ver cambios:

  1. Detén el script en ejecución (cierra la pestaña del navegador o presiona Ctrl+C)
  2. Edita tu código
  3. Ejecuta jbang HelloWorld.java nuevamente

Para la redistribución automática durante el desarrollo, considera usar un proyecto Maven completo con Spring DevTools. Consulta la documentación de recarga en vivo para más detalles.

Transición a un proyecto completo

Cuando tu prototipo crezca más allá de un solo archivo, crea un proyecto adecuado usando startforJ o el arquetipo de Maven. Puedes copiar la lógica de tu script directamente en la estructura de proyecto generada.