Thanks for the feedback! I'll take a look at the Maven Central .proto files.
I started Kria before the new Java client was very far along. I'm glad it now supports async operation. I'll try to take a look. I have had mixed experiences in wrapping Java libraries. I found many hard to understand because of their size and complexity. Kria supports the Riak Protocol API and is meant to be low-level. It does not support the "Additional features" mentioned on http://docs.basho.com/riak/2.0.0/dev/using/libraries/. It only has three dependencies: Java 7 (for NIO.2), Clojure 1.6, and Protocol Buffers. I intentionally avoided Netty because I didn't need the complexity. Kria does this in about 2,000 lines of Clojure: 1400 lines of implementation plus about 600 lines of tests. The Java library has about 20,000 lines of code. I spent considerable time driving out duplication, and I'd like to think it makes the code easier to read and more reliable. Lastly, writing Kria helped me find some strange (e.g. probably unintentional) re-use of message codes in Riak: https://github.com/basho/riak-java-client/issues/367 On Wed, Jul 23, 2014 at 2:59 PM, Sean Cribbs <[email protected]> wrote: > David, > > Thanks for contributing to the Riak ecosystem! A few notes: > > Looking over your README, I see you're probably doing some unnecessary > work with respect to the .proto files [1]. We generate, package, and deploy > all of those on Maven Central [2] specifically so others can use them as > you have, while maintaining the authenticity of the code (it comes from us) > and reducing duplication (not N copies everywhere). > > I don't want to bikeshed it (you obviously have your reasons), but it > bears mentioning that the new official Java client is designed so that it > would be easier to write wrapper libraries in other JVM languages, and to > give the user the option of async or sync at the API level. > > [1] https://github.com/bluemont/kria#protocol-buffer-setup > [2] https://search.maven.org/#search%7Cga%7C1%7Ca%3A%22riak-pb%22 > > > On Wed, Jul 23, 2014 at 1:31 PM, David James <[email protected]> > wrote: > >> The latest version of Kria, 0.1.14, supports Riak 2.0.0rc1. Kria (a right >> rotation of "Riak") is an open source asynchronous Clojure driver for Riak >> 2.0 built on top of Java 7's NIO.2. It uses the Riak protocol buffer >> interface. >> >> https://github.com/bluemont/kria >> https://clojars.org/kria >> >> There are, of course, several Riak drivers for Java and Clojure. I hope >> some people find this one useful. I have a section in the README about why >> I made it. To summarize, I wanted async support, and the Java driver wasn't >> quite what I wanted. >> >> Please kick the tires. >> >> In my work projects, Clojure's core.async works great as a layer on top >> of Kria. Just create a core.async channel in advance and have the callback >> put the desired return value in the core.async channel. (You could also use >> Clojure atoms or promises; Kria doesn't care.) >> >> -David >> >> _______________________________________________ >> riak-users mailing list >> [email protected] >> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com >> >> > > > -- > Sean Cribbs <[email protected]> > Software Engineer > Basho Technologies, Inc. > http://basho.com/ >
_______________________________________________ riak-users mailing list [email protected] http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
