在教育场景中使用Java模块系统的最佳方法是什么?

4

我在大学教授Java编程课程。在课程中使用最新的LTS版本(Java11)是有意义的。我们使用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;
}

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

问题在于第一个exports语句:据我所知,每个语句仅适用于单个包,不可能使用通配符,并且不包括子包。因此,如果我们有一个包含50个不同包的Java项目,则module-info.java将包含50个exports语句。这很混乱。

也许这看起来微不足道,但对于刚开始学习编程的人来说又是一项障碍。我有没有忽略一些通用多个包的exports方式?或者,有没有人有好的建议可以简化这个问题给我的学生?


你可能想要更改问题的标题以更好地反映问题内容。在教育背景下,最好使用最新版本(这样到学生毕业时,版本仍将是相关的)。 - Angel Koh
好的,我改变了标题以反映这主要是关于Java模块系统。 - Brad Richards
1个回答

0

不确定这是否有帮助,但我在Github上开始了一个模块项目。由于您的问题没有得到答案,我想问一下您是否发现了好的方法来做到这一点。

我的设置在Github上。使用纯Java,并带有一个GitHub操作来帮助创建Jars。

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

由于我只使用一个存储库,因此即使有许多模块,也很容易共享。我通常使用Discord进行讨论,有些相关内容我会放在开发笔记文件中,但是它是葡萄牙语的。

在我的情况下,我会做两件事。

  1. 创建一个简单的代码片段来演示一些参数。
  2. 创建一个简单的模块,以便能够演示好的面向对象实践。

注意

思考用于小型部件的Java模块。如果您想处理更大的项目,则使用Gradle或Maven非常好。当发生依赖问题时,从教育方面来看,这是有趣的。如果您认为要导入太多模块,可以创建一个模块,该模块可用作层以帮助导入常见内容。


问题是关于如何使用“exports”。这个答案没有回答问题。 - John
我有不同的想法。是的,你不能在导出时使用通配符,但当你开始使用像我放置的模板这样的模板时,可以提高团队的生产力。 - Felipe Faria - Disparter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接