API de repositorio de contenido para Java


Content Repository API for Java ( JCR ) es una especificación para una interfaz de programación de aplicaciones (API) de la plataforma Java para acceder a los repositorios de contenido de manera uniforme. [1] [ verificación fallida ] Los repositorios de contenido se utilizan en los sistemas de gestión de contenido para mantener los datos de contenido y también los metadatos utilizados en los sistemas de gestión de contenido (CMS), como los metadatos de control de versiones. La especificación fue desarrollada bajo el Java Community Process como JSR-170 (Versión 1), [2] [3] y como JSR-283 (versión 2). [4] Lo principalEl paquete Java es javax.jcr.

Un JCR es un tipo de base de datos de objetos diseñada para almacenar, buscar y recuperar datos jerárquicos. La API de JCR surgió de las necesidades de los sistemas de administración de contenido, que requieren almacenar documentos y otros objetos binarios con metadatos asociados; sin embargo, la API es aplicable a muchos tipos adicionales de aplicaciones. Además del almacenamiento de objetos, el JCR proporciona: API para el control de versiones de datos; transacciones ; observación de cambios en los datos; e importación o exportación de datos a XML de forma estándar.

Los datos en un JCR consisten en un árbol de nodos con propiedades asociadas. Los datos se almacenan en las propiedades, que pueden contener valores simples como números y cadenas o datos binarios de longitud arbitraria. Los nodos pueden tener opcionalmente uno o más tipos asociados con ellos que dictan los tipos de propiedades, el número y el tipo de nodos secundarios y ciertas características de comportamiento de los nodos. Los nodos pueden apuntar a otros nodos a través de una propiedad de tipo de referencia especial. De esta manera, los nodos en un JCR ofrecen integridad referencial y un concepto de herencia orientado a objetos.. Los tipos de nodos adicionales incluyen el tipo de nodo referenciable que permite al usuario hacer referencia a dicho nodo mediante el uso de un identificador único universal. Otro tipo popular es el tipo versionable. Esto hace que el repositorio rastree el historial de un documento y almacene copias de cada versión del documento.

Un JCR puede exportar partes de su árbol a XML en dos formatos estándar y puede importar jerarquías directamente desde XML. Las implementaciones compatibles con JSR 283 deben admitir una forma estandarizada de SQL para consultas y un QOM de modelo de objeto de consulta. JSR 283 desaprueba el lenguaje de consulta XPath definido en JSR 170. La implementación de referencia Apache Jackrabbit de JCR también admite la integración del motor de búsqueda Apache Lucene para brindar búsquedas de datos de texto completo en el repositorio.

Ambos JSR están dirigidos por David Nüscheler de Adobe Systems (anteriormente de Day Software ). Day tenía una implementación comercial de JCR llamada Content Repository Extreme (CRX) y participó en Apache Jackrabbit JCR de código abierto , [5] [6] que tuvo su versión 2.0 en enero de 2010. ModeShape [7] es otra implementación de JCR de código abierto que soporta JSR-283. Jahia , hipopótamo CMS y Magnolia son sistemas de gestión de contenido empresarial creados en la API de JCR, que utilizan Jackrabbit como su repositorio de forma predeterminada, pero pueden conectarse a cualquier otra implementación de repositorio certificada por JSR-170. JSR-170 también es compatible con Oracle Beehive , el software de colaboración empresarial de Oracle. El eXo JCR de eXo Platform es un repositorio de código abierto con documentación y soporte comercial pagado. Muchos otros proveedores comerciales están trabajando en la compatibilidad y los productos de JCR. Alfresco es un sistema de gestión de contenido de código abierto que proporciona una API JCR en su repositorio. GX lanzó la nueva versión comunitaria de su plataforma de administración de contenido empresarial (ECM) web basada de forma nativa en Apache Jackrabbit y JSR.

Las adaptaciones de PHP han sido iniciadas por TYPO3 , traduciendo la API de Java a PHP. [8] [9] Las interfaces PHPCR también son implementadas por Jackalope, [10] una interfaz de PHP que se comunica con el backend de Jackrabbit a través de la interfaz WebDAV, y Midgard , [11] un repositorio de contenido en varios idiomas.