API de repositorio de contenido para Java
API de repositorio de contenido para 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. Los repositorios de contenido se utilizan en los sistemas de gestión de contenidos para conservar los datos del contenido y también los metadatos utilizados en los sistemas de gestión de contenidos (CMS), como los metadatos de control de versiones. La especificación se desarrolló bajo el proceso de la comunidad Java como JSR-170 (versión 1) y como JSR-283 (versión 2). 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 JCR surgió de las necesidades de los sistemas de gestión de contenidos, 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 control de versiones de datos; actas; observación de cambios en los datos; e importar o exportar datos a XML de forma estándar.
Estructura de datos
Los datos en un JCR constan de 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. Opcionalmente, los nodos pueden tener uno o más tipos asociados que dictan los tipos de propiedades, el número y tipo de nodos secundarios y ciertas características de comportamiento de los nodos. Los nodos pueden apuntar a otros nodos mediante una propiedad de tipo de referencia especial. De esta manera, los nodos en un JCR ofrecen tanto integridad referencial como 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 universalmente único. 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 desaprueba el lenguaje de consulta XPath definido en JSR 170. La implementación de referencia de Apache Jackrabbit de JCR también admite la integración del motor de búsqueda Apache Lucene para realizar búsquedas de texto completo de datos en el repositorio.
Implementaciones disponibles
Ambos JSR están dirigidos por David Nüscheler de Adobe Systems (antes de Day Software). Day tenía una implementación JCR comercial llamada Content Repository Extreme (CRX) y participó en el Apache Jackrabbit JCR de código abierto, que tuvo su versión 2.0 en enero de 2010. ModeShape es otra implementación 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 sobre la API JCR, que utilizan Jackrabbit como repositorio de forma predeterminada, pero pueden conectarse a 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 documentación y soporte comercial de pago. Muchos otros proveedores comerciales están trabajando en productos y compatibilidad con JCR. Alfresco es un sistema de gestión de contenidos de código abierto que proporciona una API JCR en su repositorio. GX lanzó la nueva versión comunitaria de su plataforma web de gestión de contenido empresarial (ECM) basada de forma nativa en Apache Jackrabbit y JSR.
TYPO3 ha iniciado adaptaciones de PHP, traduciendo la API de Java a PHP. Las interfaces PHPCR también son implementadas por Jackalope, una interfaz PHP que se comunica con el backend de Jackrabbit a través de la interfaz WebDAV, y Midgard, un repositorio de contenido en varios idiomas.
Contenido relacionado
Tabla de métodos virtuales
ALGOL Y
Hacer bucle while
Datosflex
Filosofía de la inteligencia artificial