When I say web programming here, I’m thinking of mid-to-large scale
application development in a language like Java, not relatively small-scale
applications in PHP - which personally I find more fun probably because the
size of the applications I would use PHP for means that it’s easier to keep
the whole project in mind and also because PHP scripting has a shorter write-
test-debug cycle than Java.
Last year I spent a lot of time working on a Java-based web application using
the Spring Framework, Hibernate and Jakarta
Struts. What a lot of no fun that was. Spring
and Hibernate are quite straightforward - my problem is with writing the user
interface for web applications - it just seems so much harder than it should
be for relatively little in return. I spent weeks building a user interface
that I think is inferior to something I could have built in a day or two using
Swing, and a half-decent Swing GUI editor.
Now don’t get me wrong Struts is much better than writing servlets by hand
and the Nitrox plug-in for eclipse makes things easier still. However, the
whole experience is still laborious compared to building a Swing application
and still results in an inferior user experience. One issue is simply the
amount of classes and XML configuration glue required to perform relatively
simply actions. Then there is the conversion between the application’s
internal classes and the Struts ActionForms (although
BeanUtils can make this a
whole lot easier). Even after all this work the user has to wait for page
refreshes after performing most actions.
Now, we have AJAX which should improve
the user experience if done well (check out Google
Maps for an example how AJAX can help create a great
user experience) but probably does not lighten the programmer’s load (I plan
to build a couple of sites using AJAX to get a feel for this).
Now web applications have a lot of advantages (no install, no upgrade, can
work anywhere if does not rely on proprietary extensions) and for some
applications are definitely the way to go but I can’t help feeling that web
application development environments lag far behind the desktop and that what
we need is a merging of desktop and web programming. Maybe Microsoft’s
XAML and Mozilla’s
XUL are the way forward.