大家好,感谢邀请,今天来为大家分享一下深入探索Java 9模块化系统:实践体验分享的问题,以及和的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
一旦你描述了所依赖的外部模块,在编译时,它会自动检查这些模块是否已经在模块路径中,如果没有,就会报错。
强化封装
该模块除了原有的访问修饰符public、protected、private、default形成的访问限制外,还加强了一层访问控制。除非模块通过exports关键字公开某些包,否则即使是公共类也无法从外部访问。另外值得注意的是,以前甚至可以使用反射调用setAccessible(true)来随意调用私有方法,但这在JPMS下不起作用。
项目实验
基于以上基础知识,我在原来托管在github上的开源项目underscore.string.java上创建了jigsaw的分支underscore.string.java-jigsaw,并尝试了单个模块的使用。
基本步骤
在src/main/java/目录下新建module-info.java,引入gradle插件org.gradle.java.experimental-jigsaw。修改.travis.yml以支持java9编译
1. 模块描述文件
module com.lambeta.underscorestring {
出口com.lambeta;
需要番石榴;
}为了方便别人调用,需要一个较短的名字,并且因为最好唯一,所以使用com.lambeta.underscorestring。该模块导出包com.lambeta。事实上,我的项目只有一个包。此外,它还需要guava 模块。
2. gradle 插件
gradle如何支持java9的模块系统,这篇文章已经详细讲解了。我最终选择使用该插件的实验版本,因为它相对简单。
插件{
id "org.gradle.java.experimental-jigsaw" 版本"0.1.1"
}
javaModule.name="com.lambeta.underscorestring"
javadoc {
排除=["模块信息.java"]
}通知gradle该模块的名称是com.lambeta.underscorestring。这最适合与gradle 的多模块项目一起使用。
javadoc的配置主要是为了执行javadoc任务,出现了module not found: guava的错误。这应该是gradle javadoc 中的一个错误。 Maven项目中也有类似记录,稍后解决。但现在,跳过这个文件。
3. CI 服务
语言: java
jdk: oraclejdk9
sudo: 假
dist: 值得信赖
脚本:
"./gradlew 检查-i"
插件:
主机:
- 兰贝塔构建
【深入探索Java 9模块化系统:实践体验分享】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
终于开始了解 Java 的模块化了!
有20位网友表示赞同!
Java9 模块化的概念很有意思,期待学习更多。
有18位网友表示赞同!
这篇文章能让我入门吗?
有16位网友表示赞同!
想了解一下模块化在实际开发中的应用场景。
有5位网友表示赞同!
这篇小试能否详细介绍 Java9 新的功能呢?
有9位网友表示赞同!
一直对 Java 的 modularity 比较感兴趣,看下有没有什么好的案例分享。
有12位网友表示赞同!
学习起来,这听起来很新颖!
有9位网友表示赞同!
模块化开发是不是提高了项目的性能和可维护性呢?
有17位网友表示赞同!
Java9 模块化系统的优势在哪里?
有17位网友表示赞同!
看下这个实验如何应用在了实际项目中。
有16位网友表示赞同!
我对 Java 的更新一直很关注,看看这次的模块化有什么变化。
有16位网友表示赞同!
想了解一下在使用模块化系统的时候有哪些需要注意的地方?
有14位网友表示赞同!
Java9 模块化系统对开发人员的要求有哪些改变呢?
有20位网友表示赞同!
对于初学者来说,学习 Java 的模块化需要多久时间呢?
有12位网友表示赞同!
希望以后的文章能更加详细地介绍 Java 模块化的应用。
有15位网友表示赞同!
学习了之后能否提升代码的复用率吗?
有9位网友表示赞同!
对新手朋友来说,Java 9 模块化的入门教材有哪些推荐?
有10位网友表示赞同!
这篇文章能不能分享一些实际应用的模块化代码案例呢?
有19位网友表示赞同!
了解一下 Java9 模块化系统与其他语言的模块化方法有何异同之处。
有6位网友表示赞同!
我想知道在企业级项目中使用Java 9 模块化的效果怎么样。
有19位网友表示赞同!