Hazelcast Jet – In-Memory Streaming and Fast Batch Processing
jet.hazelcast.org
jet.hazelcast.org
This means you can immediately save / load / stream your applications objects. Just tack on an "implements Serializable" to you class header (or "implements Externalizable" if you want to be fancy and do it yourself) and you're good to go. Plus with the native Map<?,?> interface writing code against it feels natural.
In practice this also means that you end up serializing arbitrary Java objects and get stuck in serialization/deserialization hell. Your data is stuck tied to a specific format, on a specific platform / language. It's somewhere between impractical and impossible to get it into an agnostic format usable by any other language so you're stuck in JDK land forever.
Anything that involves getting data into some other system or language requires you to also write a Java app to read (and possibly write back) your data.
Do yourself a favor and stick to something language agnostic for your data stores. You'll thank yourself many times over down the road.
I purposely didn't use the words "database" or "persisted".
My comment applies even more so when data is persisted to durable storage (i.e. disk) but was meant to apply generally to any distributed data stores.
- Apache Spark (especially Spark Streaming) - Apache Flink - Apache Storm - Apache Apex - Apache Samza - Apache Ignite (also includes other things) and now Hazelcast Jet.
The Apache organisation is about good open source governance, not avoiding internal competition.
I didn't know what java.util.stream was either, but this document made it clear: http://www.oracle.com/technetwork/articles/java/ma14-java-se...
For those who don't know Java and C#: All regular collections now offer a .stream() (and .parallelStream()) method that returns the collection as Java 8 Stream<T> instance. With the help of lambda expressions, objects of a stream can be converted/mapped, filtered, sorted, aggregated, reduced, flatmapped, etc. by chaining methods on the stream. You can also create finite or infinite streams without a collection (Like of numbers ranges, random values or anything else you can think of).
I often end up writing complex stream method chains just to break them up in the end, thinking that they are too difficult to understand for others.
It provides fast distributed computation as an infrastructure component - Jet is fully embeddable in your application.
Disclaimer: I am one of the engineers who worked on this.