JavaSE9 Project Jigsawをちょっと試してみました。

Project Jigsaw

itpro.nikkeibp.co.jp
上記 @さんのITProの記事の内容をDockerを使ってCentOS7, JDK9の環境で試してみました。

Directory 構成

f:id:tomoTaka:20160515131438p:plain

最終的な実行結果

f:id:tomoTaka:20160515131458p:plain

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