We used to use xml or even json formats to exchange data through the network. It is standard, self-describing, well known by many people, and may even be defined by non-technical people.
When we need performances or even more security, we have to to find more efficient ways to exchange data. We could for instance use the object serialization of GWT for achieving this goal.
You also could use the Protocol buffer library developped by Google for C++, Java, C# or python.
This library is already used massively by Google itself.
The goal is to translate textual data into binary ones, and to simplify the way data are stored for accelerating compression/uncompression (Mashalling/unmarshalling).
I enjoin you to have a look on this library.