まだJigsawを使った開発はできなそう(2015/3/25) => Jigsaw入ったJDK9 Build80が公開(2015/9月)
Recent traffic & working documents
Project Jigsaw: Phase Two
Goals & Requirements (DRAFT 3)
JEP 200: The Modular JDK
JEP 201: Modular Source Code
JEP 220: Modular Run-Time Images
JSR 376: Java Platform Module System
Requirements
* [The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 376](https://www.jcp.org/en/jsr/detail?id=376 "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 376")
* JCP内のJSR376に関するページ
* GradlewareのHansDockerが Expert Group に所属していることが分かる
* [Oracle Blogs 日本語のまとめ: [Java] Project Jigsaw: Modular run-time images](http://orablogs-jp.blogspot.jp/2014/12/project-jigsaw-modular-run-time-images.html "Oracle Blogs 日本語のまとめ: [Java] Project Jigsaw: Modular run-time images")
* 日本語の説明
* [module/bootclass troubles with jdk9](http://mail.openjdk.java.net/pipermail/jigsaw-dev/2015-February/004181.html "module/bootclass troubles with jdk9")
* 現在(2015/02, jdk9 b41)、JSR376が実装されてないため、まだ我々は"module land"にはいない(javac コマンドの modulepath オプションなどは使えない)
* ただ、JDK内部のモジュール化は進んでおり、rt.jarやtools.jarは無くなっている(JEP220より)
* rt.jar - ブートストラップクラス (Java プラットフォームのコア API を構成するランタイムクラス)
* tools.jar - JDK のツールとユーティリティーをサポートするためにコア以外のクラスが含まれる
* java.~やjavax.~パッケージは全てrt.jarに入ってる。tools.jarは使ってるかな?
Jigsaw紹介資料
-------------
[Modularity of the Java Platform (OSGi, Jigsaw and Penrose)](http://www.slideshare.net/martintoshev/modularity-of-the-java-platform-osgi-jigsaw-and-penrose "Modularity of the Java Platform (OSGi, Jigsaw and Penrose)")
* Modularizationの利点
* システムの分離が容易になる
* メンテナンスしやすく成る
* "JAR Hell"問題の解決
* 依存関係の中に異なるバージョンのjarを混在できない
* modular systemの代表はOSGi
* OSGi
* JSR8,291
* OSGi Runtimeとはなにか
* modular units(bundle)コンテナを実装するためのclass loading mechanism
* bundleはOSGi Runtimeに対してサービスやコンポーネントを提供するjarファイルなど* を言う
* OSGi Runtimeは再起動なしにbundleの起動、停止、インストール、アップデートが可能
* OSGi bundleのMavenサポートは?
* [Tycho home](https://eclipse.org/tycho/ "Tycho home")
* Gradle版は [akhikhl/wuff](https://github.com/akhikhl/wuff "akhikhl/wuff")
* Jigsaw
* Javaに対するOSGiライクなモジュールのビルトインサポート
* JDKはmonolithic
* JDK8では使用するJDKの機能を制限できる?
* Javac -profile compact1|compact2|compact3
* Jigsawはとても大きな変更なので、ecosystemを壊す恐れがある
* Jigsawとはなにか?
* Java Module Systemの基礎となるもの
* Module JDKではjreフォルダは無いし、rt.jarもtools.jarも無い
* 必要なAPIだけ使う
* Jigsaw moduleとはなにか?
* Javaクラス/ネイティブライブラリ/リソースの集合
* 他のモジュールへの依存を示すメタファイル
* OSGiのようなdynamicsは持っていない?
* 一番の根幹と成るモジュールはjava.base
* 他のモジュールへの依存はrequireによって表す
module org.sample.A@1.0 { require org.sample.B@[2.0,3.0) }
* moduleのコンパイル方法
* javacのmodulepathオプションで依存しているモジュールを指定する
* [Jigsaw Quick Start](http://openjdk.java.net/projects/jigsaw/doc/quickstart.html "Jigsaw Quick Start")
* moduleの管理方法
* jmodでモジュールを管理する
* jpkgでモジュールのパッケージングを行う
* なぜJavaプラットフォームにOSGiを利用しない?
* OSGiはパッケージング、デプロイ、実行時のmodularityに取り組んでおり、コンパイル時には使えない
* Jigsawモジュール開発用のIDEは?
* まだIDEによるサポートはされてない
* Mavenサポートは?
* まだない
* でも重要
* JigsawとOSGiの相互運用は?
* Project Penroseとして進められている
* [OpenJDK: Penrose](http://openjdk.java.net/projects/penrose/ "OpenJDK: Penrose")
* まだ始まったばかり
* Penroseではmodule-info.jsonが提案されている
* module-info.javaより一般的
* jigsaw/OSGi それぞれ用のメタファイルを生成できるフォーマット
[Java 8 modules, Jigsaw and OSGi - Neil Bartlett](http://www.slideshare.net/mfrancis/java-8-modules-jigsaw-and-osgi-neil-bartlett?next_slideshow=1 "Java 8 modules, Jigsaw and OSGi - Neil Bartlett")