In Where Swing should Venture Eitan Suez ponders the possibilities of making Swing applications deployable as web apps. Flip a deployment switch one way and you get a desktop application, another way and you get a web app.
Now I don't want to attack Eitan's comments directly, but for me his blog raises a more general point about the way user-facing software has been going recently. And so with good humour (and tongue planted firmly in cheek) I feel compelled to ask the following: why does everyone want the web to look and feel like a desktop app?
(Or, put another way: can't we desktop developers have an API all to ourselves, without the web apps mob muscling in?)Even if we solved the practical issues (for example, until you can replicate Java2D, all you'll achieve is a feeble subset of Swing) there is still the issue of banging nails in with screwdrivers. Swing isn't a web API, and it was never intended to be one. And while the gap is very slowly closing between AJAX/etc and the desktop, the two platforms are still separated by a chasm in functionality which would cause even Evel Knievel to wet his pants.
I welcome more sophisticated tools for developing interactive web pages (hence my article on GWT on java.net) but I have to question the wisdom of taking this to the extreme of creating mail clients, spreadsheets and word processors via the web. Yes, I use GMail — but I'm only using the web interface because Google have yet to see the sense in making a Web Start client.
"Oh, but Java isn't as omnipresent as a web browser. Only a percentage have Java, while everyone has a web browser..." True as that statement may be, it doesn't alter the fact that GMail et al are a kludge, a fix, a hack, a work-around, a bit of gaffer tape to hold something together until a better solution comes along. They are not the solution. They are not even a step on the road to a solution. They are a diversion down a path which can only result in a dead end. The solution is to actually develop and popularise a true desktop application deployment mechanism which can match the 'go anywhere' spirit of web URLs.
So instead of taxing our little grey cells on how to make the web work exactly like Swing, why don't we throw ourselves behind the problem of getting Swing to deploy just like the web?