JDK9 模块初探

jdk10已经出来了,现在还在用jdk1.8,连9还没看过,今天找到机会在网上搜了下jdk9的新特性,其他都还好,有一个module的东西,据说是模块化,对这个东西很好奇,便在网上搜了一搜,写的有些看不懂,找了很多终于弄出了个demo。

首先下载安装jdk9或者以上版本,安装与之前的版本无二致。

配置好环境变量后,运行命令java

JDK9 模块初探_第1张图片

可以发现,这里java运行命令多了个-m(-module)

也就是说若是运行模块化的java程序,要调用java -m命令了

同样的,运行javac命令也会有--module的相关命令,那么好的,我们直接试试看怎么用

首先创建两个文件夹,一个叫做module,一个叫做test

mkdir module test

JDK9 模块初探_第2张图片

我们打算用test中的java类去调用module中的类,先创建简单的类,这里加上包名

一个Person类,顺便将 com.test包名以文件夹的形式创建在module文件夹下

package com.test;


public class Person {
private String name;
private int age;

public Person() {
}

public Person(String name , int age) {
this.name = name;
this.age = age;
}


public String getName() {
return name;
}


public void setName(String name) {
this.name = name;
}


public int getAge() {
return age;
}


public void setAge(int age) {
this.age = age;
}

@Override
public String toString() {
return "the man name is '" + name + "', age is '" + age + ".'";
}

}


然后再module文件夹下创建module-info.java,这个是声明或者引用module的文件

module com.test {
  exports com.test; 

}

紧接着创建测试类,很简单的一个类,用来打印出person和它的module,同时以文件夹的形式创建包名com.module_test_client

package com.module_test_client;


import com.test.Person;


public class Test {

public static void main(String[] args){
Person p = new Person("tom", 112);
System.out.println("------------------------");
System.out.println("person module : " + p.getClass().getModule());
System.out.println(p);
}

}

然后在test文件夹下建立module-info.java,并声明要用到的其他module

module com.test_client {

    requires com.test;
 

}


运行tree /f 命令现在的文件目录如下:

JDK9 模块初探_第3张图片

好了,完成了编码工作之后,我们首先来编译module

javac -d output module\com\test\Person.java module\module-info.java

然后编译test

javac --module-path output -d outputtest test\module-info.java test\com\module_test_client\Test.java

运行Test类

java --module-path output;outputtest -m com.test_client/com.module_test_client.Test


可以看到成功运行,并且输出了module为com.test

当然我们也可以将module打成jar包

JDK9 模块初探_第4张图片

好了,这个是简单的module调用例子

你可能感兴趣的:(Java)