My main interest is that it's been hard to make a case for Capnproto in a multi-language development environment, when the majority language is Java. I must confess that I am mostly a C++ developer, and haven't done any serious Java work for years, and this looked like a nicely sized problem to re-acquaint myself with the language.
No docs yet, but I have a bunch of RPC test cases, and the Calculator example could be added to the examples project. I'm at an impass currently, deciding whether to dump CompletableFutures altogether and replace with a home-grown futures library, which would change the API significantly. My implementation doesn't use the concurrent features of CompletableFutures (except for socket calls), so there's a bunch of unnecessary thread-safety operations going on, and also Capnproto is picky about the order in which events complete, whereas CompletableFutures very much take a YOLO approach to completion order. That made made, for example, QueuedClient tricky to get right and I'm still not entirely confident about it.
Changes to the existing code have, fortunately, been fairly limited. The most intrusive change was to keep track of a cap-table context in builders, readers and arenas, but I think I've achieved that without affecting the existing API. AnyPointers have gained a method or two. Otherwise pretty much everything else is new and separate code - the RPC implementation itself is a separate library, as it should be! On the compiler side, it's mostly been a case of rendering the interface types and adding pipelines, so existing code hasn't been touched outside of the previously unimplemented switch branches. That may be less true once generics enter the picture.
The new code probably requires a recent (14+?) Java compiler version.