BT

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

Java 8 Update 11破坏了第三方工具

| 作者 Ben Evans 关注 13 他的粉丝 ,译者 马德奎 关注 0 他的粉丝 发布于 2014年8月3日. 估计阅读时间: 2 分钟 | QCon北京2018全面起航:开启与Netflix、微软、ThoughtWorks等公司的技术创新之路!

亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的邮件和网页通知

Oracle最近发布的Java 8 update 11(以及7 update 65)导致一些第三方工具出现了问题。ZeroTurnaround的JRebel是受影响的工具之一,Groovy编程语言也报告了不兼容情况。其它受影响的工具还包括Javassist,这是一个Java字节码操作库,同时还有一些用户报告了工具的问题,如Google的Guice(在某些情况下——尤其是那些使用了AOP的情况)和Jacoco代码覆盖工具。Oracle通过Groovy项目团队Jochen Theodorou提供的测试用例确认了这一Bug。

该问题似乎是由于8u11修改了JVM的字节码验证子系统而引起的。Java语言要求构造函数将任何对超类构造函数的调用作为其首先执行的动作,但在平台的早期版本中,字节码验证器似乎没有对这一点进行强制。Oracle决定开始更坚定地强制执行这一语言特性,这可能会消除一个语言规范的Bug,但它似乎已经对该生态系统中的许多工具产生了影响。

目前,没有任何迹象表明没有使用字节码重编或者AOP技术的Java代码受到该Bug的影响。据了解,8u11版本完全兼容所有由javac直接生成的、不受重编技术影响的字节码,但这些技术在现代框架中的广泛存在使得这一消息只能给开发人员带来有限的安慰。

Oracle至今尚未宣布发布修复补丁的日期,而且到目前为止,唯一的总体变通方案是使用-noverify开关或者避免在修复补丁发布之前升级。不过,个别工具已经提出了他们自己的变通方案,比如,Anton Arhipov(Zero Turnaround)已经确认,最新版本的JRebel(5.6.1)将包含针对这个问题的变通方案。

查看英文原文:Java 8 Update 11 Broke Third Party Tools

评价本文

专业度
风格

您好,朋友!

您需要 注册一个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