如您所知,Java EE已从Eclipse Foundation的Jakarta EE过渡到开源治理。作为针对微服务架构优化企业Java的一项独立计划,MicroProfile一直在向前发展。最近成立了Java原生云(CN4J)联盟,以促进Jakarta EE和MicroProfile之间的更好的一致性。
要解决的关键问题之一是Jakarta EE如何使用MicroProfile规范(例如MicroProfile配置)。关于如何做到这一点,有几种选择。下面是对每种方法的优缺点的简要分析,到目前为止,在CN4J社区中已有讨论。分析结束时,您需要进行一项调查。除了选择您认为最佳的选项外,提供注释以证明您的首选替代方案非常有价值。调查结果将与CN4J社区和主要决策者共享。
Jakarta EE和MicroProfile上下文
Jakarta EE和MicroProfile都产生了旨在用于云原生和微服务用例的规范。尤其是,MicroProfile特别关注满足云原生和微服务用例的需求。MicroProfile还产生相对较快的平台发布(大约每季度一次),而Jakarta EE的发布节奏则较慢(可能的长期目标大约为每年一次)。
Jakarta EE当前为所有规格的向后兼容性提供了相对有力的保证。MicroProfile当前不保证对所有规范的向后兼容性,但会生成已在现实世界中采用的可用于生产的规范。这一特性使MicroProfile可以专注于新兴领域的创新,而Jakarta EE则专注于最适合大型企业的更为保守的用例和稳定性。尽管MicroProfile规范有时需要打破向后兼容性,但在做出最终用户决定时要格外小心。
MicroProfile规范取决于一个或多个Jakarta EE规范,而Jakarta EE当前不依赖MicroProfile。
选项A1:无需更改名称空间即可将MicroProfile规范移至Jakarta EE(因此无需将名称空间从org.eclipse.microprofile。更改为jakarta。)。尽管如此,MicroProfile规范的Maven坐标将移至雅加达。雅加达EE工作组将进行进一步的发展。
优点:
一些用户可能希望将MicroProfile更好地集成到Jakarta EE中。该选项在某种程度上满足了这一愿望。 缺点:
Jakarta EE用户缺乏名称空间一致性,否则不使用MicroProfile。 一些用户可能会认为这意味着只有Jakarta EE才具有生产就绪规格。
缺点:
选项B:在Jakarta EE中参考MicroProfile规范,而不移动MicroProfile规范。Jakarta EE将不会重复任何引用的规范,并且MicroProfile规范只会在MicroProfile工作组下发展。
MicroProfile和Jakarta EE之间没有API重复。 Jakarta EE仍然可以使用该规范,而任何用户或实施者都无需进行任何迁移工作。 一些用户可能希望MicroProfile和Jakarta EE保持尽可能独立。该选项在某种程度上满足了这一愿望。 缺点:
Jakarta EE用户缺乏名称空间一致性,否则不使用MicroProfile。
对于在同一应用程序中同时使用Jakarta EE和MicroProfile的用户而言,Jakarta EE引用了MicroProfile规范,而后者却没有(因此对诸如向后兼容性等特性抱有不同的期望),这对于用户来说并不太明显。
引用的MicroProfile规范可能希望在其发展的某个时刻打破向后兼容性,而Jakarta EE则不希望。需要做出更多努力来解决这种不匹配问题。
这在Jakarta EE和MicroProfile之间引入了循环依赖。这会使匹配的发布节奏,依赖性,功能和协作变得更加困难,包括最终用户可能遇到的意外挑战。以下是一个说明版本依赖性不匹配的可能示例:MicroProfile m2与Jakarta EE j1对齐,而Jakarta EE j1与MicroProfile m1对齐。MicroProfile m2中包含MicroProfile Configuration c2。Jakarta Persistence p1依赖MicroProfile m1中的MicroProfile配置c1,因为Jakarta EE j1在MicroProfile m2之前发布。一个应用程序希望同时使用Jakarta EE j1和MicroProfile m2。该应用程序最终将使用哪个MicroProfile Configuration版本?如果已加载MicroProfile m2中的MicroProfile Configuration c2,
选项C: 创建MicroProfile规范的Jakarta EE版本。在这种情况下,Jakarta EE和MicroProfile将并行开发相似的功能。
MicroProfile和Jakarta EE可以独立地开发最合适的功能。 最终用户可以根据自己的喜好混合搭配MicroProfile和Jakarta EE。实现可以做同样的事情。
表达您的意见!
每种对准方法都有优点和缺点。尽管决策者可能会猜测对于最终用户和生态系统而言,正确的权衡是什么,但您可以在提供反馈时就最适合您的方面发挥作用。
原文链接:http://codingdict.com