Java 9模块化特性及工具探讨
- 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。
Java 9于2017年九月下旬发布。随着Java 9的发布,它变得模块化了,并通过模块化提高其可伸缩性和性能。模块化是一个普遍的概念。在软件中,它适用于编写和实现一个程序或作为独立模块的计算系统,而不是一个单一的、单体式的设计。在模块化的帮助下,程序员可以在特定的sprint周期或项目中独立地进行功能测试,并行参与开发工作。这在整个软件开发生命周期中都会提高效率。
但并不是所有的Java工具都支持Java 9的模块化功能。本文概述了支持Java模块化的特性,并提供了支持Java 9新模块化功能的工具列表。
支持模块化的特性:
Java 9是独特的,因为它在整个JDK中引入了模块化组件和片段。支持模块化的主要特点包括:
- 模块化源代码
JRE和JDK将重新安排到Java 9中的可互操作模块中,这支持创建可在小型设备上执行的可扩展运行时。
- 构建时执行
在Java 9中,构建系统将通过JEP 201进行编译和实施模块边界。
- 部署工具
在Jigsaw项目中提供了工具,在部署时支持模块化边界、约束和依赖关系。
- 分段的代码缓存
它不是一个严格的模块化设施,但是Java 9新的分段代码缓存将遵循模块化的思想,并享有一些相同的好处。
适用于Java 9模块化特性的工具:
- Apache Ant
Apache Ant是一个Java库和命令行工具,用于构建Java应用程序。Ant项目管理委员会早些时候确保Ant将在2017年2月的Ant 1.10.1版本上运行Java 9。Java 9和模块化速度正在加快。它支持javac、java和JUnit任务的模块路径和相关选项。
- Apache Maven
Apache Maven 3.7版本开始支持Java 9和模块化。
- Eclipse IDE
Eclipse IDE是一个开源工具,从2017年6月的Oxygen版本开始支持Java 9。但是,要使用Java 9模块,Java开发人员需要将以下vmargs(JVM的命令行参数)添加到eclipse.ini:-add-modules = ALL-SYSTEM。项目可能无法运行,因为类型正在用在java.base或java.se.ee中,例如javafx.Base中的类型。在这种情况下,根据Eclipse文档,你必须弄清楚需要使用-add-modules添加哪些模块。
- JetBrains IntelliJ IDEA
从2017.2版开始,流行的IntelliJ IDEA开发环境开始全面支持Java 9的模块化。开发人员可以构建Java 9的模块化项目,就像使用模块路径而不是类路径一样。还支持module-info.java文件的开发,以及这些文件的代码完成和快速修复。
尚未准备好支持Java 9模块化特性的工具:
- Gradle
Gradle软件构建工具尚未完全支持Java 9,尽管其开发人员预计在2018年可以这样做。目前,Gradle使用的开发人员可以通过变通方法尝试模块化。
- Jenkins
用于软件开发项目的持续集成和部署的Jenkins开源自动化服务器尚不支持Java 9模块化仍在进行中。Cloud Bees首席技术官Kohsuke Kawaguchi表示,Cloud Bees在Jenkins社区领导着与Jenkins Java 9兼容的工作。但他没有给Jenkins提供Java 9兼容性的大致日期。
总结
在本文中,我们讨论了Java 9的模块化特性,还介绍了适用于这些新特性的工具。最后,列出了一些尚未准备好支持Java 9模块化特性的工具。