I have to agree with Adewale, having used XStream myself. The concept
is very similar to protobufs and it is very easy to use. The
difference is that XStream derives data structures from Java classes,
rather than a special language.
The problem, however, is that XStream is aimed at XML (clean and
optimized but XML) and it is being promoted as such by the developers,
although they do provide JSON drivers and I see no reason why they
couldn't implement a protobufs encoder or something similar. For a web-
scale distributed application, when we are talking about using a 20-
server farm vs 60-server farm, these things make a big difference.
Of course, the other problem is that as of now XStream will only work
in Java. Not in the sense that you cannot read XML generated by
XStream in other languages, but in the sense that you do not get
automatic bindings like you do in Java. protobufs will generate
bindings for multiple languages for you (potentially all major
languages). However, in defense of XStream, if you are using a
language which is not supported by protobufs it is easier to implement
an XML parser for XStream's XML than it is to implement a parser for
protobufs encoding.
Yegor