きっかけ
Java Day Tokyo 2017, JJUG CCC Spring 2017 に出て、そろそろJigsawをキャッチアップしねぇと不味いなと感じ、とりあえず触ってみた。
環境情報
Microsoft Windows [Version 10.0.15063]
javaのバージョン
>java -version java version "9-ea" Java(TM) SE Runtime Environment (build 9-ea+171) Java HotSpot(TM) 64-Bit Server VM (build 9-ea+171, mixed mode)
コンパイラのバージョン
必要かどうか迷ったが、最初に入れたときにコンパイラバージョンがJava8のままで、module-info.javaが怒られて、結構迷うという恥ずかしい事態になったので、気付きの観点で載せる。
>javac -version javac 9-ea
実験
公式サイトのクイックスタートガイド
Project Jigsaw: Quick Start Guide
自分は、Greetings worldからはじめました。
Greetings world
やっていることは、org.astroっていうモジュールを作って外部公開し、それをcom.greetingsで利用しているだけ。
src/org.astro/module-info.java src/org.astro/org/astro/World.java src/com.greetings/com/greetings/Main.java src/com.greetings/module-info.java $ cat src/org.astro/module-info.java module org.astro { exports org.astro; } $ cat src/org.astro/org/astro/World.java package org.astro; public class World { public static String name() { return "world"; } } $ cat src/com.greetings/module-info.java module com.greetings { requires org.astro; } $ cat src/com.greetings/com/greetings/Main.java package com.greetings; import org.astro.World; public class Main { public static void main(String[] args) { System.out.format("Greetings %s!%n", World.name()); } }
一番注目するべきは、src/org.astro/module-info.javaと、src/com.greetings/module-info.javaの内容。
exportsで外部公開。requiresで依存関係を宣言している。
そして、module-info.java以外は、Java8以前のものと一緒。
覚えなければ行けないのは、module-info.javaだけみたい。
実行方法
出力先のディレクトリを作成
自分windowsでやってたので、意図を汲み取ってディレクトリを作成。たぶん、macなら下記コマンドでいけるハズ。
$ mkdir mods/org.astro mods/com.greetings
org.astroをコンパイル
$ javac -d mods/org.astro src/org.astro/module-info.java src/org.astro/org/astro/World.java
com.greetingsをコンパイル
注目すべきは、--module-path
でモジュールを含むディレクトリを宣言しているところ。
指定はしなくてもいいんだね。
$ javac --module-path mods -d mods/com.greetings src/com.greetings/module-info.java src/com.greetings/com/greetings/Main.jav
実行
java --module-path mods -m com.greetings/com.greetings.Main
感想
とりあえず、やりたきことは確認できた。
覚えなければならないことは、module-info.javaの記述方法と、コンパイル&実行方法だけみたいだね。
今回はサンプルのローカル確認で終了したが、次は自分で作ったソースでやれることを確認したい。
参考サイト
Project Jigsaw: Module System Quick-Start Guideをテキトーに訳した - kagamihogeの日記