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 repositorios de contenido de manera uniforme. [1] [ verificación fallida ] Los repositorios de contenido se utilizan en sistemas de gestión de contenido para mantener los datos de contenido y también los metadatos utilizados en sistemas de gestión de contenido (CMS) como metadatos 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] El paquete principal de Java es .
javax.jcr
Descripción general
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 gestión de contenido, que requieren almacenar documentos y otros objetos binarios con metadatos asociados; sin embargo, la API es aplicable a muchos otros tipos 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.
Estructura de datos
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, número y 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 orientado a objetos de herencia . 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.
Consultas
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 modelo de objetos de consulta QOM. JSR 283 deja obsoleto 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 texto completo de los datos en el repositorio.
Implementaciones disponibles
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 estuvo involucrado en el Apache Jackrabbit JCR de código abierto, [5] [6] que tuvo su lanzamiento 2.0 en enero de 2010. ModeShape [7] es otra implementación de JCR de código abierto que admite JSR-283. Adobe Experience Manager (AEM) , Jahia , Hippo 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 conectar cualquier otra implementación de repositorio certificada JSR-170. JSR-170 también es compatible con Oracle Beehive , el software de colaboración empresarial de Oracle. eXo JCR de eXo Platform es un repositorio de código abierto con soporte comercial y documentación pagos. 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 de JCR en su repositorio. GX lanzó la nueva versión comunitaria de su plataforma de gestión de contenido empresarial (ECM) web basada nativamente 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] un frontend PHP que se comunica con el backend Jackrabbit a través de la interfaz WebDAV, y Midgard , [11] un repositorio de contenido multilenguaje.
Véase también
- Servicios de interoperabilidad de gestión de contenido (CMIS), otra API de repositorio de contenido
Referencias
- ^ API de Java para registros XML: otra API de Java para registros y repositorios
- ^ JSR-170
- ^ "JSR-170 (versión HTML de la especificación)". Archivado desde el original el 8 de junio de 2009. Consultado el 17 de febrero de 2009 .
- ^ JSR-283
- ^ Página de inicio de Apache Jackrabbit
- ^ Enlaces JCR a artículos y aplicaciones basados en JCR.
- ^ "ModeShape 5.4.0.Final está disponible". modeshape.jboss.org . Consultado el 30 de mayo de 2024 .
- ^ phpCR
- ^ phpcr en github
- ^ "Jackalope: JCR para PHP". Archivado desde el original el 27 de enero de 2013. Consultado el 19 de septiembre de 2017 .
- ^ Bergius, Henri (23 de diciembre de 2011). "El proveedor PHPCR Midgard2 llega a 1.0".