【问题标题】:Java Jigsaw Modules - What Happened? (July 2019)Java 拼图模块 - 发生了什么? (2019 年 7 月)
【发布时间】:2019-07-09 19:47:00
【问题描述】:

我感觉 Jigsaw 模块于 2017 年 9 月正式随 Java 9 一起发布,也就是差不多两年前。 JDK 11 和也许 JDK 12 在生产中被广泛使用,但是 Jigsaw 基本上没有被使用,也没有得到社区的支持,也没有准备好供普通的 Java 开发人员使用。整个 Java 生态系统使用 Maven/Gradle/SBT 之类的构建工具,它们专门使用经典的 Maven 样式依赖系统,根本不使用 Jigsaw。

我已经阅读了官方的快速入门教程: http://openjdk.java.net/projects/jigsaw/quick-start

这行得通,但似乎整个 Java 生态系统基本上都在忽略 Jigsaw,而且在短期内,这种情况不太可能改变。

这是正确的吗?发生了什么?

【问题讨论】:

  • Jigsaw 解决了一个不存在的问题(可见性),也没有解决一个确实存在的问题(版本依赖)。 编辑:确实,用模块替换rt.jar 是一个不错的举措。
  • 为什么你会说 Jigsaw 模块还没有准备好供普通 Java 开发人员使用?当您这么说时,您如何定义“常规 Java 开发人员”? Java 模块可供任何想学习如何使用它们的人使用,就像 Java 语言可供任何想学习该语言的程序员使用一样。
  • @Andreas,有没有使用第三方模块依赖的简单“hello world”类型拼图项目的例子?我找不到任何东西。我试图创建一个依赖于 slf4j-simple 1.8 (beta) 并且遇到了麻烦。
  • 优势也在别处。当您部署完整的可执行文件以及打包的 JRE 时,结果现在的大小要小得多。因为您现在可以省略所有您从不使用的基本模块。这是免费的,无需做任何事情。与提供多个模块的大型框架一样,您现在可以免费删除所有未使用的内容。

标签: java java-platform-module-system


【解决方案1】:

来自comment

是否有任何使用第三方模块依赖项的简单“hello world”类型拼图项目示例?我找不到任何东西。我试图创建一个依赖于 slf4j-simple 1.8 (beta) 并且遇到了麻烦。

自当前(2019 年 7 月 9 日)Logback Setup page

要在 Maven 项目中使用 logback-classic,请在项目的 pom 文件中声明以下依赖项。

<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.3.0-alpha4</version>
</dependency>

这将以下文件添加到我的项目中:

activation-1.1.jar
javax.mail-1.6.0.jar
logback-classic-1.3.0-alpha4.jar
logback-core-1.3.0-alpha4.jar
slf4j-api-1.8.0-beta1.jar

模块信息.java

module Test {
    requires org.slf4j;
}

test/Test.java

package test;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Test {
    private static final Logger log = LoggerFactory.getLogger(Test.class);

    public static void main(String[] args) {
        log.info("Hello World");
    }
}

输出

17:00:20.132 [main] INFO test.Test - Hello World

使用 Eclipse 2018-12 在 jdk-11.0.1 中运行。

这个简单的“hello world”类型的拼图项目没有遇到任何问题。

【讨论】:

  • 亲爱的投票者,请在投票的同时留下批评。这个答案在我看来很准确,解决了问题和评论提出的问题。
  • 您的示例甚至没有使用 jlink,也没有为您提供自定义运行时映像。这只是一个简单的 Maven 项目,它具有对 logback 的 Maven 依赖项。我可以让一个普通的旧 Maven 项目正常工作。我相信如果你删除 module-info.java 什么都不会改变。如果您降级到非 Jigsaw logback-classic 1.2.x,它将运行相同。
猜你喜欢
  • 2011-01-24
  • 1970-01-01
  • 2020-02-15
  • 1970-01-01
  • 1970-01-01
  • 2011-01-27
  • 2016-02-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多