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

JNoSQL

Thursday, November 10, 2016 - 10:06 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
Proposal State
Created
Background

The JNoSQL is a several tools to make easy an integration between the Java Application with the NoSQL. To solve this problem the project has two layers:

 

  • Communication API: An API just to communicate with the database, exactly what JDBC does to SQL. This API has four specializations, one for each kind of database.

 

  • Abstraction API: An API to do integration and do the best integration with the Java developer. That is annotation drive and has integration with other technologies like Bean Validation, etc. To solve it this layer is a CDI based.

 

This way, the NoSQL vendors just need to implement the communicate API without warning about the another API.

 

So, the project has two core project that is Diana and Artemis project.

 

Scope
  • A simple API to support Column NoSQL Database

  • A simple API to support Key-value NoSQL Database

  • A simple API to support Graph NoSQL Database

  • A simple API to support Document Database

  • Convention over configuration

  • Support for asynchronous queries

  • Support for asynchronous writes operations

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

The JNoSQL is a several tools to make easy an integration between the Java Application with the NoSQL. To solve this problem the project have two layers:

 

  • Communication API: An API just to communicate with the database, exactly what JDBC does to SQL. This API has four specializations, one for each kind of database.

 

  • Abstraction API: An API to do integration and do the best integration with the Java developer. That be annotation drive and have integration with other technologies like Bean Validation, etc. To solve it this layer is a CDI based.

 

This way, the NoSQL vendors just need to implement the communicate API without warning about the another API.

 

So, the project has two core project that is Diana, communication layer, and Artemis, the abstraction layer, project.

 

The basic building blocks hereby are:

 

  • A simple API to support Column NoSQL Database

  • A simple API to support Key-value NoSQL Database

  • A simple API to support Graph NoSQL Database

  • A simple API to support Document Database

  • Convention over configuration

  • Support for asynchronous queries

  • Support for asynchronous writes operations

  • An easy API to implement, 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.

 

Additionally, it will provide

 

  • A Java SE based implementation with minimal features and dependencies.

  • A Java EE extension module for integration with Java EE

  • Once Java ME supports Lambdas, default methods, method references and functional interfaces, an implementation targeting Java ME should be provided as well.

  • Extension modules for different features.

Why Here?

Community

 

The project initiative already is significantly supported by JUGs such as SouJava, JavaBahia, LJC, iJUG, Berlin Brandenburg JUG, JUG Zurich, as well as companies such as ToolsCloud, GlobalCode, Jelastic. It is expected that support will raise very quickly so the library will evolve and be widely used as well.

 

So, this is the place community to community.

Future Work
  • Adds more support to database
  • Adds support to universal query
  • Adds support to CDI framework
  • Adds support to diversity on NoSQL database
Project Scheduling

The main idea is a community driven and release a new version each six months.

Project Leads
Committers
Luca Garulli (This committer does not have an Eclipse Account)
Oliver B. Fischer (This committer does not have an Eclipse Account)
Interested Parties

We are already in contact with several companies from Europe and US, that are heavily interested in contributing to this initiative.

LJC (London Java Community), SouJava,JUG Chennai will do Hackdays and provide feedback.

JUG Berlin Brandenburg is one of the bigger JUGs in Germany and would probably also actively contribute to this project.

JUG Zurich organizes regular (monthly) Hackergarten and will as well contribute to this project.

 

Initial Contribution

The initial goals of the JNoSQL project are to:

 

  • Receive code donations from https://github.com/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

  • Setup collaboration with other projects and the JCP to bring in ideas and enhancement proposals, e.g. to Java EE 9

 

Documentation

Links to some other existing solutions:

 

Source Repository Type