JavaSE9 Project Jigsawをちょっと試してみました。
Project Jigsaw
itpro.nikkeibp.co.jp
上記 @skrbさんのITProの記事の内容をDockerを使ってCentOS7, JDK9の環境で試してみました。
Directory 構成
最終的な実行結果
adder.jar 作成
javac -d bin src/module-info.java src/net/javainthebox/adder/Adder.java src/net/javainthebox/adder/internal/SimpleAdder.java jar --create --file=../modules/adder.jar -C bin .
Adder.java
package net.javainthebox.adder; import net.javainthebox.adder.internal.SimpleAdder; public interface Adder{ public static Adder of(){ return new SimpleAdder(); } public double add(double x,double y); }
SimpleAdder.java
package net.javainthebox.adder.internal; import net.javainthebox.adder.Adder; public class SimpleAdder implements Adder{ public double add(double x, double y){ return x+y; } }
module-info.java
module net.jitb.adder { exports net.javainthebox.adder; }
calc.jar 作成
javac -d bin -mp ..\modules src\module-info.java src\net\javainthebox\calc\Main.java jar --create --file=..\modules\calc.jar -C bin . >|| ** Main.java >|java| package net.javainthebox.calc; import net.javainthebox.adder.Adder; public class Main { public static void main(String... args) { if (args.length == 2) { Adder adder = Adder.of(); double x = Double.parseDouble(args[0]); double y = Double.parseDouble(args[1]); System.out.println(adder.add(x,y)); } } }
module-info.java
module net.jitb.calc { requires net.jitb.adder; exports net.javainthebox.calc; }
実行
java -mp modules -m net.jitb.calc/net.javainthebox.calc.Main 4 5