|Think about Loose Coupling|
Perhaps one thing you could consider is the project I'm working on, called OpenThought. From the project description:
OpenThought is a perl based framework which allows you to create web programs, which function like desktop applications. Now, before you get too excited, while we are using OpenThought in production at my workplace, the framework itself is still under development, and has not yet reached 1.0. If you do decide to look at it, I highly recommend the version in CVS right now.
While I unfortunatly don't have a public demo available, I can say that we're building several applications now using this. And there are screenshots of an application in action, on the OpenThought website. An excellent advantage of this system is that you only have to program it once, and yet you have applications accessible on both the desktop machines in-house, and also remotely on the web. You don't have to build two seperate front-ends in order for that to work.
In one instance, when our company was testing out different environments, they had asked a group of developers to create a particular demo using Visual Basic. A week later, they came back with a working demo of a particular app running under VB, and hitting a MS SQL Server for data access. Now, my company, at this point, hadn't yet seen OpenThought in use. So, after seeing their completed demo, I decided to take OpenThought out for a spin :-)
I was quite proud when, three hours later, I had built an application in OpenThought, modeled after the VB one. It contained the same forms, fields, accessed the same data -- for all intents and purposes, it was identical.. except that it was built in Perl using OpenThought, and that it was faster! Anyone who viewed this demo, particularly when using IE or Opera, found it significantly faster then the VB app.
Now, the programmers putting together the VB app were experienced programmers, but new to VB. So perhaps it was simply something incorrect in their code. Nonetheless, it made my boss' eyeballs open real wide :-) (and mine too, for that matter).
So, as of today, we're building all our web applications, and a few internal apps, using OpenThought. The majority of our internal apps are still being written in other languages, but thats largely because the codebase already exists.
Update: - If you do decide to check out OpenThought, I highly recommend the version in CVS right now.