Java世界中有很多術語,可以爲新開發人員創建一個重要的學習曲線。這並不是說使用Java傳遞JSON或XML文檔特別困難,它只是你多年來需要做的各種各樣的部分。我試圖列出我對以下使用的術語的理解...
XML - 您知道XML是什麼,對吧?可擴展標記語言。這是我們在JSON成爲大事之前所擁有的。
JSON - 哦,那麼,JSON是新的大事情。它是一種人類可讀的對象序列化格式,不比XML冗長。時下非常流行。這是新的靈丹妙藥,對你將面臨的所有問題都有好處...
JAXB - Java生態系統中的「用於XML綁定的Java架構」是將XML數據轉換爲對象的主要機制,然後可以互動,反之亦然。認識到它是一個API而不是一個實現很重要,所以它主要在javax.xml.bind
包中定義了一組註釋和簡單的類/接口。爲了做任何有用的JAXB,你需要一個實現。 Glassfish應用服務器中包含了一個參考實現。大多數應用服務器都會有一些JAXB的實現。
Jackson - 用於數據綁定的庫。它支持XML和JSON作爲文檔格式,並實現JAXB API。您可以使用Jackson作爲您的JAXB實現,或者您可以直接使用Jackson API。
EclipseLink Moxy - JAXB API的替代實現。像傑克遜一樣,它也有自己的API。您可以選擇使用它,也可以不使用它。你可能不想同時使用傑克遜和Moxy。如上所述,Jersey是JAX-RS的一個實現。 JAX-RS的一個方面是傳遞文檔 - 通常是XML或JSON。要做到這一點,Jersey需要知道底層庫用於數據綁定或流處理。所以jersey-media-moxy作爲一種球衣插件依賴項存在,您可以使用它配置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概念。
在解釋JAXB時,你提到「API而不是實現」,有什麼區別? API是應用程序編程接口,您可以在其中實現一些應用程序,並且可以讓其他程序使用它。那麼它與實現有什麼不同呢?我和OP一樣,是Java Web開發世界的新手。請啓發我們。謝謝。 – user3705478
幾分鐘後......我讀了這個「Jersey-media-moxy--正如你所提到的,Jersey是JAX-RS的一個實現」 - 由於Jersey是JAX-RS的實現,那麼JAX-RS是一個API是一些簡單的類/接口)? – user3705478
@ user3705478一個API本身只是一個規範,這意味着創建接口來定義程序遵循的規則,以便利用API的預期功能。所以你的理解是正確的,因爲JAX-RS是一個API,Jersey(以及RESTEasy和Apache CXF)是該規範的實現。 –