JAXB vs XmlBeans
JAXB er en del af JavaEE-standarderne og henviser til Java Architecture for XML Binding. Det er denne proces, der bruges til behandling af XML-dokumenter. Brug af JAXB foretrækkes, da det giver et alternativ til behandling af XML-dokumenter i Java uden nødvendigvis at skulle forstå alle de små detaljer i XML-teknologien. JAXB er tilgængelige i JavaEE 5-applikationer som en open source-pakke. Pakken gør det muligt at binde data og lette at læse og få adgang til XML-dokumenter skrevet på Java-programmeringssprog. XMLBeans er på den anden side et open source-projekt udviklet af BEA-systemer, og disse giver lignende funktionalitet som JAXB ved at give adgang til XML-dokumenter. En god baggrundsviden inden for XML er dog påkrævet, når man håndterer XMLBeans. Der er dog bemærkede forskelle mellem de to, og de diskuteres nedenfor.
Forskelle
Før udviklingen af JAXB og XMLBeans, var den eneste måde, hvorpå XML kunne behandles, ved hjælp af softwareanalysesprog SAX (Simple API for XML) eller brug af DOM (Document Object Model), begge analyser af sprog, der er leveret af JAXP (Java API til API-behandling). Udvikleren måtte oprette kode, der var målrettet mod at påkalde DOM eller SAX gennem JAXP, så koden kunne analysere sproget i XML-dokumentet. Ved scanning opdelte koden normalt koden i forskellige stykker, så den kunne stilles til rådighed for de målrettede applikationer.
Den største forskel, der bemærkes mellem JAXB og XMLBeans, er den tilgang, som hver tager i forbindelse med marshalling og afmontering af XML-dokumenter. XMLBeans behandler hele XML-dokumentet uden at gå gennem Java-konvertering, da dataintegriteten af XML-dokumentet har vist sig at gå tabt. XMLBeans har oprettet en markør, der scanner gennem XML-dokumentet. Med markøren kan du få adgang til ethvert element i dokumentet inklusive skemaoplysninger eller kommentarer, da dokumentets opretholdelse opretholdes. XMLBeans sørger også for udførelse af XQuery i det samme dokument. Yderligere typet adgang tilvejebringes af XMLBeans med en temmelig generisk adgangstype, der bliver en afspejling af API. XMLBeans kræver som tidligere nævnt et stort kendskab til XML og, i forlængelse heraf, SAX eller endda DOM.
På den anden side kommer JAXB bundet med XML-skemaet. Dette følger efter et problem, der opstod med den første JAXB-udgivelse, da det ikke var i stand til at understøtte alle XML-skemafunktioner, der kun var i stand til at understøtte DTD'er (Definition af dokumenttype). Dette betød faktisk, at den første frigivelse af JAXB ikke kunne tilvejebringe læsbare bindinger. JAXB 2.0 har gjort udviklingsbehandlingen ret let, da det giver mulighed for fuld XML-skemaunderstøttelse, Java til XML-skemamapping, portabilitet og skemaudvikling. Yderligere har JAXB introduceret den fleksible afmelding af XML-indhold, der er ugyldigt og ikke besluttet, om man skal afslutte afmelding eller ikke.
Resumé:
- XMLBeans er bedre, hvis du foretrækker mere robuste XML-funktioner f.eks. XQueries og direkte XML-dokumentadgang. Dets brug kommer på bekostning af hukommelsesstyring og ydeevne.
- JAXB foretrækkes, hvis du ønsker højere ydelse og hukommelsesstyring, selvom det ikke er så grundigt som XMLBeans.
- JAXB burde vælges, hvis du er interesseret i en simpel XML-dokumentkonvertering.
- Bindingstilpasning forekommer bedst i JAXB i modsætning til XMLBeans.
- JAXB tilbyder effektiv hukommelsesbrug i modsætning til brugen af XMLBeans, som er en hukommelsesafhængig proces.
- Hvis du ønsker at afmarkere et XML-dokument, er JAXB dit valg, da XMLBeans står overfor vanskeligheder med at afmontere. Ved bindende skemaer kan du anvende ObjectFactory til objektskabelse og anvende sætmetoder til generering af indholdsoprettelse.