Różnice między JAXB i XmlBeans

Anonim

JAXB vs XmlBeans

JAXB jest jedną z części standardów JavaEE i odnosi się do architektury Java Architecture for Binding. Jest to proces wykorzystywany do przetwarzania dokumentów XML. Korzystanie z JAXB jest preferowane, ponieważ oferuje alternatywę dla przetwarzania dokumentów XML w Javie bez konieczności rozumienia wszystkich małych szczegółów technologii XML. JAXB jest dostępny w aplikacjach zgodnych z JavaEE 5 jako pakiet open source. Pakiet pozwala na wiązanie danych oraz łatwość czytania i uzyskiwania dostępu do dokumentów XML napisanych w języku programowania Java. Z kolei XMLBeans to projekt typu open source opracowany przez systemy BEA, który zapewnia podobną funkcjonalność do JAXB, umożliwiając dostęp do dokumentów XML. Dobra znajomość XML w tle jest jednak wymagana w przypadku obsługi XMLBeans. Istnieją jednak różnice między nimi i są one omówione poniżej.

Różnice

Przed opracowaniem JAXB i XMLBeans, jedynym sposobem przetwarzania XML był użycie oprogramowania analizującego język SAX (Simple API for XML) lub użycie DOM (Document Object Model), oba języki analizowane przez JAXP (Java API do przetwarzania API). Deweloper musiał stworzyć kod, który byłby przeznaczony do wywoływania DOM lub SAX przez JAXP, tak aby kod mógł analizować język w dokumencie XML. Podczas skanowania kod zazwyczaj dzielił kod na różne części, dzięki czemu mógł zostać udostępniony docelowym aplikacjom.

Główną różnicą między JAXB i XMLBeans jest podejście, z którego każda bierze udział w zestawianiu i eliminowaniu dokumentów XML. XMLBeans przetwarza cały dokument XML bez przechodzenia przez konwersję Java, ponieważ integralność danych dokumentu XML została utracona. XMLBeans ma utworzony kursor, który skanuje dokument XML. Za pomocą kursora można uzyskać dostęp do dowolnego elementu dokumentu, w tym do informacji o schemacie lub komentarzy, ponieważ zachowana jest wierność dokumentu. XMLBeans zapewnia również wykonanie XQuery w tym samym dokumencie. Kolejny typ dostępu jest zapewniany przez XMLBean z dość ogólnym typem dostępu, który staje się odbiciem API. XMLBeans, jak wspomniano wcześniej, wymaga rozległej znajomości XML, a przez to SAX, a nawet DOM.

Z drugiej strony JAXB jest związany ze schematem XML. Jest to następstwo problemu, który pojawił się w pierwszym wydaniu JAXB, ponieważ nie był w stanie obsłużyć wszystkich funkcji schematów XML, które są w stanie obsługiwać wyłącznie definicje DTD (Definicje typów dokumentów). Oznaczało to, że pierwsza wersja JAXB nie mogła zapewnić czytelnych powiązań. JAXB 2.0 bardzo ułatwił proces programowania, ponieważ zapewnia pełną obsługę schematów XML, mapowanie schematów Java na XML, przenośność i ewolucję schematu. Ponadto JAXB wprowadził elastyczne usuwanie treści XML, które jest nieważne i nie jest zdecydowane, czy wypowiedzieć instrukcję unmarshall, czy też nie.

Streszczenie:

- XMLBeans jest lepszy, jeśli wolisz bardziej niezawodne funkcje XML, np. XQueries i bezpośredni dostęp do dokumentów XML. Jego użycie odbywa się kosztem zarządzania pamięcią i wydajności.

- JAXB jest preferowany, jeśli zależy Ci na wyższej wydajności i zarządzaniu pamięcią, choć nie jest tak dokładny jak XMLBeans.

- JAXB powinien zostać wybrany, jeśli szukasz prostej konwersji dokumentu XML.

- Dostosowanie wiązania występuje najlepiej w JAXB w przeciwieństwie do XMLBeans.

- JAXB oferuje wydajne wykorzystanie pamięci, w przeciwieństwie do wykorzystania XMLBeans, który jest procesem zależnym od pamięci.

- Jeśli chcesz unmarshal dokumentu XML, JAXB jest twoim wyborem, ponieważ XMLBeans napotyka trudności w unmarshalling. Po powiązaniu schematu można użyć narzędzia ObjectFactory do tworzenia obiektów i zastosować metody zestawów do generowania treści.