Java世界中术语确实很多,对于新开发人员来说这可能会造成重大的学习曲线。使用Java传递JSON或XML文档并不是特别困难,只是多年来需要使用的各种组件已经衍生出了术语。下面是我对您提到的术语的理解列表...
XML - 您知道XML是什么吧?可扩展标记语言。在JSON成为主流之前,这就是我们所拥有的。
JSON - 哦,JSON是新的主流。它是一种人类可读的对象序列化格式,比XML更简洁。现在非常流行。它是新的灵丹妙药,能够解决所有问题...
JAXB - 在Java生态系统中,“Java Architecture for XML Binding”是将XML数据转换为您可以进行交互的对象的主要机制,反之亦然。重要的是要意识到它是一个API而不是一个实现,因此它主要定义了javax.xml.bind
包中的一组注释和简单类/接口。要使用JAXB进行任何有用的操作,您需要一个实现。Glassfish应用服务器中包含有参考实现。大多数应用服务器都会有一些JAXB的实现。
Jackson - 数据绑定的库。它支持XML和JSON作为文档格式,并实现了JAXB API。您可以将Jackson用作JAXB的实现,也可以直接使用Jackson API。
EclipseLink Moxy - JAXB API的另一种实现方式。像Jackson一样,它也有自己的API。您可以选择使用它或不使用。您可能不想同时使用Jackson和Moxy。
Jersey-media-moxy - 如您所提到的,Jersey是JAX-RS的一个实现。 JAX-RS 的一个方面是传递文档 - 通常是XML或JSON。为此,Jersey需要知道使用哪个基础库来进行数据绑定或流处理。因此,jersey-media-moxy作为一种jersey插件依赖项存在,您可以使用它来配置Jersey以使用Moxy进行对象序列化。对于使用jackson的等效程序包,也有类似的包名为jersey-media-json-jackson。
Jettison - 又一个用于将Java对象转换为Json的序列化库。
JSON-P - 一种用于处理JSON的API,可以将其作为事件流或通过数据绑定到对象进行处理。该API仍在开发中。您可能会问如何做json处理而不使用它-答案是他们要么利用专有库API(例如Jackson或Moxy),要么使用将JAXB API重新配置为与JSON一起工作的库(Jackson肯定可以,我不确定Moxy是否可以)。JSON-P将使直接使用JSON功能更加容易,而无需使用JAXB带来的所有XML概念。