Reviews run for a minimum of one week. The outcome of the review is decided on this date. This is the last day to make comments or ask questions about this review.
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.
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
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):
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.
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
- Baeldung: https://www.baeldung.com/eclipse-jnosql
- More details about API: https://goo.gl/lUixCh
- Presentation about Eclipse JNoSQL: https://www.slideshare.net/otagonsan/eclipse-jnosql-the-definitive-solution-for-java-and-nosql-database
- Presentation Java One 2017: https://www.youtube.com/watch?v=W5Z8c37m-VM
- Site: http://www.jnosql.org/
- Publications: https://wiki.eclipse.org/JNoSQL/Publications
Links to some other existing solutions:
Spring Data http://projects.spring.io/spring-data/
Hibernate OGM: http://hibernate.org/ogm/
- ArangoDB https://www.arangodb.com/
- Blazegraph https://www.blazegraph.com/
- Cassandra http://cassandra.apache.org/
- CosmosDB https://docs.microsoft.com/en-us/azure/cosmos-db/introduction
- Couchbase https://www.couchbase.com/
- Elastic Search https://www.elastic.co/
- Grakn https://grakn.ai/
- Hazelcast https://hazelcast.com/
- Hbase https://hbase.apache.org/
- Infinispan http://infinispan.org/
- JanusGraph IBM https://www.ibm.com/cloud/compose/janusgraph
- Janusgraph http://janusgraph.org/
- Linkurio https://linkurio.us/
- Keylines https://cambridge-intelligence.com/keylines/
- MongoDB https://www.mongodb.com/
- Neo4J https://neo4j.com/
- OriendDB https://orientdb.com/why-orientdb/
- RavenDB https://ravendb.net/
- Redis https://redis.io/
- Riak http://basho.com/
- Scylladb https://www.scylladb.com/
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