Hacía tiempo que no encontraba una herramienta Java tan chula como esta, así que vamos a echarle un ojo a JBang 😊.
Seguro que muchos de vosotros seguís echando de menos poder usar Java como se puede hacer con Python, Kotlin,… y sí, es verdad que ha habido iniciativas para suplirlo, como el JShell de Java (ver post) pero seguía quedándose a medias!
Simplificando mucho mucho con JBang podemos ejecutar directamente un archivo .java como vemos en este sencillo ejemplo.
Con jbang init <nombre>.java estoy inicializando con el template por defecto mi clase Java.
Luego puedo ejecutarla con jbang Helllo2.java
Por supuesto JBang no se queda ahí y permite entre otras cosas:
- .java Scripting para versiones de Java 8 y superiores
- .jsh a través de JShell (Java 9 y superiores)
- .kt via kotlinc
- .groovy via groovyc
- Funciona en Windows, OSX, Linux y AIX y se puede instalar con curl, power shell, SDKMan, Homebrew, Chocolatey o Scoop. https://www.jbang.dev/documentation/guide/latest/installation.html
- Si es necesario se instalará automáticamente Java e incluso un editor de Java (vscodium) para la edición
- Installation of scripts to user PATH
- Permite hacer scripting sobre multiples ficheros y Fuentes
- Declaraciones de dependencia con //DEPS
- Controla las opciones de compilación y ejecución con //JAVAC_OPTIONS <flags> y //JAVA_OPTIONS <flags>
- Compilación de JARs y caché de resolución de dependencias
- Generación imagen nativa (–native)
- Puede usarse para escribir plugins para otros CLIs commo kubectl
- Templates de inicialización para arrancar de forma más sencilla (jbang init -t cli hello.java)
- Genera configs gradle y IDE con dependencias para facilitar la edición en el IDE favorito (jbang edit myfile.java)
- Plugins de Maven y Gradle para una fácil integración con su herramienta de construcción favorita
- Permite compartir código, permitiendo ejecución remota: jbang https://github.com/eugenp/tutorials/blob/jbangguide/jbang/jbangquarkus.java incluso alias: jbang alias add -f . https://github.com/eugenp/tutorials/blob/jbangguide/jbang/jbangquarkus.java
- Soporta la instalación de apps (al estilo npm). Si hacemos jbang app install hello.java tendremos el comando hello en nuestro path
Que además incluye una AppStore: https://www.jbang.dev/appstore/