Erinevused JAXB ja XmlBeansi vahel

JAXB vs XmlBeans

JAXB on JavaEE standardite üks osa ja viitab Java Arhitektuurile XML-i sidumiseks. Just seda protsessi kasutatakse XML-dokumentide töötlemiseks. Eelistatud on JAXB kasutamine, kuna see pakub Java-s XML-dokumentide töötlemiseks alternatiivi, ilma et oleks vaja tingimata mõista kõiki XML-tehnoloogia pisidetaile. JAXB on saadaval JavaEE 5 ühilduvates rakendustes avatud lähtekoodiga pakendina. Pakett võimaldab andmete sidumist ning Java programmeerimiskeeles kirjutatud XML-dokumentide lugemist ja neile juurdepääsu hõlbustamist. XMLBeans seevastu on BEA süsteemide välja töötatud avatud lähtekoodiga projekt ja need pakuvad JAXB-ga sarnaseid funktsioone, võimaldades juurdepääsu XML-dokumentidele. XMLBeansiga suheldes on aga vaja häid taustateadmisi XML-is. Nende kahe vahel on siiski erinevusi ja neid käsitletakse allpool.

Erinevused

Enne JAXB ja XMLBeans'i väljatöötamist oli XML-i töötlemise ainus viis tarkvara SAX (XML-i lihtne API) analüüsimise tarkvara või DOM-i (Document Object Model) kasutamine, mis mõlemad analüüsivad keeli JAXP (Java API API töötlemiseks). Arendaja pidi looma koodi, mis oli suunatud DOM-i või SAX-i kutsumisele JAXP kaudu, et kood saaks XML-dokumendi keelt analüüsida. Skaneerimisel jagas kood tavaliselt koodi eraldi osadeks, nii et selle saaks sihitud rakendustele kättesaadavaks teha.

Peamine erinevus JAXB ja XMLBeansi vahel on lähenemisviis, mida mõlemad kasutavad XML-dokumentide sorteerimisel ja sobimatul kasutamisel. XMLBeans töötleb kogu XML-dokumenti ilma Java-konversiooni läbimata, kuna on näidatud, et XML-dokumendi andmete terviklikkus on kadunud. XMLBeansil on loodud kursor, mis skannib läbi XML-dokumendi. Kursori abil pääseb juurde dokumendi mis tahes elemendile, sealhulgas skeemiteabele või kommentaaridele, kuna dokumendi usaldusväärsus säilib. XMLBeans näeb ette ka dokumendi XQuery täitmise sama dokumendi piires. Täiendava trükitud juurdepääsu pakub XMLBeans üsna üldise juurdepääsu tüübiga, millest saab API peegeldus. Nagu varem mainitud, nõuavad XMLBeans laiaulatuslikke teadmisi XML-i ja laiendatult SAX-i või isegi DOM-i kohta.

JaXB seevastu on seotud XML-skeemiga. See järgneb probleemile, mis tekkis koos esimese JAXB väljalaskega, kuna see ei suutnud toetada kõiki XML-skeemi funktsioone, kuna suutis toetada ainult DTD-sid (Document Type Definitions). Tegelikult tähendas see seda, et JAXB esimene väljalase ei suutnud näha loetavaid köiteid. JAXB 2.0 on arendustöötluse üsna hõlpsaks muutnud, kuna see pakub täielikku XML-skeemi tuge, Java-XML-skeemi kaardistamist, teisaldamist ja skeemi arengut. Lisaks on JAXB kehtestanud XML-i sisu paindliku unmarshallimise, mis on kehtetu ja mille üle otsustatakse, kas lõpetada sulandamine või mitte.

Kokkuvõte:

- XMLBeans on parem, kui eelistate jõulisemaid XML-i funktsioone, nt. XQueries ja otsene juurdepääs XML-dokumentidele. Selle kasutamine toimub mäluhalduse ja jõudluse arvelt.

- JAXB on eelistatav, kui soovite suuremat jõudlust ja mäluhaldust, ehkki see pole nii põhjalik kui XMLBeans.

- JAXB tuleks valida juhul, kui olete pärast lihtsat XML-dokumendi teisendamist.

- Siduv kohandamine toimub kõige paremini JAXB-s, mitte XMLBeansis.

- JAXB pakub mälu tõhusaks kasutamiseks erinevalt XMLBeansi kasutamisest, mis on mälupõhine protsess.

- Kui soovite XML-i dokumenti halvustada, siis on teie valik JAXB, kuna XMLBeansil on raskusi selle eemaldamisega. Sidumisskeemi korral saate kasutada objekti loomiseks ObjectFactory kasutamist ja kasutada sisuloome genereerimisel komplekti meetodeid.