The First Release of EclipseStore

We are very proud that we can announce the first release of the EclipseStore project.

The current MicroStream codebase will be completely transferred to the EclipseStore project. And after we have set up the projects under the wings of the Eclipse Foundation in the last months, we are now ready to push the first version to Maven Central.

Two Eclipse projects

The development of MicroStream started already 10 years ago. In 2019 we launched the very first official MicroStream release version 1. In August 2021, we published MicroStream version 5 as open-source code under the EPL license. At the beginning of 2023, we started the procedure to host the codebase at Eclipse Foundation. It was the logical step to make the codebase owned by an entire community and not just one company. It makes it easier for everyone to contribute to it and move it further.

Together with this move, a restructuring into 2 different projects was introduced. At its core, MicroStream contains a custom Serializer which is very secure since it works with a white list of class names and there is no code execution, not even the code within the constructor. The code for this serialise functionality and dependent classes that are the foundation of the MicroStream functionality can be found in the Eclipse Serializer project (GitHub repository).

The code related to the StorageManager functionality, including the support for the different storage targets, is part of another Eclipse project, EclipseStore. It makes use of the code within the Eclipse Serializer project, but most of the time, you are not directly confronted with it when working with the StorageManager. The EclipseStore project can be found at (GitHub repository)

The integrations that are currently within the MicroStream code base like the support for Spring Boot, Quarkus, and Jakarta EE, are not part of any Eclipse project. However, they will stay open source and the code will be hosted in a new MicroStream repository after they have been refactored to make use of the EclipseStore and Serializer projects.

The MicroStream Cluster solution provided as SaaS and On-Prem stay closed source and the latter will be migrated to make use of the EclipseStore project later on. You can find more information at the EclipseStore website.

Q & A

Let’s answer some more questions you might have about this EclipseStore release.

Q: What is the version number and artifact name?

A: If you want to make use of the StorageManager, you can add the following dependency to your project

        <dependency>
            <groupId>org.eclipse.store</groupId>
            <artifactId>storage-embedded</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>

And for data storage, these are

        <dependency>
            <groupId>org.eclipse.store</groupId>
            <artifactId>afs-sql</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>

for the SQL one, and for the AWS S3 you can use

        <dependency>
            <groupId>org.eclipse.store</groupId>
            <artifactId>afs-aws-s3</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>

All the storage targets of MicroStream are now available within EclipseStore.

 

The artifacts are available in the snapshot repository of Maven Central. You might need to add the following repository definition:

    <repository>
        <id>ossrh</id>
        <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>

 

Q: Is all functionality of MicroStream 8.1 included in EclipseStore 1.0 M1?

A: No, the code preparation for the Eclipse projects started at the end of 2022 and thus is based on the MicroStream 7.1 release. So the minimal required Java version for EclipseStore 1.0 M1 is also JDK8, but it can be used with JDK 17.

During the summer months, we will port all the changes that were done for versions 8.0 and 8.1 to the EclipseStore and Eclipse Serializer projects. So after the summer, you can expect another release that will be functionally wise equivalent to MicroStream 8.1

Q: How can I migrate a MicroStream project to an Eclipse Store project?

A: When you change the project dependencies and make use of the new package name, your project code is ready. The Persistence Type Dictionary of your storage, however, still references the MicroStream classes which are no longer available in your updated project. So the start of the StorageManager will result in a ClassNotFoundException. See also the next question.

Here are some changed package names that help you convert the code in your project.

MicroStream name Eclipse name
one.microstream.storage org.eclipse.storage
one.microstream.collections org.eclipse.serializer.collections
one.microstream.reference org.eclipse.serializer.reference
one.microstream.persistence org.eclipse.serializer.persistence
one.microstream.hashing org.eclipse.serializer.hashing

 

Q: So we cannot use a data store from MicroStream with EclipseStore?

A: Not without changing the Persistence Type Dictionary file contents, no. We are working on a utility that converts this file so that data storage that was created by MicroStream can be used by an EclipseStore project. We have already a prototype of this tool working but we need to implement more specific use cases and have a lot of testing of this tool so that you can be sure that you do not lose the data within the storage nor that the data is corrupted.

Q: Why are there 2 projects created in this migration to Eclipse Foundation.

A: As mentioned, at its core, there is the serialiser that converts Java Objects to a binary format and vice versa. The StorageManager brings additional features on top of this like the data storage and data model evolution functionality to name only two. So it sounded logical to split up these two functionalities and promote the Serializer as a standalone project. When only interested in the StorageManager and its functionality, nothing really changes from the point of the developer and you still need only a single dependency which brings in all other required dependencies transitively.

Do you have another question? Let us know and if you are at JCON 2023 in Cologne, Germany, this week, you can ask anything about this EclipseStorage project to the entire MicroStream team which will be present.

 

Total
0
Shares
Leave a Reply

Your email address will not be published. Required fields are marked *

Previous Post

Two important updates in MicroStream 8.1

Next Post

MicroStream Compared to Redis

Related Posts
Secured By miniOrange