ソフトウェアエンジニアの雑記

日々思ったことをまとめます

Javaをスクリプト言語っぽくするJBang その1(install, edit, run, build)

JBangはJavaでプロトタイピングやMVPやバグ検証などにサクッと試せるツールだということは知っていたのですが、JJUG CCC 2025のセッションでJBangの有効活用法の紹介があり、これは試してみないとということで、数回にわけてご紹介させていただきます。

感銘を受けたJJUGのセッション資料

https://github.com/tadayosi/jjug2025-jbang

インストール

公式のインストール手順はこちら

SDKMANでのインストール

ここでは、SDKMANでインストールしてみます。

sdk install jbang

JBangで処理開始

jbangを始めるにあたってjbang initを使うのが簡単です。

jbang init Sample.java

下記のファイルが生成されます。

///usr/bin/env jbang "$0" "$@" ; exit $?

import static java.lang.System.*;

public class Sample {
    public static void main(String... args) {
        out.println("Hello World");
    }
}

先頭行がハックらしくて、//Javaのインラインコメントで、そのあとにshebangが書いてありShellからでも実行ができるようになっています。

編集

jbangコマンド経由ですぐに編集ができます。

$ jbang edit Sample.java

[jbang] Assuming your editor have JBang support installed. See https://jbang.dev/ide
[jbang] If you prefer to open in a sandbox run with `jbang edit -b` instead.
[jbang] You requested to open default editor but no default editor configured.

jbang can download and configure a visual studio code (VSCodium) with Java support to use
See https://vscodium.com for details

Do you want to

(1) Download and run VSCodium
(2) Use 'code'
(3) Use 'idea'
(0) Cancel

使いたいIDE or エディタを選ぶのみになります。各環境で快適にコードを書くにはプラグインを入れる必要があるのでインストールをしてください。プラグイン一覧

実行

runコマンド

実行コマンドです。runがなくても第二引数にJavaファイルがあると動作します。Shellスクリプトとしても実行可能です。(Windowsの場合はWSL環境で実行できます)

$ jbang run Sample.java 
or
$ jbang Sample.java 
or
$ ./Sample.java
or
$ jbang https://gist.github.com/ko-sasaki/a655db96992709cd597908ae702aaad0  // Gistに上がっているものもローカルに落とさずに実行が可能です

Hello World

buildコマンド

buildコマンドもあり、すぐにexecutable jarにしてくれる。

$ jbang build --build-dir=jbang_build Sample.java
$ ls jbang_build
Sample.jar
$ java -jar jbang_build/Sample.jar
Hello World

GraalVMがインストールされていればネイティブコマンドにもビルドできます。

$ jbang build --build-dir=jbang_native_build --native Sample.java
... 時間がかかります ...

$ ls jbang_native_build/
Sample.bin      Sample.jar

$ ./jbang_native_build/Sample.bin 
Hello World

.jarファイルと.binファイルが生成されています。.binファイルの方は実行可能です。

まとめ

今回はJBangのインストールと実行とビルドについてでした。GistにアップしているソースもURL指定で実行できたり、Nativeビルドのコマンドが標準でついているあたり便利だと思います。Javaは実行するまでの設定が重い印象ですが随分ショートカットができていると思います。 次回は、依存関係や複数ファイルでの設定方法をまとめたいとおもいます。