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

Eclipse Store

Tuesday, February 28, 2023 - 20:14 by Markus Kett
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

Ten years ago, we started developing a Java object graph persistence engine called MicroStream. It enables to store any Java object graph of any size and complexity persistently into any data storage solution. In 2021 we released it as open source under EPL. It's integrated with Helidon and Micronaut. Now, we want to donate the code to the Eclipse Foundation and continue development as an Eclipse project to make the project even more attractive for users, contributors, and other framework vendors.

Scope

Eclipse Store provides a Java micro persistence layer built for cloud-native microservices and serverless functions written in Java to store native Java object graphs persistently on disk, and vice versa loading and restoring it in memory on-demand. The scope is persisting and restoring plain Java objects, serialization, transaction journaling, IO operations, storage housekeeping and garbage collection, class-versioning, backups, security, and data storage connectors. Out of scope are traditional DBMS features such as user management, concurrency handling, query language, server mode, replication, clustering, and infrastructure features.

Description

Eclipse Store provides a Java micro persistence layer built for cloud-native microservices and serverless functions written in Java. Eclipse Store is based on the system prevalence architectural pattern. It enables seamlessly storing any Java objects of any size and complexity transaction-save into cloud blob stores such as AWS S3 or any other binary data storage. Therefore, Eclipse Store provides connectors to various relational and NoSQL database systems. ACID transactions are journaled and changes in the system state are regularly saved to disk (deltas only). All transactions are stored in a highly optimized serialization byte format appended to the storage. To reduce startup time and run also with a small RAM capacity, Eclipse Store provides lazy loading. At the system start, only object IDs must be loaded into memory. Related object references (subgraphs) are only loaded and restored in memory on demand by calling common get methods. The Java Streams API is used for searching and filtering data in memory. Eclipse Store provides object versioning, dynamic class loading, and serialization control for handling class changes, ensuring that applications can continue to function even if classes are modified. Eclipse Store runs also on Android mobile, edge, and embedded devices.

Why Here?

Eclipse Store seamlessly connects Java with the cloud by storing data objects (POJOs) directly into cloud-native BLOB storages such as AWS S3. Using traditional database cloud services (DBaaS) is not required anymore. With Eclipse Store, users will save up to 99% of data storage costs. At the same time, system complexity is much lower, and implementation, testing, and maintenance are much easier than using ORM frameworks and RDBMS. Users become more productive and save time and development effort. Store runs on desktops, on the server, in containers, as GraalVM native image, as well as on Android mobile, edge, and embedded devices. Thus, Eclipse Store has the potential to deliver value to the Eclipse ecosystem. Our benefit should be better visibility, traction, and acceptance.

Future Work

The upcoming new version comes with great new features users are already waiting for a long time such as lazy collections that enable loading even very big collections into the RAM without running out of memory. We are planning to continue with the activities we have been doing since MicroStream was founded in 2019, but now promoting the Eclipse Store project. In 2023 we are talking and exhibiting at various Java conferences such as Devnexus, Geecon Krakow, Geecon Prague, JCON Slovenia, JCON EUROPE, JCON ONLINE, WeAreDevelopers World Congress, JavaOne, EclipseCon, and expectingly even more.

 

 

Project Scheduling

As soon as the paperwork is done, we would like to transfer the code immediately. The upcoming new major version 8 is ready for final release and should be released as the first Eclipse Store release in March 2023.

Project Leads
Interested Parties

Micronaut Foundation, Micronaut framework, Object Computing, Inc., project Helidon, Oracle, Open Liberty, IBM, Payara Ltd., Spring Boot, Quarkus, XDEV Software GmbH, Allianz SE, Fraport, Infineon, Azul, US Cold

Initial Contribution

The project already exists and is called MicroStream persistence. The code is already open source under EPL. MicroStream Software GmbH holds the copyright of the whole code. The only dependency Eclipse Store is using is the Eclipse Serializer which was so far part of the initial MicroStream open-source project. There are 8 committers so far who are MicroStream employees. MicroStream is integrated with Helidon and Micronaut. Currently, we have 5445 unique IP downloads since open-sourcing 2021. More and more companies are using it in production.

 

 

Source Repository Type