首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java.base模块系统中“java.se”和“java.base”模块的区别是什么?

java.base模块系统中“java.se”和“java.base”模块的区别是什么?
EN

Stack Overflow用户
提问于 2022-03-15 13:03:23
回答 1查看 109关注 0票数 3

我不确定我是否正确:java.base是来自所有其他模块的底层基本模块,并包含它们的所有基本内容,就像类中的超类一样。java.se是包含整个JDK的模块,就像一个子类(包含基本功能和更具体的东西)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-20 01:29:13

java.base是基本模块;其他每个模块都隐式或显式地依赖于它:

如果模块的声明不表示对java.base模块的依赖.然后,该模块有一个隐式声明的依赖于java.base模块。

(Java语言规范17§7.7.1)

java.se“定义Java平台的API”(每个文档)。大概是(?)包含所有在模块化之前都存在于Java中的类,除了现在在不同的模块中分离,例如java.desktopjava.sql。它不包括特定于JDK的模块(如jdk.javadoc)。Java运行时可能不一定提供所有这些模块;例如,您可以使用jlink创建一个只包含所需模块(至少java.base)的Java运行时。

Java规范还有助于理解模块的内容及其关系:

在这种情况下,您与类(模块java.base)及其子类(模块java.se)进行比较是可行的,因为java.se的作用有点像一个“聚合器”模块,它本身不包含或导出任何包,但只有通过requires transitive间接导出。有关java.se模块存在的原因,请参见java.se。虽然通常您不会声明依赖于java.se,因为这违背了定制的小型运行时映像的目的;相反,您只会声明对您真正需要的特定模块的依赖关系,例如java.logging

但是,这样的聚合器模块并不常见。在大多数情况下,模块将用于分组相关的包,并限制对内部实现的访问。但是,在这些情况下,由一个模块定义的服务以及正在实现的相应服务提供者和由另一个模块声明类似于您的类推。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71482750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档