FST: fast java serialization drop in-replacement

Overview

fast-serialization

  • 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.createAndroidDefaultConfiguration() 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

Docs:

Fast JDK-compatible Serialization

Json Serialization

OffHeap + Persistent Maps

MinBin cross platform binary format

Kson: a JSon extension

mvn

note: maven.org might lag 1 day behind after releasing.

3.0.0 version (requires java 14, "--add-modules jdk.incubator.foreign" option on compiler and runtime)

<dependency>
    <groupId>de.ruedigermoeller</groupId>
    <artifactId>fst</artifactId>
    <version>3.0.1</version>
</dependency>

2.0 version (java 8)

<dependency>
    <groupId>de.ruedigermoeller</groupId>
    <artifactId>fst</artifactId>
    <version>2.56</version>
</dependency>

jdk1.6 compatible build of fst 2.x

<dependency>
    <groupId>de.ruedigermoeller</groupId>
    <artifactId>fst</artifactId>
    <version>2.48-jdk-6</version>
</dependency>

1.x 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 14000 downloads from 6000 distinct IP accesses triggered by maven builds world wide per month.

Notable also:

  • 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

alt tag

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

Comments
  • Android N: NoSuchMethodException Crash, caused by OpenJDK?

    Android N: NoSuchMethodException Crash, caused by OpenJDK?

    I'm not sure this is due to OpenJDK, but here's what I've found.

    The Android N preview now uses OpenJDK, and when running my app using FST on the emulator using the latest N preview system image, I get the following crash:

    Caused by: java.lang.NoSuchMethodException: newInstance [class java.lang.Class, long]
      at java.lang.Class.getMethod(Class.java:2016)
      at java.lang.Class.getDeclaredMethod(Class.java:1995)
      at org.objenesis.instantiator.android.Android18Instantiator.getNewInstanceMethod(Android18Instantiator.java:53)
      at org.objenesis.instantiator.android.Android18Instantiator.<init>(Android18Instantiator.java:38) 
      at org.objenesis.strategy.StdInstantiatorStrategy.newInstantiatorOf(StdInstantiatorStrategy.java:86) 
      at org.objenesis.ObjenesisBase.getInstantiatorOf(ObjenesisBase.java:91) 
      at org.nustaq.serialization.FSTObjenesisInstantiator.<init>(FSTObjenesisInstantiator.java:38) 
      at org.nustaq.serialization.FSTConfiguration$4.getInstantiator(FSTConfiguration.java:372) 
      at org.nustaq.serialization.FSTClazzInfo.<init>(FSTClazzInfo.java:129) 
      at org.nustaq.serialization.FSTClazzInfoRegistry.getCLInfo(FSTClazzInfoRegistry.java:130) 
      at org.nustaq.serialization.FSTClazzNameRegistry.addClassMapping(FSTClazzNameRegistry.java:98) 
      at org.nustaq.serialization.FSTClazzNameRegistry.registerClassNoLookup(FSTClazzNameRegistry.java:85) 
      at org.nustaq.serialization.FSTClazzNameRegistry.registerClass(FSTClazzNameRegistry.java:81) 
      at org.nustaq.serialization.FSTConfiguration.addDefaultClazzes(FSTConfiguration.java:773) 
      at org.nustaq.serialization.FSTConfiguration.initDefaultFstConfigurationInternal(FSTConfiguration.java:445) 
      at org.nustaq.serialization.FSTConfiguration.createAndroidDefaultConfiguration(FSTConfiguration.java:375) 
      at org.nustaq.serialization.FSTConfiguration.createDefaultConfiguration(FSTConfiguration.java:438) 
      at org.nustaq.serialization.FSTConfiguration.createDefaultConfiguration(FSTConfiguration.java:433) 
      at org.nustaq.serialization.FSTConfiguration.getDefaultConfiguration(FSTConfiguration.java:185) 
      at org.nustaq.serialization.FSTObjectOutput.<init>(FSTObjectOutput.java:74) 
      at ...
    
    enhancement 
    opened by Wavesonics 37
  • FSTBasicObjectSerializer subclass failing

    FSTBasicObjectSerializer subclass failing

    I have a class Called DateEncoderSerializer which extends FSTBasicObjectSerializer My intention is to set the DateTimeFormatter (Joda) on it before returning the DateEncoder object, since DateTimeFormatter doesn't implement Serializable.

    I marked the relevant DateTimeFormatter fields in my DateEncoder class as "transient", which allows the DateEncoder to be successfully serialized/deserialized when no Serializer is registered with the FSTConfiguration object. However, of course my field is uninitialized because I have to set it to be "transient" to avoid exceptions.

    When I register the Serializer:

    fastSerialConfig.registerSerializer(DateEncoder.class, new DateEncoderSerializer(), false);
    

    I get the following stack trace?

    I've tried multiple variations of out.writeObject(...), out.defaultWriteObject(...) in combination with the associated in.readXXX() methods and I keep getting Exceptions?

    Like I said, without the registration, the DateEncoder object serializes/deserializes fine but I need to be able to set the DateTimeFormatter on it before it is usable??

    Any ideas why the out/in write/read methods are failing?

    java.io.IOException: java.lang.NullPointerException at org.nustaq.serialization.FSTObjectInput.readObject(FSTObjectInput.java:243) at org.nustaq.serialization.FSTConfiguration.asObject(FSTConfiguration.java:1122) at org.numenta.nupic.network.NetworkSerializerImpl.deSerialize(NetworkSerializerImpl.java:142) at org.numenta.nupic.network.JavaFstNetworkSerializationTest.testHTMSensor(JavaFstNetworkSerializationTest.java:498) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) at org.junit.runners.ParentRunner.run(ParentRunner.java:309) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) Caused by: java.lang.NullPointerException at org.nustaq.serialization.FSTObjectInput.readObjectWithHeader(FSTObjectInput.java:353) at org.nustaq.serialization.FSTObjectInput.readObjectFields(FSTObjectInput.java:708) at org.nustaq.serialization.FSTObjectInput.instantiateAndReadNoSer(FSTObjectInput.java:562) at org.nustaq.serialization.FSTObjectInput.readObjectWithHeader(FSTObjectInput.java:370) at org.nustaq.serialization.FSTObjectInput.readObjectFields(FSTObjectInput.java:708) at org.nustaq.serialization.FSTObjectInput.instantiateAndReadNoSer(FSTObjectInput.java:562) at org.nustaq.serialization.FSTObjectInput.readObjectWithHeader(FSTObjectInput.java:370) at org.nustaq.serialization.FSTObjectInput.readObjectInternal(FSTObjectInput.java:327) at org.nustaq.serialization.FSTObjectInput.readObject(FSTObjectInput.java:307) at org.nustaq.serialization.FSTObjectInput.readObject(FSTObjectInput.java:241) ... 26 more

    question 
    opened by cogmission 35
  • Failed correctly deserialize Collections.unmodifiableMap(LinkedHashMap)

    Failed correctly deserialize Collections.unmodifiableMap(LinkedHashMap)

    Map<String, Integer> m1, m2;
    
    m1 = new LinkedHashMap<String, Integer>();
    m1.put("a", 1);
    m1.put("BB", 1);
    m1.put("ccc", 1);
    m1 = Collections.unmodifiableMap(m1);
    
    System.out.println(m1.keySet());
    
    FSTConfiguration fstConf = FSTConfiguration.createDefaultConfiguration();
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    fstConf.encodeToStream(out, m1);
    m2 = (Map<String, Integer>) fstConf.decodeFromStream(new ByteArrayInputStream(out.toByteArray()));
    
    System.out.println(m2.keySet());
    

    Output is:

    [a, BB, ccc]
    [BB, a, ccc]
    

    FSTVersion: 2.45

    Not Reproducable 
    opened by vivimice 24
  • problem deserializing self-referential Array

    problem deserializing self-referential Array

    class FOO implements Serializable {
        FOO()
        {
        }
        FOO[] foos;
    }
    
    FOO[] test = new FOO[1];
    test[0] = new FOO();
    test[0].foos = test;
    

    test will serialize, but it will fail to deserialize: deserialize failed: java.io.IOException: java.io.IOException: unable to ressolve handle 0 <foos of FOO> 111 : 0 I'm suspicious of FSTObjectInput.instantiateArray it calls objects.registerObjectForRead only AFTER the array is fully read

    FSTObjectInput.readArrayNoHeader also calls objects.registerObjectForRead but with a pos that has advanced slightly, so it's not the right handle for the array.

    In the previous bug I reported with FSTIdentity2IdMap, my real data leads to an intermittent instance of this deserialize failure, but only after FSTIdentity2IdMap.resize fails.

    In reflecting on the other issue, while it's wrong not to find an already written object (because it got lost by FSTIdentity2IdMap.resize), I still wasn't sure why the resulting data wouldn't deserialize. It seems like it should deserialize, but have improper extra copies of objects.

    That's what led me to this issue.

    However, the structure of my data, in the cases that work (most of the time, when the hash function get luckier), I don't understand why the deserializer works, as the same self-references exist.

    I need to be sure that my data serializes and deserializes correctly 100% of the time. I feel pretty certain FSTIdentity2IdMap.resize is broken (see my other post), and it seems like there's at least one more issue with Arrays, but I've only got it 80% understood at this point.

    JSon only 
    opened by bradedelman 24
  • intermittent corrupt output from FSTObjectOutput

    intermittent corrupt output from FSTObjectOutput

    I'm seeing very intermittent issues with FSTObjectOutput (when iterating over serializing 100's of objects). I kept thinking: shouldn't it be completely deterministic? In the course of trying to debug it, I stumbled upon the use of SoftReference in FSTConfiguration. So then it occurred to me, oh, I wonder if the intermittent nature stems from the behavior of the Garbage Collector?

    So, I experimented with 2 things:

    1. putting System.gc() in the loop. this makes it a lot slower, but failures still occurred intermittently. of course, this call isn't guaranteed to actually do anything.
    2. removing the use of SoftReference in FSTConfiguration and just holding references to the Objects directly. In this configuration, everything appears to be stable! Promising!

    I noticed that you had this comment: /** * reuse heavy weight objects. If a FSTStream is closed, objects are returned and can be reused by new stream instances. * the objects are held in soft references, so there should be no memory issues. FIXME: point of contention ! * @param cached */

    Which suggests (perhaps) some uncertainty about the use of SoftReference?

    I don't know your code well enough to decide whether it's safe for me to use my modification (this is a utility that runs and exit, so I'm not concerned about leaking memory, but I am very concerned about reliability),

    Have you seen problems with this? My test case can't be shared directly, but I've spent enough time on this problem, that I could work towards developing a standalone example. But before I spent more time on it, I thought it was worth asking you about it.

    Thanks, Brad

    opened by bradedelman 18
  • NullPointerException on app restart

    NullPointerException on app restart

    I use fst for memcached, but application restart throw error

    Exception in thread "pool-3-thread-1" ameba.exception.AmebaException: java.io.IOException: java.lang.NullPointerException
        at ameba.cache.util.Serializations.asObject(Serializations.java:57)
        at ameba.cache.util.Serializations.asObject(Serializations.java:70)
        at ameba.cache.Cache.get(Cache.java:365)
        at com.xxxx.fiaame.resources.basedata.SecurityService.findStockSecurityList(SecurityService.java:27)
        at com.xxxx.fiaame.resources.common.CacheService.refreshStockList(CacheService.java:129)
        at com.xxxx.fiaame.resources.common.CacheService.doCache(CacheService.java:73)
        at com.xxxx.fiaame.resources.common.CacheFeature$1.run(CacheFeature.java:28)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
    Caused by: java.io.IOException: java.lang.NullPointerException
        at org.nustaq.serialization.FSTObjectInput.readObject(FSTObjectInput.java:241)
        at ameba.cache.util.Serializations.asObject(Serializations.java:55)
        ... 9 more
    Caused by: java.lang.NullPointerException
        at org.nustaq.serialization.FSTObjectInput.readObjectWithHeader(FSTObjectInput.java:350)
        at org.nustaq.serialization.FSTObjectInput.readObjectFields(FSTObjectInput.java:683)
        at org.nustaq.serialization.FSTObjectInput.instantiateAndReadNoSer(FSTObjectInput.java:537)
        at org.nustaq.serialization.FSTObjectInput.readObjectWithHeader(FSTObjectInput.java:363)
        at org.nustaq.serialization.FSTObjectInput.readObjectInternal(FSTObjectInput.java:325)
        at org.nustaq.serialization.serializers.FSTArrayListSerializer.instantiate(FSTArrayListSerializer.java:63)
        at org.nustaq.serialization.FSTObjectInput.instantiateAndReadWithSer(FSTObjectInput.java:481)
        at org.nustaq.serialization.FSTObjectInput.readObjectWithHeader(FSTObjectInput.java:359)
        at org.nustaq.serialization.FSTObjectInput.readObjectFields(FSTObjectInput.java:683)
        at org.nustaq.serialization.FSTObjectInput.instantiateAndReadNoSer(FSTObjectInput.java:537)
        at org.nustaq.serialization.FSTObjectInput.readObjectWithHeader(FSTObjectInput.java:363)
        at org.nustaq.serialization.FSTObjectInput.readObjectInternal(FSTObjectInput.java:325)
        at org.nustaq.serialization.FSTObjectInput.readObject(FSTObjectInput.java:305)
        at org.nustaq.serialization.FSTObjectInput.readObject(FSTObjectInput.java:239)
        ... 10 more
    
    bug 
    opened by icode 18
  • RuntimeException when serializing nested class

    RuntimeException when serializing nested class

    Hello,

    I am getting an error when I serialize a private nested class, because its parent (the one where the inner class is defined in) is not serializable. I was not expecting that the parent class would also be serialized, this seems a bit odd ... and possible not intended? Moving the particular class to its own type resolved the issue, but we might have more cases like this yet to be detected.

    This is on version 1.55 (JRE 6 compatible version).

    Please advise on the best way to proceed.

    thanks!

    JDK-BUG 
    opened by jswaelens 16
  • Deserialization of Non-Serializable object not working

    Deserialization of Non-Serializable object not working

    Hi, I have issue with your library. Unfortunately, I can not post here any source code to be more specific. It seems, when you deserialize my object which is not marked as Serializable, you read incorrect class name from stream which contains also data which are no more part of class name.

    During my investigation I find out that in FSTStreamDecoder.readStringUTF() you are using readFInt() which returns incorrect value. In general, this can be also problem of serialization process, who knows. For more information please contact me at: stehlik.michal(at)gmail.com.

    enhancement 
    opened by Elgeor 15
  • [Android] sun.misc.Unsafe not fully supported

    [Android] sun.misc.Unsafe not fully supported

    Although stated as Android compatible, I ran into an exception today:

    java.lang.RuntimeException: java.io.IOException: java.lang.RuntimeException: java.lang.NoSuchMethodError: sun.misc.Unsafe.putBoolean
                at org.nustaq.serialization.util.FSTUtil.rethrow(FSTUtil.java:122) ~[na:0.0]
                at org.nustaq.serialization.FSTConfiguration.asObject(FSTConfiguration.java:875) ~[na:0.0]
                at org.hive2hive.core.security.FSTSerializer.deserialize(FSTSerializer.java:59) ~[na:0.0]
                at org.hive2hive.core.security.H2HDefaultEncryption.decryptAES(H2HDefaultEncryption.java:43) ~[na:0.0]
                at org.hive2hive.core.network.data.vdht.EncryptedVersionManager.get(EncryptedVersionManager.java:178) ~[na:0.0]
                at org.hive2hive.core.network.data.UserProfileManager$QueueWorker.run(UserProfileManager.java:203) ~[na:0.0]
                at java.lang.Thread.run(Thread.java:841) ~[na:0.0]
         Caused by: java.io.IOException: java.lang.RuntimeException: java.lang.NoSuchMethodError: sun.misc.Unsafe.putBoolean
                at org.nustaq.serialization.FSTObjectInput.readObject(FSTObjectInput.java:240) ~[na:0.0]
                at org.nustaq.serialization.FSTConfiguration.asObject(FSTConfiguration.java:873) ~[na:0.0]
        ... 5 common frames omitted
        Caused by: java.lang.RuntimeException: java.lang.NoSuchMethodError: sun.misc.Unsafe.putBoolean
                at org.nustaq.serialization.util.FSTUtil.rethrow(FSTUtil.java:122) ~[na:0.0]
                at org.nustaq.serialization.FSTObjectInput.readObjectInternal(FSTObjectInput.java:327) ~[na:0.0]
                at org.nustaq.serialization.FSTObjectInput.readObject(FSTObjectInput.java:304) ~[na:0.0]
                at org.nustaq.serialization.FSTObjectInput.readObject(FSTObjectInput.java:238) ~[na:0.0]
        ... 6 common frames omitted
        Caused by: java.lang.NoSuchMethodError: sun.misc.Unsafe.putBoolean
                at org.nustaq.serialization.FSTClazzInfo$FSTFieldInfo.setBooleanValue(FSTClazzInfo.java:858) ~[na:0.0]
                at org.nustaq.serialization.FSTObjectInput.readObjectFields(FSTObjectInput.java:634) ~[na:0.0]
                at org.nustaq.serialization.FSTObjectInput.instantiateAndReadNoSer(FSTObjectInput.java:515) ~[na:0.0]
                at org.nustaq.serialization.FSTObjectInput.readObjectWithHeader(FSTObjectInput.java:356) ~[na:0.0]
                at org.nustaq.serialization.FSTObjectInput.readObjectFields(FSTObjectInput.java:657) ~[na:0.0]
                at org.nustaq.serialization.FSTObjectInput.instantiateAndReadNoSer(FSTObjectInput.java:515) ~[na:0.0]
                at org.nustaq.serialization.FSTObjectInput.readObjectWithHeader(FSTObjectInput.java:356) ~[na:0.0]
                at org.nustaq.serialization.FSTObjectInput.readObjectInternal(FSTObjectInput.java:323) ~[na:0.0]
        ... 8 common frames omitted
    

    Unfortunately, the Unsafe implementation of Android is incomplete and not all methods are available.

    I tested with FST v.2.21 and Android 4.4.4. For the compilation, Android Studio with Java 7u71 is used.

    opened by nicoruti 14
  • Trying to ignore some fields when serializing/deserializing an object graph

    Trying to ignore some fields when serializing/deserializing an object graph

    Hi,

    I'm trying to clone (deep copy) a complete object graph fetched from DB using Hibernate. The thing is that each entity should be considered as a new one ('transient' in Hibernate lingo). Therefore I had the plan to set each entity's ID to 'null' and it's version property to zero.

    My setup is currently like this:

    first the global config: image

    Some 'hook' to ensure that we're working with a 'real' object instead of a Hibernate proxy: image

    Set a callback to erase each ID and version property for each entity that contains a @Conditional annotation: image

    The 'ProxySafeObjectOutput' is working fine; However, I'm experiencing issues with the callback that is invoked upon deserializing the object graph. Almost each entity in the graph contains a reference to an other one; it also contains lot of cyclic references where each reference is annotated with '@Conditional'. I'm constantly having 'NullpointerException's upon deserialing; I'm sure that it's related to the '@Conditional' annotation because if I remove it everything works (besides resetting Id and version fields).

    Is there an other way (some hook perhaps) that I can use to check if an entity field should be skipped?

    I'm invoking the deep clone as follows: image

    Any ideas?

    opened by Bram80 13
  • Bouncycastle RSA Keypair

    Bouncycastle RSA Keypair

    First of all, thanks for this great serializer! I'm using it for every project I find a reason for because it is one of the best and most convenient one.

    Today, I updated to the newest version (2.19) and also switched to the latest BouncyCastle version (bcprov-jdk15on:1.51). Serializing and deserializing a keypair generated with bouncy castle provider seems to run into an error. For your convenience, I created a Github Gist here.

    Do I need to use a custom serializer to prevent this error (i.e. serializing keypairs manually)? Thanks for your help in advance!

    opened by nicoruti 13
Releases(3.0.0)
Owner
moru0011
no
moru0011
A Java library for serializing objects as PHP serialization format.

Java PHP Serializer Latest release: A Java library for serializing objects as PHP serialization format. The library fully implements the PHP serializa

Marcos Passos 14 Jun 13, 2022
Library for manually creating Java serialization data.

Library for creating Java serialization data; mainly intended for research purposes. It is not recommended to use it in production as alternative for ObjectOutputStream.

null 20 Aug 23, 2022
FlatBuffers: Memory Efficient Serialization Library

FlatBuffers FlatBuffers is a cross platform serialization library architected for maximum memory efficiency. It allows you to directly access serializ

Google 19.6k Dec 31, 2022
MessagePack serializer implementation for Java / msgpack.org[Java]

MessagePack for Java MessagePack is a binary serialization format. If you need a fast and compact alternative of JSON, MessagePack is your friend. For

MessagePack 1.3k Dec 31, 2022
this project is a checker for virus's and token loggers in java apps

Rat checker this project is a checker for virus's and token loggers in java apps this project is not finished and when it is it will never be perfect.

max! 40 Sep 30, 2021
reload4j is a drop-in replacement for log4j 1.2.17

What is reload4j? The reload4j project is a fork of Apache log4j version 1.2.17. It aims to fix the most urgent issues in log4j 1.2.17 which hasn't se

QOS.CH (Switzerland) 122 Dec 15, 2022
A free, simple-to-use drop-in replacement to DeluxeChat for HEX supported chat.

ChitChat A lightweight, simple-to-use chat plugin for Spigot and Paper Minecraft Servers - that supports 1.16+ hex-based styling, tooltips, click comm

Charlie Joseph 4 Dec 11, 2022
Java binary serialization and cloning: fast, efficient, automatic

Kryo is a fast and efficient binary object graph serialization framework for Java. The goals of the project are high speed, low size, and an easy to u

Esoteric Software 5.7k Jan 5, 2023
Screaming fast JSON parsing and serialization library for Android.

#LoganSquare The fastest JSON parsing and serializing library available for Android. Based on Jackson's streaming API, LoganSquare is able to consiste

BlueLine Labs 3.2k Dec 18, 2022
Joda-Time is the widely used replacement for the Java date and time classes prior to Java SE 8.

Joda-Time Joda-Time provides a quality replacement for the Java date and time classes. The design allows for multiple calendar systems, while still pr

Joda.org 4.9k Dec 27, 2022
Realm is a mobile database: a replacement for SQLite & ORMs

Realm is a mobile database that runs directly inside phones, tablets or wearables. This repository holds the source code for the Java version of Realm

Realm 11.4k Jan 5, 2023
Easy-to-use placeholder library to focus on replacement of regular expressions inside a text.

WPlaceholder Flexible library to replace placeholders inside messages/texts with Regex expressions. For what it's good for Placeholder replacement is

Luiz Otávio 7 Oct 11, 2022
A Java serialization/deserialization library to convert Java Objects into JSON and back

Gson Gson is a Java library that can be used to convert Java Objects into their JSON representation. It can also be used to convert a JSON string to a

Google 21.7k Jan 8, 2023
A universal types-preserving Java serialization library that can convert arbitrary Java Objects into JSON and back

A universal types-preserving Java serialization library that can convert arbitrary Java Objects into JSON and back, with a transparent support of any kind of self-references and with a full Java 9 compatibility.

Andrey Mogilev 9 Dec 30, 2021
A Java library for serializing objects as PHP serialization format.

Java PHP Serializer Latest release: A Java library for serializing objects as PHP serialization format. The library fully implements the PHP serializa

Marcos Passos 14 Jun 13, 2022
Java serialization library, proto compiler, code generator

A java serialization library with built-in support for forward-backward compatibility (schema evolution) and validation. efficient, both in speed and

protostuff 1.9k Dec 23, 2022
Library for manually creating Java serialization data.

Library for creating Java serialization data; mainly intended for research purposes. It is not recommended to use it in production as alternative for ObjectOutputStream.

null 20 Aug 23, 2022
Flash cards app using JavaFX, Scene Builder and persistence using Serialization with JAVA IO API

Flashcards - JavaFX , Scene Builder, Serialized Persistence JAVA IO API Main Scene that will show all the Decks in Flash Card App Add or Edit Cards in

Ali Raja 3 Nov 28, 2022
Fast and Easy mapping from database and csv to POJO. A java micro ORM, lightweight alternative to iBatis and Hibernate. Fast Csv Parser and Csv Mapper

Simple Flat Mapper Release Notes Getting Started Docs Building it The build is using Maven. git clone https://github.com/arnaudroger/SimpleFlatMapper.

Arnaud Roger 418 Dec 17, 2022
Ribbon is a Inter Process Communication (remote procedure calls) library with built in software load balancers. The primary usage model involves REST calls with various serialization scheme support.

Ribbon Ribbon is a client side IPC library that is battle-tested in cloud. It provides the following features Load balancing Fault tolerance Multiple

Netflix, Inc. 4.4k Jan 1, 2023