I would like to know the merits & de-merits of
- Google Protocol Buffers
- JSON
- XML
I want to implement one common framework for two application, one in Perl and second in Java. So, would like to create common service which can be used by both technology i.e. Perl & Java.
Both are web-applications.
Please share me your valuable thoughts & suggestion on this. I have seen many links on google but all have mixed opinions.
Json
- human readable/editable
- can be parsed without knowing schema in advance
- excellent browser support
- less verbose than XML
XML
- human readable/editable
- can be parsed without knowing schema in advance
- standard for SOAP etc
- good tooling support (xsd, xslt, sax, dom, etc)
- pretty verbose
Protobuf
- very dense data (small output)
- hard to robustly decode without knowing the schema (data format is internally ambiguous, and needs schema to clarify)
- very fast processing
- not intended for human eyes (dense binary)
All have good support on most platforms.
Personally, I rarely use XML these days. If the consumer is a browser or a public API I tend to use json. For internal APIs I tend to use protobuf for performance. Offering both on public API (either via headers, or separate endpoints) works well too.