Supported Java Features
This is the manual for older MicroStream versions (Version < 5.0).
The new documentation (Version >= 5.0) is located at:
Feature | Supported | Note |
Classes | ||
Classes without default constructor | ||
Abstract classes / Interfaces | Perfectly handleable as types, but there can never be instances to be persisted in the first place. | |
Inner classes | ||
Anonymous inner classes | ||
Primitives | ||
References | ||
Final fields | ||
Static fields | Not supported since they are outside of an entity graph / a database, i.e. potentially shared by multiple graphs. | |
Constant primitives | No sense in persisting those. These are just plain trivial values outside of an entity graph / a database. | |
Constant instances | Must be registered for loading to update them instead of creating independent new instances. | |
Primitive arrays | ||
Object arrays | ||
Multi dimensional arrays | Technically the same as object arrays as every array is an object itself. | |
JDK value types (String, Number types, Date, File, Locale, Optional, ...) | Optimized handling via custom TypeHandlers. | |
Collections | Via generic handling logic (List, Set, Map, etc.). Optimal handling required tailored TypeHandler (e.g. correctly handling loadFactor in java.util.HashMap) | |
Nested Collections | ||
JVM system-tied classes (Thread, ClassLoader, WeakReference, ...) | Technically handleable, but handling system-instances could cause fatal problems (e.g. start a Thread just from loading data), so it is intentionally disabled. | |
JVM external-tied classes (IO-Streams, FileChannel, ...) | Technically handleable, but external dependencies could cause fatal problems (e.g. existence of a referenced file), so it is intentionally disabled. |
Java 5
Feature | Supported | Note |
Enums | Automatically handled as constant instances to maintain referential integrity / identity. | |
Enums with mutable state | ||
Enums anonymous subclasses |
Java 8
Feature | Supported | Note |
Lambdas | Type-handleable in theory. But JVM is not able to resolve its own type definitions for lambdas. |
Java 14
Feature | Supported | Note |
Records | Records are mere syntax sugar for classes. |
Last updated