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 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
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
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
- 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/
-
Eclipselink: http://www.eclipse.org/eclipselink/
-
Jdbc-json https://github.com/jdbc-json/jdbc-cb
-
Tinkerpop http://tinkerpop.apache.org/
Databases
- 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/
- Vaticle https://vaticle.com/
- 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/
- Log in to post comments