问题
I am wondering what serialized mechanism should we choose when dealing with object transferring over the network. What are the pros and cons ?
I know most of the time we use JSON
or XML
for AJAX
since the transfer format are pretty much Javascript
format, and plus JSON
is pretty lightweight with its small footprint, therefore is Java
serialization totally out of the table ?
回答1:
In general the important question is which client will receive the serialized objects - browsers/JavaScript engines like (node-js), Java client, unknown/multiple clients.
JSON - JSON syntax is basically JavaScript and therefore any component with a JS engine will handle its parsing very well - even complicated data-structures will be converted to "living" objects efficiently. JSON parsers exist for practically any language and it is easy to use even when not using a JS engine, (Take Google Gson for example that is able to convert JSON into corresponding objects with ease) which makes is a good candidate for cross-language communication - for example in a messaging architecture.
XML - Shares many of JSON's benefits - cross-language, lightweight, etc. Adobe Flex for example handles XML very well, even better than JSON. It's definitely an appropriate substitute for JSON. I personally prefer JSON for its JS like syntax, but XML is also good.
Java Serialization - Should be considered only for Java-to-Java communication. An important note is that the class definitions should be on the sending and the receiving ends and often you wouldn't gain much by passing the entire object. I wouldn't rule out RMI as a communication protocol, it does simplify development. However the resulting application components will be hard coupled which will make it very difficult to replace.
One more notes - Serialization in general has its overhead. However when the communication is performed over a network the bottleneck is often the network rather than the serialization/deserialization itself.
回答2:
I think it depends. If you're sending an http request or something then JSON or XML is obviously a good choice. If you are just sending a java object over a tcp socket for some distributed algorithm or something I think the java serialization is easier/better
回答3:
While serialization over the network both xml and json would work. It depends on the consumer of this information.
If the consumer is a browser using Ajax to request some information and render something on the screen, generally jason is the best bet as its already in Javascript object format and there is no overhead of converting to Javascript compatible objects. In fact many Ajax libs (e.g. jQuery) have good support for json.
If you consumer is another application which may or may not be in java, then xml is the prefer serialization mechanism. Web services use xml very heavily.
If your consumer is another Java program then definitely java serialization is preferred option (e.g. RMI). So its not out yet :-).
But yes there is blurred line between XML and Json. What I mentioned here is the general practice. Here is a nice article putting all the aspect on xml vs jason.
回答4:
I think as developer we need not take care of serialization of Response Objects. but if we consider JSON , it has decent advantanges to choose over XML.
- JSON Response doesnt not need encoded response unlike XML.
- handling and processing of JSON is faster compared to XML because its not parsed.
- XML response for AJAX is always encoded hence processing takes time.
- JSON best fits with Jquery for UI related coding and is faster.
- Processing huge data Eg: fetching indexing data to/from server, JSON handling is faster.
来源:https://stackoverflow.com/questions/11102645/java-serialization-vs-json-vs-xml