gpt4 book ai didi

java - Java 和 Kotlin 的模块系统有区别吗?

转载 作者:行者123 更新时间:2023-11-30 10:04:58 24 4
gpt4 key购买 nike

作为 Java 和 Kotlin 的初学者,我对模块系统很困惑,想知道 Java 和 Kotlin 之间是否有区别。

模块到底是什么?甲骨文说如下:

Modularity adds a higher level of aggregation above packages. The key new language element is the module—a uniquely named, reusable group of related packages, as well as resources (such as images and XML files) and a module descriptor specifying

  • the module’s name
  • the module’s dependencies (that is, other modules this module depends on)
  • the packages it explicitly makes available to other modules (all other packages in the module are implicitly unavailable to other modules)
  • the services it offers
  • the services it consumes
  • to what other modules it allows reflection

来源:https://www.oracle.com/corporate/features/understanding-java-9-modules.html

而在 Kotlin 的书中,一个模块是:

a module is a set of Kotlin files compiled together:

  • an IntelliJ IDEA module;
  • a Maven project;
  • a Gradle source set (with the exception that the test source set can access the internal declarations of main);
  • a set of files compiled with one invocation of the <kotlinc> Ant task.

来源:https://kotlinlang.org/docs/reference/visibility-modifiers.html#modules

我的问题:

  • Java 和 Kotlin 的模块系统之间有区别吗?如果是,具体情况如何?
  • 是否存在一些何时使用/不使用模块的“最佳实践”?
  • Kotlin 如何 internal关键字在同时具有 Java 和 Kotlin 代码的项目中表现如何?

最佳答案

似乎不幸的是,kotlin 团队决定使用同一个术语来组织一组一起构建的东西。

“真正的”Java 模块定义了一个概念,即在运行时在 jvm 中定义类的分组!这是一种更大的体系结构方法。它旨在将大型(r)应用程序分割成组件,并使用复杂的系统来处理这些组件之间的依赖关系。

换句话说:同一个词,但两个不同的意思,彼此之间没有真正的联系。从这个角度来看,您必须深入研究这两个概念,以了解每个概念的适用范围。

从这个角度来看:如果您是一名 Kotlin 程序员,并且您打算部署一个将在 Java9(或更新版本)JVM 上运行的大型应用程序,那么您肯定希望确保您的可交付成果 被分组在合理的“Java 模块”中。否则,如果您正在进行普通 Kotlin 开发,对执行环境没有特定要求,您可能主要(仅)担心“Kotlin 模块”。

关于java - Java 和 Kotlin 的模块系统有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55556437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com