JBang
Java como scripting, sin configuración
¿Qué es JBang?
JBang es una herramienta revolucionaria que permite ejecutar código Java como scripts, eliminando la complejidad tradicional de configuración de proyectos. Con JBang puedes escribir y ejecutar código Java instantáneamente, similar a como lo harías con Python o JavaScript.
El problema que resuelve:
- Elimina la necesidad de configurar proyectos complejos
- Permite ejecutar Java con una sola línea de comando
- Gestiona dependencias automáticamente
- Soporta múltiples lenguajes JVM (Java, Kotlin, Groovy)
Instalación Rápida
Opción recomendada (Linux/macOS/WSL):
# Instalar JBang fácilmente
curl -Ls https://sh.jbang.dev | bash -s - app setup
curl -Ls https://sh.jbang.dev | bash -s - app setup
Windows PowerShell:
iex "& { $(iwr -useb https://ps.jbang.dev) } app setup"
Verificar instalación:
jbang --version
Tu primer script en 30 segundos
1. Crear un script básico:
jbang init hola.java
2. Contenido generado:
///usr/bin/env jbang "$0" "$@" ; exit $?
class hola {
public static void main(String[] args) {
if(args.length==0) {
System.out.println("¡Hola Mundo!");
} else {
System.out.println("¡Hola " + args[0] + "!");
}
}
}
class hola {
public static void main(String[] args) {
if(args.length==0) {
System.out.println("¡Hola Mundo!");
} else {
System.out.println("¡Hola " + args[0] + "!");
}
}
}
3. Ejecutar:
# Output: ¡Hola Mundo!
jbang hola.java
# Output: ¡Hola María!
jbang hola.java María
jbang hola.java
# Output: ¡Hola María!
jbang hola.java María
Características Principales
1. Gestión de Dependencias
//DEPS info.picocli:picocli:4.6.3
//DEPS com.fasterxml.jackson.core:jackson-databind:2.15.2
//DEPS com.fasterxml.jackson.core:jackson-databind:2.15.2
2. Soporte Multi-lenguaje
- Java (.java)
- Kotlin (.kt)
- Groovy (.groovy)
- JShell (.jsh)
3. Plantillas Integradas
# Crear aplicación CLI
jbang init --template=cli miapp.java
# Crear servidor web
jbang init --template=qcli webserver.java
jbang init --template=cli miapp.java
# Crear servidor web
jbang init --template=qcli webserver.java
Ejemplo Real: Cliente HTTP
///usr/bin/env jbang "$0" "$@" ; exit $?
//DEPS com.fasterxml.jackson.core:jackson-databind:2.15.2
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import com.fasterxml.jackson.databind.ObjectMapper;
class httpClient {
public static void main(String[] args) throws Exception {
String url = "https://api.github.com/users/jbangdev";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println("Status: " + response.statusCode());
System.out.println("Body: " + response.body());
}
}
//DEPS com.fasterxml.jackson.core:jackson-databind:2.15.2
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import com.fasterxml.jackson.databind.ObjectMapper;
class httpClient {
public static void main(String[] args) throws Exception {
String url = "https://api.github.com/users/jbangdev";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println("Status: " + response.statusCode());
System.out.println("Body: " + response.body());
}
}
Ejecutar:
jbang httpClient.java
💡 Consejo Práctico
Puedes ejecutar scripts directamente desde GitHub sin descargarlos localmente:
jbang https://github.com/usuario/repo/blob/main/script.java
Comentarios
Publicar un comentario