@lsmn
2016-06-23T09:39:38.000000Z
字数 1297
阅读 2200
Java
JSON
JSON-B这个有望添加到Java EE 8的JSON绑定库发布了公开预览版。该库以JSON Processing(不要同JSONP或JSON-with-padding混淆)为基础构建,旨在为诸如Jackson或Gson这样的常见库提供一种标准的替代方案。不过,该JSR只针对Java EE,也就是说,Java SE的用户仍然需要使用第三方库。
JSON-B这个有望添加到Java EE 8的JSON绑定库发布了公开预览版。该库以JSON Processing(不要同JSONP或JSON-with-padding混淆)为基础构建,旨在为诸如Jackson或Gson这样的常见库提供一种标准的替代方案。不过,该JSR只针对Java EE,也就是说,Java SE的用户仍然需要使用第三方库。
为了提供一个JSON操作的API,Java EE 7于2013年引入了JSON Processing库。虽然JSON-P在操作和创建JSON对象时非常有用,但事实证明,它不足以满足开发人员的日常需求,他们需要一种更简单、更透明的方式,将一个普通的Java对象转换为JSON,反之亦然。
JSON Processing只是一个部分的解决方案,此外,它还比若干第三方工具出现得晚,其中包括2008年的Gson和2009年的Jackson。这些工具提供了多种集成机制来同其他Java EE组件,如JAX-RS,交互,使得它们在Web开发中非常流行。然而,不同技术的传播让创建可移植的应用程序变得困难,标准化解决方案的需求日益凸显。这从2014年的Java EE 8社区调查就看出来了,投票结果显示,JSON绑定工具成为Java EE新版本中优先级最高的特性。有鉴于此,针对JSON-B的JSR于那一年的8月被创建了出来,并计划在2017年上半年发布。
虽然社区对于这类功能有着强烈的需求,但该库面临的若干风险会妨碍它的应用。一方面,JSON Binding可能出现的太晚了:当前在2017年发布的计划已经意味着比最初的计划延期了6个月,这也意味着,Java EE 8本身也要延期6个月。不仅如此,对于这个行业来说,当前的时间表意味着7年的延期。
另一方面,Jackson开发负责人Tatu Saloranta指出,基于JSON Processing限制了JSON Binding的应用范围和可扩展性。Saloranta探讨了尝试基于JSON-B使用新标准重新实现Jackson的可能性,但几乎立刻就否定了这种可能性:
比如,这两点让实现Jackson或者基于JSON-B实现非常困难。除了全部的授权问题外,受限的范围和可扩展性意味着,Jackson所做的许多工作,除了简单的JSON数据绑定外,将无法以一种兼容的方式提供。
这可能削弱了JSON-B所带来的好处,加重人们对于Java EE没有获得足够重视的担忧,就像JCP执行委员会最近一次会议所反映出来的那样,可能会导致Java EE的开发职责转移到社区。