概述
经历漫长的等待和煎熬orcale终于在java se 9中融入了的模块化系统,这让全世界java程序员激动不已。与包相比,模块中可以包含一个或更多的包,能够更好的对包进行组织与管理,具有比包更强的封装性,能够实现更细化的访问控制和更大粒度的代码重用,真正实现功能模块化配置灵活的搭积木式的程序开发。
我们要用好这个模块化的java se,首先要熟悉下java se大概被分成了那些模块呢?是这样的,Java9标准模块以java作为前缀。以下是部分标准模块名称:
如:java.base,java.naming,java.activation和java.logging等。而java.base是最基础最核心的模块,其中封装了开发者最常用的包,如:java.io,java.lang,java.math,java.net,java.text,java.util等等。
Java9非标准模块以jdk作为前缀。 以下是部分非标准模块名称:jdk.accessibility,jdk.attach,jdk.charsets,jdk.compiler, jdk.httpserver等等。
其他模块就不在这里赘述了。下面基于命令行演示模块入门的声明与使用步骤:
1.首先在某个盘下自定义一个目录moduledemo;
2.在这个名为moduledemo目录中创建一个名为cn.itcast.modules.mymodule的目录(这个目录就是我们的模块信息存放目录了,也是我们自定义模块的名称)
3.在模块目录cn.itcast.modules.mymodule中创建一个名称必须为module-info.java的java文件
4.打开module-info.java进行编辑,加入如下内容:
module cn.itcast.modules.mymodule{ }
其中:module是定义模块的关键字;cn.itcast.modules.mymodule是自定义的模块名称,该名称要和模块目录的名称cn.itcast.modules.mymodule一致
5.在模块目录cn.itcast.modules.mymodule中创建名称为cn的文件夹,在cn文件夹的内部创建itcast文件夹,在itcast文件夹中创建Hello.java文件。
6.编辑Hello.java文件,加入如下内容:
package cn.itcast; public class Hello{ public static void main(String []args){ System.out.println("Hello Module!!!"); } }
最简单的模块就开发完毕,下面进行编译和运行, 在命令行中进入moduledemo目录,然后输入:
javac -d byteoutdir --module-source-path . cn.itcast.modules.mymodule/module-info.java cn.itcast.modules.mymodule/cn/itcast/Hello.java
其中:-d:指定字节码class的输出目录;byteoutdir:自定义的字节码文件的保存目录;--module-source-path:指定模块的源码路径;
当没有任何的错误提示说明编译通过了。输入如下命令运行编译后的Hello:
java --module-path byteoutdir -m cn.itcast.modules.mymodule/cn.itcast.Hello
运行后会在控制台输出:Hello Module!!!
上面演示了模块最基本的使用方法, 下面再演示一个使用java.sql模块的方法。在现有模块目录cn.itcast.modules.mymodule中添加一个新的包,包名com在该包下创建一个JDBCDemo.java的文件,这样就在cn.itcast.modules.mymodule模块中有cn.itcast和com两个包
JDBCDemo.java文件的内容如下:
package com; import java.sql.Connection; public class JDBCDemo{ public static void main(String []args){ /*使用java.sql包中的接口 需要在module-info.java文件中对java.sql模块进行声明*/ Connection conn=null; } }
现在可以编译模块了,输入:
javac -d byteoutdir --module-source-path . cn.itcast.modules.mymodule/module-info.java cn.itcast.modules.mymodule/cn/itcast/Hello.java cn.itcast.modules.mymodule/com/JDBCDemo.java
发现这次不能通过编译了,错误信息如下:
程序包java.sql不可见 程序包java.sql已在模块java.sql中声明,但模块cn.itcast.modules.mymodule未读取它
这是因为模块系统模块间彼此是隔离的,模块中包的可见性受到了模块隔离性的限制,尽管我们在JDBCDemo.java中导入了
import java.sql.Connection;
但是这个包是不可见的,需要编辑模块信息文件module-info.java,最终的代码如下:
module cn.itcast.modules.mymodule{ requires java.sql; //声明依赖的模块,以便该模块中的类可以使用声明后的模块 }
有了以上的requires java.sql
声明部分我们在JDBCDemo.java中导入import java.sql.Connection就有效了。
下一步就可以把我们封装的模块打包为jar文件了(限于篇幅不在赘述),这个jar文件是可以被重用的,最重要 的是这个jar文件还很小巧,我们甚至可以借助于jlink把模块打包成可以在任何小型甚至微型设备上运行的程序,这些都是模块化取得的巨大进步了。
最后
以上就是坚定寒风为你收集整理的【传智播客郑州校区分享】Java9模块化系统的全部内容,希望文章能够帮你解决【传智播客郑州校区分享】Java9模块化系统所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复