JAXB против XmlBeans
JAXB является частью стандартов JavaEE и относится к архитектуре Java для привязки XML. Именно этот процесс используется для обработки документов XML. Использование JAXB является предпочтительным, поскольку оно предлагает альтернативу для обработки XML-документов в Java без необходимости понимать все мелкие детали технологии XML. JAXB доступен в JavaEE 5-совместимых приложениях в виде пакета с открытым исходным кодом. Пакет позволяет связывать данные и упрощает чтение и доступ к документам XML, написанным на языке программирования Java. XMLBeans, с другой стороны, является проектом с открытым исходным кодом, разработанным системами BEA, и они обеспечивают функциональность, аналогичную JAXB, в плане доступа к документам XML. Однако при работе с XMLBeans требуются хорошие базовые знания XML. Есть, однако, различия, отмеченные между ними, и они обсуждаются ниже.
Различия
До разработки JAXB и XMLBeans единственным способом, с помощью которого можно было обрабатывать XML, было использование программного обеспечения для анализа языка SAX (Simple API for XML) или использования DOM (объектной модели документа), причем оба языка анализа предоставлены 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 ввел гибкое unmarshalling XML-контента, который является недействительным и не решен, прекращать ли unmarshalling или нет.
Резюме:
- XMLBeans лучше, если вы предпочитаете более надежные функции XML, например, XQueries и прямой доступ к документам XML. Его использование происходит за счет управления памятью и производительности.
- JAXB предпочтительнее, если вы хотите более высокую производительность и управление памятью, хотя и не так тщательно, как XMLBeans.
- JAXB должен быть выбран, если вы после простой конвертации XML-документов.
- Настройка связывания лучше всего работает в JAXB, в отличие от XMLBeans.
- JAXB предлагает эффективное использование памяти в отличие от использования XMLBeans, который является зависимым от памяти процессом.
- Если вы хотите демонтировать XML-документ, JAXB - ваш выбор, поскольку XMLBeans сталкивается с трудностями при демаршаллинге. После привязки схемы вы можете использовать использование ObjectFactory для создания объектов и использовать методы set при создании контента..