jdk10已经出来了,现在还在用jdk1.8,连9还没看过,今天找到机会在网上搜了下jdk9的新特性,其他都还好,有一个module的东西,据说是模块化,对这个东西很好奇,便在网上搜了一搜,写的有些看不懂,找了很多终于弄出了个demo。
首先下载安装jdk9或者以上版本,安装与之前的版本无二致。
配置好环境变量后,运行命令java
可以发现,这里java运行命令多了个-m(-module)
也就是说若是运行模块化的java程序,要调用java -m命令了
同样的,运行javac命令也会有--module的相关命令,那么好的,我们直接试试看怎么用
首先创建两个文件夹,一个叫做module,一个叫做test
mkdir module test
我们打算用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){}
然后在test文件夹下建立module-info.java,并声明要用到的其他module
module com.test_client {
requires com.test;
}
运行tree /f 命令现在的文件目录如下:
好了,完成了编码工作之后,我们首先来编译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包
好了,这个是简单的module调用例子