モ ジ ュ ール
ク ラ ス ロ ーデ ィ ン グ


                     Takayoshi Kimura
 Senior Software Maintenance Engineer
      Global Support Services, Red Hat
The Class Path is Dead.



          2
3
モジュールシステム

●   OSGi
●   Maven
●   Jigsaw
●   JBoss Modules




                    4
モジュールシステム?



    5
モジュールシステム

●   モジュールを定義する方法を提供
●   モジュールからクラスをロードするため
    のクラスローディング環境を提供




            6
モジュールシステム
なにそれおいしいの?


    7
Maven

<dependency>
  <groupId>org.seasar.sastruts</groupId>
  <artifactId>sa-struts</artifactId>
  <version>1.0.4-sp9</version>
</dependency>




                    8
WAR ( クラスパス )




            9
クラスパス
java -classpath ".:antlr-2.7.2.jar:aopalliance-
1.0.jar:commons-beanutils-1.7.0.jar:commons-collections-
2.1.jar:commons-digester-1.6.jar:commons-fileupload-
1.2.jar:commons-logging-1.0.4.jar:commons-validator-
1.1.4.jar:easymock-2.4.jar:javassist-3.4.ga.jar:junit-
4.4.jar:ognl-2.6.9-patch-20090427.jar:oro-2.0.7.jar:poi-
3.0-FINAL.jar:s2-extension-2.4.44.jar:s2-framework-
2.4.44.jar:s2-tiger-2.4.44.jar:sa-struts-1.0.4-
sp9.jar:struts-1.2.9.jar:xalan-2.5.1.jar:xml-apis-
1.0.b2.jar" MainClass




                           10
Maven→ シンプル
実行時クラスパス→異常


     11
JBoss Modules
<dependencies>
  <module name="org.seasar.sastruts.sa-struts"
          slot="1.0.4.sp9"/>
<dependencies>




                           12
JBoss Modules
java -jar jboss-modules.jar -mp ~/modules/
     -dep org.seasar.sastruts.sa-struts
     -cp . MainClass




                           13
OSGi
Import-Package:
  org.seasar.sastruts.sa-struts;version="1.0.4.sp9"




                           14
まとめ



 15
モジュールシステム
        =
ランタイムで利用できる
 Maven みたいなやつ

      16
モジュールシステムが解決するもの

●   コンパクト、シンプル、見通しの良い依
    存の定義
●   明確な依存スコープ
    ●   バージョン違いの jar の利用
●   パフォーマンス向上
    ●   パラレルクラスローディング
    ●   モジュールの遅延ロード


                  17

Module classloading