仔细看一下Java模块化的状态

当Jigsaw与Java 9一起发布时,这是一个漫长的过程的结尾-它已经被推迟-并且必须被发布。 随着Java 11的到来,即最新的长期支持,我认为现在是对模块化状态进行快照的好时机。

我将使用Java Developer应该知道前20个库和API作为参考,并检查它们是否为最新版本:

  • 提供自动模块名称
  • 或具有module-info

在第一种情况下,JAR具有稳定的模块名称。 它仍然是一个自动模块,但这是进入模块系统的第一步。 在第二种情况下,JAR是完全成熟的模块,因为它完全包含了模块系统。

名称 分析版 模块名称 模块化了吗?

SLF4J

1.8.0-beta2

org.slf4j

Jackson

2.9.8

com.fasterxml.jackson.core

GSon

2.8.5

JUnit

5.3.2

org.junit.jupiter.api

Mockito

2.23.4

org.mockito

PowerMock

2.0.0-RC.4

Commons Lang

3.8.1

org.apache.commons.lang3

Commons Math

3.6.1

Guava

27.0.1

com.google.common

Http Client

4.5.6

org.apache.httpcomponents.httpclient

Xerces 2

2.12.0

XStream

1.4.11.1

dom4j

2.1.1

JAXB

2.3.1

java.xml.bind

Apache POI

4.0.1

 Commons Pool

2.6.0

 Flexipool

2.1.1

com.vladmihalcea.flexypool.core

 HikariCP

3.2.0

com.zaxxer.hikari

 Commons DBCP

2.5.0

 iText

5.5.13

 FOP

2.3

Commons Collections

4.2

org.apache.commons.collections4

Eclipse Collections

9.2.0

org.eclipse.collections.api

Trove

3.1.0

Commons Email

1.5

JSoup

1.11.3

org.jsoup

Commons Codec

1.11

org.apache.commons.codec

P6Spy

3.8.1

ProtoBuf

3.8.1

上面只有两个库实际上是模块化的! 这是可以理解的,因为在自己的库中实现模块是一项不小的努力。 但是,很多库-大约50%-没有Automatic-Module-Name ,即使:

  1. 它几乎不花钱
  2. 最新版本已于2018年发布-Java 9已于2017年9月发布

因此,这使得客户端应用程序/框架/库( 例如 Spring)自身很难模块化。 这让我想知道模块的未来会是什么样。

有趣的是,尽管缺少模块支持,但上述许多库还是OSGI捆绑包(例如ProtoBuf)

翻译自: https://blog.frankel.ch/hard-look-state-java-modularization/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值