- up to 10 times faster 100% JDK Serialization compatible drop-in replacement (Ok, might be 99% ..). As an example: Lambda Serialization which came with 1.8 worked instantly.
- Android compatible since version >= 2.17 (use
FSTConfiguration.createAndroidConfiguration()both on server and client side. The configuration object has to be passed into FSTObjectIn/Output constructors)
- OffHeap Maps, Persistent OffHeap maps
- FSTStructs is very similar to IBM's packed objects. Difference is: You can run it with Oracle JDK today.
- optionally en/decode any Serializable object graph to JSON (incl. shared references) (since 2.29) for interop
- Apache 2.0 license since 2.17
Struct Emulation (currently not covered by tests)
note: maven.org might lag 1 day behind after releasing.
<dependency> <groupId>de.ruedigermoeller</groupId> <artifactId>fst</artifactId> <version>2.47</version> </dependency>
Older version (different package name, 1.6 compatible ..). Fixes are not backported anymore, unsupported.
<dependency> <groupId>de.ruedigermoeller</groupId> <artifactId>fst</artifactId> <version>1.63</version> </dependency>
Who uses FST ?
I am not actively tracking use, maven.org reports more than 12000 downloads from 5000 distinct IP accesses triggered by maven builds world wide per month.
- used in production in Eurex Exchange's trading back end's middleware
- JUptr.io's distributed system / NLP engine uses FST
- Popular Apache Wicket supplementals use FST to speed up Wicket
how to build
- master contains dev branch/trunk.
- 1.x contains old version
- The maven build should work out of the box and reproduces the artifact hosted on maven.org
- To use the gradle build, you need to configure the proxy server in settings.properties (or just set empty if you do not sit behind a proxy).
Note that instrumentation done for fst-structs works only if debug info is turned on during compile. Reason is that generating methods at runtime with javassist fails (probably a javassist bug ..). This does not affect the serialization implementation.
JDK 1.6 Build 1.x build since v1.62 are still jdk 6 compatible