JAXB срещу XmlBeans
JAXB е част от стандартите на JavaEE и се отнася до Java Architecture за свързване на XML. Именно този процес се използва за обработка на XML документи. Използването на JAXB е за предпочитане, тъй като предлага алтернатива за обработка на XML документи в Java, без да е необходимо да разбирате всички малки детайли на XML технологията. JAXB се предлага в съвместими с JavaEE 5 приложения като пакет с отворен код. Пакетът позволява обвързване на данни и лесно четене и достъп до XML документи, написани на програмния език на Java. XMLBeans, от друга страна, е проект с отворен код, разработен от BEA системи, и те осигуряват подобна функционалност на JAXB, като позволяват достъп до XML документи. Добри основни познания в XML обаче се изискват при работа с XMLBeans. Има обаче разлики, отбелязани между тях и те са разгледани по-долу.
Различията
Преди разработването на JAXB и XMLBeans, единственият начин, по който XML можеше да бъде обработен, беше чрез използването на софтуер, анализиращ език SAX (Simple API за XML) или използването на DOM (Document Object Model), и двата анализирани езика, предвидени от JAXP (Java API за обработка на API). Програмистът трябваше да създаде код, насочен към извикване на DOM или SAX чрез JAXP, така че кодът да може да анализира езика в XML документа. При сканиране кодът обикновено разбива кода на отделни парчета, така че да може да бъде предоставен на целевите приложения.
Основната разлика, отбелязана между JAXB и XMLBeans, е подходът, който всеки предприема при прехвърлянето на марш и демаркирането на XML документи. XMLBeans обработва целия XML документ, без да преминава през преобразуване на Java, тъй като е показано, че целостта на данните на XML документа е загубена. XMLBeans има създаден курсор, който сканира чрез XML документа. С курсора може да се получи достъп до всеки елемент от документа, включително информация за схемата или коментари, тъй като верността на документа се поддържа. XMLBeans също така предвижда изпълнението на XQuery в рамките на един и същ документ. Допълнителен типизиран достъп се осигурява от XMLBeans с доста общ тип достъп, който се превръща в отражение на API. Както вече беше споменато, XMLBeans изисква огромно познаване на XML и, като допълнение, SAX или дори DOM.
JAXB, от друга страна, се обвързва с XML схемата. Това следва проблем, възникнал с първата версия на JAXB, тъй като той не беше в състояние да поддържа всички функции на XML схемата да могат да поддържат само DTD (Определения на типа на документа). Това всъщност означаваше, че първото издание на JAXB не може да осигури четими връзки. JAXB 2.0 направи обработката на разработката доста лесна, тъй като осигурява пълна поддръжка на XML схеми, картографиране на схемата от Java към XML, преносимост и развитие на схеми. Освен това, JAXB въведе гъвкавото демарширане на XML съдържание, което е невалидно и не е решено дали да прекрати премахването на марша или не.
Резюме:
- XMLBeans е по-добре, ако предпочитате по-здрави XML функции, напр. XQueries и директен достъп до XML документи. Използването му идва за сметка на управлението и производителността на паметта.
- JAXB е предпочитан, ако желаете по-висока производителност и управление на паметта, въпреки че не е толкова задълбочен като XMLBeans.
- JAXB трябва да бъде избран, ако след просто преобразуване на XML документ.
- Персонализирането на обвързването се среща най-добре в JAXB, за разлика от XMLBeans.
- JAXB предлага ефективно използване на паметта за разлика от използването на XMLBeans, което е процес, зависим от паметта.
- Ако искате да демаркирате XML документ, JAXB е вашият избор, тъй като XMLBeans се сблъсква с трудности при демарширането. При обвързваща схема можете да използвате използването на ObjectFactory за създаване на обекти и да използвате зададени методи при създаването на съдържание.