BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Jigsaw被推迟到了Java SE 9

| 作者 Alex Blewitt 关注 4 他的粉丝 ,译者 张龙 关注 12 他的粉丝 发布于 2013年1月15日. 估计阅读时间: 3 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

近日,Java Platform Group的首席架构师Mark Reinhold在其博客上宣布添加模块化系统以及模块化JDK的提案被推迟到了Java SE 9

虽然是个艰难的决定,但这么做可以确保将更多的精力放在模块化系统上,从而保证最终的正确性,这么做也不会延误Java SE 8的发布,Java SE 8计划在今年8月发布。

这个决定让人想起2010年的执行计划Plan B,它将Lambdas(即JSR 335)的加入推迟到了JDK 7发布后。这样,JDK 7就在一年半前发布了(2011年7月),距离之前的JDK 6发布过去了4年半。

为了保证稳定性与未来的路线图,JDK将会每两年发布一次版本,同时会有一年两次的Release Train,这类似于Eclipse每年的Release Train——Reinhold表示Eclipse的Release Train的发布时间在夏末,正好是中间的时间点。

这样,大型组织就可以规划何时升级到新版本的JDK上去,并使用敏捷规划技术,根据已经完成的内容来进行日常发布,而不会导致匆忙发布或是延迟发布。

但遗憾的是,这意味着今年8月发布的JDK 8将不会有基于Jigsaw的模块化系统。引入模块化的延迟并不会对一般的开发者造成影响;但随着软件代码量的增长,模块化将会成为软件架构中的必要工具。诸如OSGiPojoSR之类的模块化系统已经为模块提供了运行时支持;模块化已经成为众多构建与运行时系统中的关键组成部分,对于企业应用服务器来说亦如此。

虽然可以在之后添加模块化支持,但随着代码基历史的不断增长(通常并没有使用模块化进行设计),找到适合的模块将成为一件棘手的事情。没多少人认为JavaBeans API需要依赖于GUI;但java.beans.Beans#instantiate()却包含了指向java.applet.AppletInitializer的一个引用,这直接导致依赖了java.awt包。因此,为JDK寻找合适的模块依然是个巨大的挑战;随着包数量的不断增长,这些包之间不经意的依赖也会不断增加。java.lang、java.io与java.net包彼此都包含了循环引用,这使得将其划分到不同模块变得异常艰难。

最后,Jigsaw的延迟引入可以给Oracle与其他模块化专家提供更多的时间来精化提案并使用已有的想法与开发计划。正如Mark在其博客上说到,Jigsaw的延迟并不是因为工作做得不够,也不是因为目前为止所取得的进展或实现不足,而是不想延误事先定好的JDK 8发布计划,也是为了确保JDK平台的模块化实现要成为最棒的实现。

查看英文原文:Jigsaw Deferred until Java SE 9

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT