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は実行するまでの設定が重い印象ですが随分ショートカットができていると思います。 次回は、依存関係や複数ファイルでの設定方法をまとめたいとおもいます。