+1 nippy
I have successfully used it in few of my projects.

2015-03-17 5:30 GMT+01:00 Lucas Bradstreet <lucasbradstr...@gmail.com>:

> I have had a lot of success with nippy
> https://github.com/ptaoussanis/nippy, which is quite well documented. We
> had problems with fressian round tripping Clojure collections, as you've
> described.
>
> It has a number of other features (compression, encryption) that I may end
> up using. It has given attention to backwards compatibility, and there is a
> mode to turn this backwards compatibility off if it is not required.
>
> Lucas
>
>
>
> On 16 Mar 2015, at 09:40, Ryan Schmitt <rschm...@u.rochester.edu> wrote:
>
> I'm the author of dynamic-object
> <https://github.com/rschmitt/dynamic-object>, an open source library that
> makes Clojure's data modeling power available to Java programmers. This
> includes features like serialization and deserialization. I'll copy this
> small usage example from the README to give you a sense of how it works:
>
> public interface Album extends DynamicObject<Album> {
>   @Key(":artist") String getArtist();
>   @Key(":album")  String getAlbum();
>   @Key(":tracks") int getTracks();
>   @Key(":year")   int getYear();
> }
>
>
> String edn = "{:artist \"Meshuggah\", :album \"Chaosphere\", :tracks 8, :year 
> 1998}";Album album = DynamicObject.deserialize(edn, Album.class);
> album.getArtist(); // => "Meshuggah"
>
>
> dynamic-object has always been opinionated about using Edn as the primary
> data language on the wire, for a number of reasons. For a long time, I also
> thought about adding Fressian support to dynamic-object, and I've recently
> done so on an experimental basis. (It looks like this
> <https://github.com/rschmitt/dynamic-object/blob/440ecd2f385d1cec80496ba7007bd0755023b19c/src/test/java/com/github/rschmitt/dynamicobject/FressianTest.java>.)
> Some time after I initially released dynamic-object, Transit was also
> released, with support for various encodings (JSON, JSON-Verbose,
> MessagePack).
>
> In working (to different extents) with these data languages, I've had some
> apprehensions about all of them.
>
>    - There is a lack of tooling available for Edn, such as validators and
>    pretty-printers. I spent a while looking for an Edn equivalent of python
>    -mjson.tool and never found one. Clojure's built-in pprint function does
>    not work out-of-the-box to pretty print arbitrary values, and also appears
>    to handle some data structures, such as records, incorrectly. (pprint omits
>    reader tags when printing records.) pprint's underlying implementation,
>    cl-format, is extremely powerful and could almost certainly be used to
>    build a validating Edn pretty-printer, but it would have an unacceptably
>    long startup time.
>    - There is a lack of high-quality Edn implementations for different
>    languages. Because the Edn spec is not very formal or complete, there seems
>    to be some uncertainty regarding what constitutes an Edn implementation in
>    the first place. For instance, clojure.edn parses the Ratio type as a
>    builtin, even though it is mentioned nowhere in the spec. (Issue
>    <https://github.com/edn-format/edn/issues/64>.) There are also
>    oddities such as the recommended C++ implementation
>    <https://github.com/shaunxcode/edn-cpp> describing itself as
>    "experimental."
>    - Fressian's reference Java implementation is almost totally
>    undocumented. This is a problem, because I'm writing a library that targets
>    Java developers; they won't be going through the Clojure bindings (which
>    are decently documented). Fressian's source code is outstanding, but it's
>    still not documentation.
>    - Due to the lack of documentation, it's not clear which parts of
>    Fressian are actually stable. Stuart Halloway's data.fressian talk included
>    some parentheticals about the extension points being subject to change,
>    which so far they haven't, but that might only be because of the following
>    point...
>    - Fressian does not seem to have gotten any attention since the
>    initial launch. People have submitted GitHub issues
>    <https://github.com/Datomic/fressian/issues>, including one
>    surprisingly high-quality bug report, but they have all been ignored. The
>    JIRA is mostly tumbleweeds.
>    - The Clojure bindings for Fressian, namely data.fressian, are
>    essentially incomplete. With the exception of maps, Clojure collection
>    types do not round trip, and in at least one case (vectors) that is because
>    of a blocking issue <http://dev.clojure.org/jira/browse/DFRS-1> in the
>    underlying Fressian implementation.
>    - There are no documented best practices for the use of Fressian or
>    some of its more advanced features like chunking. It is not clear how to
>    read and write Fressian in a way that facilitates (for instance) ranged
>    reads from the middle of a resource. It is not clear when checksums should
>    be used and how they should be validated. It is not clear whether tags
>    should be namespaced, or how. The only namespaced tag in data.fressian is
>    for IRecord; none of the other type tags are namespaced. It's not clear
>    whether this is due to bugwards compatibility.
>    - Transit is advertised
>    <https://github.com/cognitect/transit-format#implementations> as a
>    work-in-progress. This is the main reason I haven't seriously considered
>    adding Transit support to dynamic-object.
>    - However, what happens when Transit is stabilized (if that ever
>    happens)? Since Transit offers a msgpack encoding, will Fressian then be
>    irrelevant (except for legacy use cases)? There's a FUD aspect here--I like
>    Fressian and I want dynamic-object to support it, but I don't want to back
>    the wrong pony and end up having to support HD-DVD and Betamax for all time
>    (so to speak).
>    - Can these formats be unified? Can Edn and Fressian encodings for
>    Transit be offered? Would that even accomplish anything?
>
> I realize that none of these data languages will have the same extent of
> support and tooling as JSON or XML, but I want to ensure that
> dynamic-object's supported data languages all have attentive stewardship
> and bright futures. It's distressing that a lot of the issues with Edn and
> Fressian have not gotten much traction. Are these languages still actively
> being supported and fostered? If so, how much development activity is
> taking place on internal forks? Are any public updates planned for these
> languages any time soon?
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>
>  --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>



-- 
Andrey Antukh - Андрей Антух - <andrei.anto...@kaleidos.net> / <n...@niwi.be
>
http://www.niwi.be <http://www.niwi.be/page/about/>
https://github.com/niwibe

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to