Would you recommend Google Protocol Buffers or Caucho Hessian for a cross-language over-the-wire binary format?
Depends on use case. PB is much more tightly coupled, best used internally with closely-coupled systems; not good for shared/public interfaces (as in to be shared between more than 2 specific systems). Hessian is bit more self-descriptive, has nice performance on Java. Better than PB on my tests, but I’m sure that depends on use case. PB seems to have trouble with textual data, perhaps it has been optimized for integer data. I don’t think either is particularly good for public interfaces, but given you want binary format, that is probably not a big problem.