Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's the Difference Between Apache Jackrabbit and Jackrabbit Oak?

I'm sorry if this sounds stupid, but what's the difference between Jackrabbit and Oak? I'm looking into JCR170, specifically how to migrate content between two jackrabbit installations, and I've come across both JackRabbit and Oak.

The Apache Jackrabbit™ content repository is a fully conforming implementation of the Content Repository for Java Technology API (JCR, specified in JSR 170 and JSR 283).

A content repository is a hierarchical content store with support for structured and unstructured content, full text search, versioning, transactions, observation, and more.

Jackrabbit Oak is a complementary implementation of the JCR specification. It is an effort to implement a scalable and performant hierarchical content repository for use as the foundation of modern world-class web sites and other demanding content applications. See the Jackrabbit Oak website for more information.

Apache Jackrabbit is a project of the Apache Software Foundation

http://jackrabbit.apache.org/jcr/index.html

Their own home page says that Jackrabbit is a content repository implementing JCR and that Oak is a complementary implementation of JCR. Why is there two implementations of JCR by the same project?

like image 691
Goldentoa11 Avatar asked Mar 29 '18 13:03

Goldentoa11


People also ask

What is Apache Jackrabbit oak in AEM?

Apache Jackrabbit Oak is an effort to implement a scalable and performant hierarchical content repository for use as the foundation of modern world-class web sites and other demanding content applications. It is the successor to Jackrabbit 2 and is used by AEM 6 as the default backend for its content repository, CRX.

How does an oak repository differ from Jackrabbit 2?

Touched properties: Jackrabbit 2 used to generate a PROPERTY_CHANGED event when touching a property (i.e. setting a property to its current value). Oak keeps closer to the specification and omits such events. More generally removing a subtree and replacing it with the same subtree will not generate any event.

What is Apache Jackrabbit used for?

What is Apache Jackrabbit? Apache Jackrabbit is a fully featured content repository that implements the entire JCR API. The Jackrabbit project was started when Day Software, the JSR-170 specification lead, licensed their initial implementation of the JCR reference implementation.

How do you start a jackrabbit?

To get started with Jackrabbit you should first become familiar with the JCR API. Download the JSR 170 specification, browse the API documentation, check our introduction to JCR levels, or read some of the JCR articles to understand the content repository model that Jackrabbit implements.


1 Answers

As awd mentioned in the comment, Oak is just the latest version of Jackrabbit. It is not just an update, but rather a new implementation of the same JSR170. So the API does not change, but the underlying inner workings are a bit different. You can find a lot in the documentation as Julian mentions. Some of the major changes are:

  • Session handling: each session gets a snapshot of the repository when it was created to prevent concurrent changes on the repo: http://jackrabbit.apache.org/oak/docs/architecture/transactional-model.html
  • MicroKernels: with which you can define how the repository is stored. Currently as before with tar files called tarMK or the NoSQL DB MongoDB with the mongoMK.

Here is an overview of the changes: http://jackrabbit.apache.org/oak/docs/differences.html

And a short slideshow: https://www.slideshare.net/jukka/oak-the-architecture-of-apache-jackrabbit-3

like image 82
Thomas Avatar answered Sep 28 '22 03:09

Thomas