紧跟着早前发布的关于模块化JDK 的声明( InfoQ 之前曾报道过),Mark Reinhold 宣布 Jigsaw 项目成为 OpenJDK 的一部分。下面的内容援引了其声明:
为了在接下来的几年中能够模块化 JDK 7,同时也为了更好地宣传 JSR 294 的工作,Sun 打算不久之后在 OpenJDK 社区中创建 Jigsaw 项目。 该努力必然会创建一个简单、低层次的模块系统,其设计将聚焦于模块化 JDK 这个目标。开发者可以在自己的代码中使用该模块系统,Sun 也会全力支持该系统,但它并不会成为官方 Java SE 7 平台规范的一部分,也不一定会得到其他 SE 7 实现的支持。
如果未来的 Java SE 平台包含了特定的模块系统,那么 Sun 将提供一种方式来移植 Jigsaw 模块以使之符合相应的标准。同时,我们还会积极地寻求与其他模块系统交互的方式,尤其是 OSGi。
模块化 JDK 这个目标应该是可以实现的,尤其是 Apache Harmony 已经证明了 JDK 是可以被模块化的(使用 OSGi)。然而这个目标却因另一个原因而变得更加有趣:它将在 JCP 外实现。
由于缺少可视化的发展过程,再加上闭门造车的实现,对于大多数人来说很难参与进 JSR 277 ,更别提对其献计献策了。通常这会导致标准的误入歧途,使得标准过于关注实现的细节而忽视了通用性。不仅如此,这还会导致标准成为事后诸葛亮——想解决问题时(例如奇数的版本号)却发现已经太迟了。根据声明所述,JSR277 还处于“领导地位”,但它实际已死。
从JSR277 中分离出的 JSR294 (以前可是个庞然大物,不过现在已经模块化了)是个很大的进步;它将引入一些语言上的变化,这会使得模块化的实现独立于任何特定的模块化进程。
从声明中看到的激动人心的事情还有 OSGi 已经成为模块化的事实上的标准了,这种合作是件好事。但这不一定意味着它将基于 OSGi 实现,事实上,它只是建议最好与 OSGi 而不是其他方式合作:
JSR 277 的 JAM 模块系统并不适合作为模块化 JDK 的基础,那么 OSGi 框架如何呢?该模块系统非常成熟、稳定和健壮。其核心甚至已经在 Java 虚拟机中实现出来了,也就是 Apache Harmony。OSGi 并没有与 Java 语言集成,相反,它构建在 Java SE 平台之上而不是其中。 这最后的问题也能解决。Sun 现在计划直接与 OSGi 联盟合作以便 OSGi 框架的未来版本能充分利用 JSR 294 的特性进而能和语言集成的更加紧密。
我相信未来的 OSGi 标准会使用 JSR 294 的模块,尽管还有一些建议的改变。不管怎么样,下周在 Devoxx 08 举办的 Modularity in Java 讲座应该会对 Java 的未来做出一些有趣的预言。
活动推荐:
2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。
评论