最近,Java社区内,围绕的组件化的探讨主要是关于OSGi和Jigsaw之间谁才是实现组件化的正确途径进行争辩。Jigsaw阵营组件基于Java类,而OSGi组件基于封装。
依赖包似乎很明显,我有时总是有点错愕,为什么要激烈的反对如此简单的想法。所以,让我们看一看反对派的论点。
把类型导入嵌入类的属性中,为类型-安全代码完全指定最小的依赖关系图:“把你的代码给我,我会告诉你,你依赖什么。”虽然类的属性只包含类型的名字……
我们讨论的一件事情,大家似乎都同意了,下一代模块看起来有些像JAR。但是,随后协议终止了。不同的是JAR的内容应该是什么样、如何表示导入、如何导出公共的内容。
Jigsaw实现了一个模块化系统,Java8在某种程度上偏离Java模块化精神,这将成为一个不合格的语言,未来会在Java社区会引起无数另人头痛的事。
我认为代码共享是不可避免的,而且这种信仰趋势我从八十年代就开始从事自己的工作。软件应该从组件创建,这个组件在点对点的基础上,通过显示接口协作。
在2000年初,Rod Johnson写了一本非常成功的书,主要关于控制反转(IoC),并演示了对于企业应用来说,这个模式是多么有用。随后,他用开源Spring框架普及了这个模型。
OSGi(Open Service Gateway Initiative)是关于通过在框架中安装一套(可重用的)模块,如何创建一个有用的应用。基本上,我们在1998年开始着手解决组件编程模型……