API репозитория контента для Java


API репозитория контента для Java ( JCR ) — это спецификация интерфейса прикладного программирования (API) платформы Java для унифицированного доступа к репозиториям контента . [1] [ неудачная проверка ] Репозитории контента используются в системах управления контентом для хранения данных контента, а также метаданных , используемых в системах управления контентом (CMS), таких как метаданные управления версиями. Спецификация была разработана в рамках процесса сообщества Java как JSR-170 (версия 1), [2] [3] и как JSR-283 (версия 2). [4] ОсновнаяJava-пакет есть javax.jcr.

JCR — это тип объектной базы данных , предназначенный для хранения, поиска и извлечения иерархических данных. JCR API вырос из потребностей систем управления контентом, которые требуют хранения документов и других двоичных объектов с соответствующими метаданными; однако API применим ко многим дополнительным типам приложений. В дополнение к хранилищу объектов JCR предоставляет: API для управления версиями данных; транзакции ; наблюдение за изменениями данных; и импортировать или экспортировать данные в XML стандартным способом.

Данные в JCR состоят из дерева узлов со связанными свойствами. Данные хранятся в свойствах, которые могут содержать простые значения, такие как числа и строки, или двоичные данные произвольной длины. Узлы могут дополнительно иметь один или несколько связанных с ними типов, которые определяют виды свойств, количество и тип дочерних узлов и определенные поведенческие характеристики узлов. Узлы могут указывать на другие узлы через специальное свойство ссылочного типа. Таким образом, узлы в JCR обеспечивают как ссылочную целостность , так и объектно-ориентированную концепцию наследования .. Дополнительные типы узлов включают в себя тип узла, на который можно ссылаться, который позволяет пользователю ссылаться на указанный узел посредством использования универсального уникального идентификатора. Другим популярным типом является версионный тип. Это заставляет репозиторий отслеживать историю документа и хранить копии каждой версии документа.

JCR может экспортировать части своего дерева в XML в двух стандартных форматах и ​​может импортировать иерархии непосредственно из XML. Реализации, совместимые с JSR 283, должны поддерживать стандартизированную форму SQL для запросов и объектную модель запроса QOM. JSR 283 не поддерживает язык запросов XPath , определенный в JSR 170. Эталонная реализация JCR Apache Jackrabbit также поддерживает интеграцию поисковой системы Apache Lucene для обеспечения полнотекстового поиска данных в репозитории.

Оба JSR возглавляет Дэвид Нюшелер из Adobe Systems (ранее Day Software ). У Дэя была как коммерческая реализация JCR под названием Content Repository Extreme (CRX), так и участие в Apache Jackrabbit JCR с открытым исходным кодом [5] [6] , версия 2.0 которого была выпущена в январе 2010 года. ModeShape [7] — еще одна реализация JCR с открытым исходным кодом . который поддерживает JSR-283. Jahia , Hippo CMS и Magnolia - это системы управления корпоративным контентом, построенные на JCR API, использующие Jackrabbit в качестве репозитория по умолчанию, но способные подключать любую другую реализацию репозитория, сертифицированную JSR-170. JSR-170 также поддерживается Oracle Beehive , корпоративным программным обеспечением Oracle для совместной работы. eXo JCR от eXo Platform — это репозиторий с открытым исходным кодом с платной коммерческой поддержкой и документацией. Многие другие коммерческие поставщики работают над совместимостью и продуктами JCR. Alfresco — это система управления контентом с открытым исходным кодом, которая предоставляет API JCR для своего репозитория. GX выпустила новую версию для сообщества своей платформы управления корпоративным веб- контентом (ECM), изначально основанной на Apache Jackrabbit и JSR.

Адаптация PHP была начата TYPO3 , переводя Java API на PHP. [8] [9] Интерфейсы PHPCR также реализованы в Jackalope, [10] PHP-интерфейсе, взаимодействующем с бэкэндом Jackrabbit через интерфейс WebDAV, и Midgard , [11] многоязычном репозитории контента.