Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

study: serialization #8

Open
oldratlee opened this issue Dec 8, 2018 · 1 comment
Open

study: serialization #8

oldratlee opened this issue Dec 8, 2018 · 1 comment

Comments

@oldratlee
Copy link
Owner

oldratlee commented Dec 8, 2018

🍺 serialization framework

Kryo

  • repo: https://github.com/EsotericSoftware/kryo
  • EsotericSoftware/kryo: Java binary serialization and cloning: fast, efficient, automatic.
  • Kryo is a fast and efficient binary object graph serialization framework for Java.
  • Additional serializers(for some jdk types and some external libs like e.g. joda time) are available in a separate project on github, kryo-serializers.

JBoss Marshalling

  • repo: https://github.com/jboss-remoting/jboss-marshalling
  • an alternative serialization API that
    • fixes many of the problems found in the JDK serialization API while remaining fully compatible with java.io.Serializable and its relatives,
    • and adds several new tunable parameters and additional features, all of which are pluggable via factory configuration (externalizers, class/instance lookup tables, class resolution, and object replacement, to name a few).
  • this framework was inspired by the need for certain features unavailable with the standard Object*Stream classes
    • Pluggable class resolvers, making it easy to customize classloader policy, by implementing a small interface (rather than having to subclass the Object*Stream classes)
    • Pluggable object replacement (also without subclassing)
    • Pluggable predefined class tables, which can dramatically decrease stream size and serialization time for stream types which frequently use a common set of classes
    • Pluggable predefined instance tables, which make it easy to handle remote references
    • Pluggable externalizers which may be used to serialize classes which are not Serializable, or for which an alternate strategy is needed
    • Customizable stream headers
    • Each marshaller instance is highly configurable and tunable to maximize performance based on expected usage patterns
    • A generalized API which can support many different protocol implementations, including protocols which do not necessarily provide all the above features
    • Inexpensive instance creation, beneficial to applications where many short-lived streams are used
    • Support for separate class and instance caches, if the protocol permits; useful for sending multiple messages or requests with a single stream, with separate object graphs but retaining the class cache
  • home page: http://jbossmarshalling.jboss.org/
  • maintenance is not active...
    • although personally I like the product of jboss and it's high quality 😩

🍺 serialization specification

Protocol Buffers

protostuff

improvement/enhancement of java; independent implementation of java.

@oldratlee
Copy link
Owner Author

oldratlee commented Dec 9, 2018

Kryo

分析

注意的问题

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant