<div class="gmail_quote">On Wed, Dec 15, 2010 at 11:24 AM, Andrew Wiley <span dir="ltr"><<a href="mailto:debio264@gmail.com">debio264@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im"><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" target="_blank">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><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 class="im"><div><span style="font-family:arial, sans-serif;font-size:13px;border-collapse:collapse">a) No real time networking</span></div></div><div><span style="font-family:arial, sans-serif;font-size:13px;border-collapse:collapse">HTML 5 WebSockets, as you said</span></div>
<div class="im">
<div><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><div><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.<div class="im"><br>
<br>c) No sounds (without flash anyway).</div></span></div><div><font face="arial, sans-serif"><span style="border-collapse:collapse">Included in HTML 5.</span></font></div><div class="im"><div>
<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><div><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.<div class="im">
<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.</div></span></div><div><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).<div class="im">
<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.</div></span></div><div><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.<div class="im">
<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.</div></span></div><div><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>
</blockquote><div><br></div><div>I should also note that every HTML5 feature I mentioned here except WebSockets is also supported in Firefox 3.5. IE9 supports everything but WebSockets and WebWorkers. (Apparently there's some trouble with the WebSockets specification at the moment)</div>
</div><br>