The bad news is many of those other factors tend to favor web apps - zero deployment (ok, near-zero), scalability may be better because of pooled database and other resource connections, horizontal scalability, portability to any platform with a browser, and so on.
What's the app about? Given a complex interface and large amounts of "state" data, a Swing client might win out after all.
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi
I think a lot depends on the application's purpose and usage.
Is there a need for a central DB / repository? if not -- there's not much need for a centrally hosted system. Does the application need to be used offline? if not -- then developing the system as a web app may be suitable What about the functional speed of the app? typically there's a delay between pages of a web application.
Developing the UI of a web application is significantly easier than a Swing app, but then again, you're much more limited as to what kind of UI you can develop.
In a nutshell. This isn't a cut and dry question, it depends on a lot of factors.
Another argument in favour of a Swing application as compared to a browserbased solution can be CPU load. If the application needs to perform heavy calculations you may want to move those from the server to the client at least in part. A web application cannot do that, a traditional client/server model is perfect for such situations.
If access to the client computer is needed (printers, other hardware) it's also far more difficult (if not impossible) to use a web interface.