美文网首页
聊聊Java9的Jigsaw特性

聊聊Java9的Jigsaw特性

作者: 假装有文化_ | 来源:发表于2017-12-05 17:14 被阅读0次

    HotSpot JAVA9发布以来,新发布的特性中,Jigsaw比较受人关注。今天就用一个例子,概要的看看这个新发布的特性(例子参考Open JDK9的示例)。当然对内容了解不深,只是泛泛而谈。

    创建两个目录src/com.greetings和src/org.astro,一个表示requires,另一个表示exports。

    创建文件目录:

    mkdir -p src/org.astro/org/astro mkdir -p src/com.greetings/com/greetings

    创建文件:

    touch src/org.astro/module-info.java cat src/org.astro/module-info.java
    module org.astro {
          exports org.astro;
    }

    touch src/org.astro/org/astro/World.java cat src/org.astro/org/astro/World.java
    package org.astro;
    public class World {
         public static String name() {
             return "world";
         }
    }

    touch src/com.greetings/module-info.java cat src/com.greetings/module-info.java
    module com.greetings {
          requires org.astro;
    }

    touch src/com.greetings/com/greetings/Main.java 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());
         }
    }

    创建编译class文件存放文件夹:

    $ mkdir -p mods/org.astro mods/com.greetings

    执行编译命令

    $ javac -d mods/org.astro src/org.astro/module-info.java src/org.astro/org/astro/World.java

    javac -d表示“指定放置生成的类文件的位置”。

    $ javac --module-path mods -d mods/com.greetings src/com.greetings/module-info.java src/com.greetings/com/greetings/Main.java

    编译成功,查看mods文件夹,分别对应两个编译完成的结果。
    此时执行命令:

    $ java --module-path mods -m com.greetings/com.greetings.Main
    Greetings world!

    到现在为止,com.greetings依赖org.astro的发布例子就如上所示。

    对编译结果可以使用jar命令打包。
    创建mlib文件夹:

    $ mkdir mlib

    打包命令如下:

    jar --create --file=mlib/org.astro@1.0.jar --module-version=1.0 -C mods/org.astro . jar --create --file=mlib/com.greetings.jar --main-class=com.greetings.Main -C mods/com.greetings .

    一定注意,最后还有一个“.”符号,千万不要漏了。不然会提示错误。
    几个参数说明:

    • --create 表示创建
    • -C 表示指定读取目录

    下面可以直接使用命令执行:

    $ java -p mlib -m com.greetings
    Greetings world!

    至此,基于Jissaw特性的模块发布和引用基本功能就这样。当然还有一些更加复杂的参数和其他命令,比如jlink等等,以后学习到了,再发布上来一起讨论。

    原文链接地址。

    这是我博客新地址,欢迎大家一起交流 https://lxzchen.github.io

    相关文章

      网友评论

          本文标题:聊聊Java9的Jigsaw特性

          本文链接:https://www.haomeiwen.com/subject/xpscixtx.html