java - 在教育环境中使用 Java 模块系统的最佳方式是什么?

标签 java module-info

我在大学环境中教授 Java 编程类(class)。在类(class)中使用最新的 LTS 版本(Java 11)是有意义的。我们使用 JavaFX 教授用户界面。然而,JavaFX 加上模块系统的组合会产生复杂性,尤其是对于初学者而言。

为了使用 JavaFX,必须有一个 module-info.java看起来像这样的文件:

module MyProject {
    // JavaFX must be able to start the application
    exports myPackage to javafx.graphics;

    // JavaFX modules that we require
    requires javafx.base;
    requires javafx.controls;
    requires javafx.graphics;
}

学生通常为每门类(class)使用一个 Java 项目。在每门类(class)中,他们都会从我这里得到很多例子,并且会自己编写更多的程序。这些示例和练习中的每一个都有自己的主类,并且它们被组织成许多不同的包。

问题是第一个 exports声明:据我所知,每条声明仅适用于单个包,不能使用通配符,也不包括子包。因此,如果我们有一个包含 50 个不同包的 Java 项目,module-info.java将包含五十个 exports陈述。这是一团糟。

也许这看起来微不足道,但对于刚学习编程的人来说,这又是一个障碍。我是否忽略了一些概括的方法 exports涵盖多个包裹?或者,是否有人对如何为我的学生简化此问题提出了很好的建议?

最佳答案

不确定这是否有帮助,但我开始了一个模块项目
GitHub。由于您的问题没有得到回答,我会问您是否发现好
方法来做到这一点。
我的设置在 Github。
纯 Java,带有 GitHub 操作来帮助创建 jar 。

https://github.com/disparter/java-snippets

Since I use only one repository, it is easy to share even with many modules. I usually use Discord to discuss and some relevant content I put in a dev notes file but it is in Portuguese.


就我而言,我做两件事。
  • 创建一个简单的片段来演示一些参数。
  • 创建一个简单的模块来演示是否有任何好的面向对象实践。

  • OBS

    Think in java modules for small pieces. If you want to handle bigger projects is nice to use Gradle or Maven for those. It is interesting in an educational way when dependency problems happen. If you think there are too many modules to import, you can create a module that can be used as a Layer to help import common things.

    关于java - 在教育环境中使用 Java 模块系统的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57052932/

    相关文章:

    java - Spring @EnableRetry 抛出 InternalAutoProxyCreator

    java - 为什么在删除大量 (~80%) 键后 HashMap 的大小没有改变?

    swing - 在后面选择 JPanel parent

    Java 11 模块信息 : how to register an annotation processor

    java - 如何使用模块化 Java 在 Gradle 6.6 中设置 mainClassName

    java - JPMS/Jigsaw 在模块中缺少主类

    java - 无法使用 Maven 编译简单的 Java 10/Java 11 项目

    java - 我可以在 Spring 解析器中返回 RuntimeBeanReference 吗?

    java - 子文件夹不是通过 java 通过 scp 命令复制的

    java - 在 module-info.java 中找不到所需的模块