<div class="gmail_quote">On Wed, Dec 15, 2010 at 9:37 AM, Adam D. Ruppe <span dir="ltr"><<a href="mailto:destructionator@gmail.com">destructionator@gmail.com</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

And in those rare cases where you are doing a lot of client side work, it is so<br>
brutally slow that if you start piling other runtimes on top of it, you'll often<br>
be left with an unusable mess anyway!</blockquote></div><div><br></div><div>Unless you're using the beta of the next IE, the beta of the next Opera, or the current version of Chrome, in which case you'd find that client-side work is becoming more and more feasible. Now, it's not there yet, but when a C-ported-to-Java-compiled-to-Javascript version of Quake 2 can get 30FPS in Google Chrome, I start thinking that performance probably won't be nearly as bad as browsers move forward.</div>
<div><br></div><div>You don't have to like it, but there's a huge push in web development towards doing more work on the client, and now that browsers are catching up, it's going to change the way the web works.</div>
<div><br></div><div>As for the rest:</div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">a) No real time networking</span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">HTML 5 WebSockets, as you said</span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "><br>b) Cross domain communication requires ugly, inefficient hacks, or a proxy on your server.</span></div>
<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">This is the one thing you've listed that's not going to change because it poses a security risk.<br>
<br>c) No sounds (without flash anyway).</span></div><div><font class="Apple-style-span" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;">Included in HTML 5.</span></font></div><div>
<span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "><br>d) Graphics, even if you grant the canvas element, are a joke. The latency is<br>brutal. Take that deviant art thing from earlier in the thread. Flick your mouse,<br>
and watch the lines slowly catch up to you! Using X11 with a remote server is<br>faster than that.</span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">In Chrome (even the version a year or so old that is installed on the lab computer I'm using right now), there is no latency whatsoever. That's a simple matter of javascript performance, which is dramatically improving.<br>
<br>e) Input requires a lot of magic. Some keys have the same identifiers, some of the<br>time, meaning just checking for keypress requires dozens of lines of code, and<br>still doesn't work right! Checking for multiple keys or mouse buttons hit at once<br>
is very poor.</span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">This is where frameworks can help. Now that Javascript performance is barrelling ahead, frameworks start looking much more attractive. I've used GWT (Java->Javascript) in the past, and input handling feels exactly like it does in SWT or Swing (the leading Java UI frameworks).<br>
<br>f) Very little state across loads (though html5 is adding something for this, if<br>it ever gets broad penetration), mentioned mainly for completeness, since<br>javascript variables do work for must things, but your persistent database still<br>
has to be on the server.</span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">As you said, HTML5. My internet was down this morning, but I was still able to read the batch of mail in GMail that I downloaded last night because GMail is already taking advantage of Google Gears, which provides similar functionality. I get the same thing with a few other web applications.<br>
<br>g) No threading. I recently tried making a javascript -> d caller. In D, this<br>would be trivial: opDispatch means no code needs to be written, and if it runs in<br>a different thread from the rest of the UI, it can make sync calls to the server<br>
without freezing everything up, thus letting it be written in a linear style.</span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">HTML5 adds WebWorkers, which handle exactly this use case (among others).</span></div>