This proposal has been approved and the Jakarta NoSQL project has been created.
Visit the project page for the latest information and development.

Jakarta NoSQL

Thursday, September 20, 2018 - 17:34 by Otavio Santana
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the community. Please login and add your feedback in the comments section.
Project
Parent Project
Working Group
Proposal State
Created
Background

The goal of this specification is to ease integration between Java® Applications and NoSQL databases, with a common API to work with different types and vendors of NoSQL databases.

To achieve this, the spec has two layers:

  • Communication API: Exactly what JDBC is to SQL. This API has four specializations, one for each type of database (column, document, key-value and graph). The specializations are independent of each other, optional from the point of the database vendor and have their specific TCKs.

  • Mapping API: What developers should use to integrate into a database. This layer is based on Annotations and CDI and preserves integration with other Jakarta EE technologies like Bean Validation, etc.  



The guiding ideas for the project are:

  • Convention over configuration

  • Support for asynchronous queries

  • Support for asynchronous write operations

  • Easy to implement API, so that NoSQL vendors can comply with it and test by themselves.

  • The API's focus is on simplicity and ease of use. Developers should only have to know a minimal set of artifacts to work with the solution. The API is built on latest Java 8 features and therefore fit perfectly with the functional features of Java 8.

Scope

Jakarta NoSQL defines an API for common behavior to facilitate integration between Java® applications and NoSQL databases.

The Jakarta NoSQL project consists of the following modules:

  • Column Communication API and TCK

  • Document Communication API and TCK

  • Key-Value Communication API and TCK

  • Graph Communication API and TCK

  • Mapping API and TCK

Description

Create the specification in Jakarta EE to help Jakarta EE developers create enterprise-grade applications using Java® and NoSQL technologies. It helps them create scalable applications while maintaining low coupling with the underlying NoSQL technology.

The development of the new API will use Eclipse JNoSQL as a starting point (first compatible implementation and inspiration for the APIs and TCKs):

 

Why Here?

This API has a huge value to the Jakarta EE developers as it will make easier to develop a modern and scalable application using NoSQL technology.

Project Scheduling

The main idea is a community-driven and releases every three months.

 

  • Milestone 1 - Graph Communication API and TCK

  • Milestone 2 - Column Communication API and TCK

  • Milestone 3 - Document Communication API and TCK

  • Milestone 4 - Key-Value Communication API and TCK

  • Milestone 5 - Mapping API and TCK

Project Leads
Committers
Daniel Cunha (This committer does not have an Eclipse Account)
Ivan Junckes Filho (This committer does not have an Eclipse Account)
Interested Parties

Community

  • SouJava

  • SouJava Campinas

  • SouJava Rio

  • JavaBahia

  • GuJavaSC

  • London Java Community

 

Individual

  • Gerald Sangudi

  • Prasad Varakur

  • Johan Larson

  • Luca Garulli

  • Werner Keil

  • Christoph Engelbert

  • Daniel Cunha

  • Dor Laor

  • Ondrej Mihályi

  • Jesse Gallagher

Company

  • CouchBase

  • Scylla DB

  • Orientdb

  • Jelastic

  • V2COM

Initial Contribution

The initial goals of the Jakarta NoSQL project are to:

 

  • Receive code donations from https://github.com/eclipse?q=jnosql

  • Setup the governance structure of the project

  • Ensure all donated code is appropriately licensed under the Apache License

  • Define the project modules and structure (API, implementation modules (initially for NoSQL databases, adapter modules, examples)

  • Provide examples demonstrating feature usage

  • Attract contributions from the greater Java community

 

Documentation

Links to some other existing solutions:

 

Databases

Source Repository Type