JSOs are a way of coding in Java against JavaScript objects. The JSO class is a shim that get totally compiled out: no overhead, no wrapping of the JS object.
> 2. Which one would you say is fastest in terms of client side
> performance?
Most probably JSOs, with JsonUtils for parsing.
Next I'd say AutoBeans, then RF, then RPC.
Note that server side performance is different: the rpc protocol is much simpler than RF, so it's faster.
> 3. What does it mean that JavaScriptObjects are Opaque?
Where did you read that?!
> 4. Since JavaScript Overlays describe us extending JavaScriptObjects,
> does that mean converting it to a JSON requires less (or even zero)
> time than would GWT-RPC?
Yes.
Most browsers can do JSON.stringify(), for others you'd have to use JSONObject.toString(), which has a small overhead.
>
> Thank you so much for your input~
Choose what works best for you (in terms of protocol), not necessarily the fastest. These won't be the bottleneck of your app's performance, DOM is much more of an issue (and of course the network and the server)
Thanks so much for replying!
I read that JavaScriptObjects are an opaque handle in the javadoc
http://google-web-toolkit.googlecode.com/svn/javadoc/1.6/com/google/gwt/core/client/JavaScriptObject.html
When you mentioned how server side performance is different, is it
because of the protocol used to marshall and unmarshall the data once
it arrives on the server?
You mentioned that the DOM is much more of an issue? In what sense?
And how does one go about optimizing for this?
I always believed that gwt's deserialization via gwtrpc back into the
client side was the bottleneck. Which is why I began to consider
other options such as JavaScript Overlay Types. But then again, I
guess forgot that I would have to manage the JSON (or turn them into
POJOs, the advantage of GWTRPC you were speaking of I assume?)
on the
server as well. I suppose the plus side to this is that there is very
little deserialization that is needed to be done on the client side.
Would I be correct in saying that, since I can't change the speed of
my client's computer, I should place the deserialization/serialization
work on the server (which I could always allocate more resources for?
I guess really I'm looking for bottlenecks or an architecture that
would give great scalability~