The Java end is a Bukkit plugin, so I don’t have the freedom to build on a servlet engine like Tomcat. I don’t need arbitrary access to any object; I just want to expose a subset of functionality available to plugins to my wrapper application.
The Cocoa application, I am building from the ground up, so the restrictions are a bit looser. It’s a wrapper for the server with limited support for configuring certain plugins.
Something that can communicate over Unix sockets would be ideal since the processes are running on a single host, but TCP sockets are ok too. I’m not really picky. If I end up using TCP then I’ll consider adding support for remote management, but it’s not a priority. I don’t want Unix sockets badly enough to bother with all the hoops I’d have to jump through to use them.
Java does not support UNIX sockets out-of-the box, but this question gives some alternatives.
Or you can just open a tcp socket on localhost to keep in the standard library.
There are a lot of solutions out there, but if you want to stay lean and mean, a simple socket is not too bad. All the boxed solutions are quite complex, as they need to deal with complex issues over the net. You will face only a small subset of these, so might be better of with a simple home-grown protocol over a socket.
Just make it asynchronous to avoid blocking.