当前位置: 首页 > 面试题库 >

为什么要设计拼图/ JPMS?

宣星光
2023-03-14
问题内容

Java的软件包管理系统对我而言似乎总是简单而有效的。JDK本身大量使用它。我们一直在使用它来模仿名称空间和模块的概念。

什么是 Jigsaw项目 (又名Java平台模块系统)试图填补?

从官方网站:

该项目的目标是为Java SE平台设计和实现标准模块系统,并将该系统应用于平台本身和JDK。


问题答案:

Jigsaw和OSGi试图解决相同的问题:如何在保护内部组件的同时允许粗粒度模块进行交互。

在Jigsaw的情况下,较粗粒度的模块包括Java类,程序包及其依赖项。

这是一个示例:Spring和Hibernate。两者都依赖于第三方JAR
CGLIB,但是它们使用该JAR的不同,不兼容的版本。如果您依赖标准JDK怎么办?包括Spring想要破解Hibernate的版本,反之亦然。

但是,如果您拥有像Jigsaw这样的更高级别的模型,则可以在不同的模块中轻松管理不同版本的JAR。将它们视为更高级别的软件包。

如果您从GitHub源码构建Spring,您也会看到它。他们已经重做了框架,因此它由几个模块组成:核心模块,持久性模块等。您可以选择应用程序所需的最小模块依赖项集,而忽略其余部分。它曾经是单个Spring
JAR,其中包含所有.classhtml" target="_blank">文件。

更新:五年后-拼图可能仍然需要解决一些问题。



 类似资料:
  • 本文向大家介绍为什么需要域驱动设计(DDD)?相关面试题,主要包含被问及为什么需要域驱动设计(DDD)?时的应答技巧和注意事项,需要的朋友参考一下 映射领域 降低复杂性 可测试性 可维护性 知识丰富的设计 将业务和服务结合在一起 上下文集中 通用语言

  • 本文向大家介绍为什么要设计 后缀表达式,有什么好处?相关面试题,主要包含被问及为什么要设计 后缀表达式,有什么好处?时的应答技巧和注意事项,需要的朋友参考一下 考察点:逆波兰表达式   后缀表达式又叫逆波兰表达式,逆波兰记法不需要括号来标识操作符的优先级。  

  • 我过去设计过简单的固定块存储管理器(SM)和通用内存管理器。在这两种情况下,我都会在启动时分配一大块堆内存,并反复使用释放的内存,防止频繁调用昂贵的malloc/new调用。 如果我谈论固定块SM(Github链接),那么我实际上已经看到了它带来的性能优势。在我的例子中,随机大小分配大约提高了40%。 但在通用内存管理器(Github链接)(没有内存池)的情况下,我没有看到任何明显的性能提升。我能

  • 本文向大家介绍现在需要为盲人设计一款手机,你要怎么设计呢?相关面试题,主要包含被问及现在需要为盲人设计一款手机,你要怎么设计呢?时的应答技巧和注意事项,需要的朋友参考一下 盲人最大的不同点是:他么无法通过视觉看到屏幕上的内容,进而无法使用目前市场上的智能手机进行交互操作(因为这些手机基本上盲人是没法用的)。 因此,针对这款盲人手机,我会把触觉和听觉放在最重要的位置上。 首先屏幕不需要太大,现在很多

  • 代码A来自项目,您可以看到它。 我不知道作者为什么将设计为,这是因为代码不太复杂,被多次调用。 我认为代码B可以很好地工作,对吗? 代码B

  • GIL(global interpreter lock),全局解释器锁,是很多编程语言实现中都具有的特性,由于它的存在,解释器无法实现真正的并发。它也是 Python 中经常讨论的话题之一。 Python 作为编程语言存在多个具体实现,包括最常用的 CPython、超集 Cython、.NET 平台的 IronPython、JVM 上的 Jython,R 语言实现的 RPython、JIT 版本的