Using a Cold Fusion backend for a Java Application
It's been ages since I've blogged anything, but I thought I'd talk about my recent experience using a Cold Fusion backend for a Java Application. We recently lauched this app, so i guess I'm just putting this down as a milestone in my blog.
We have an existing cold fusion CRM that we use to coordinate communications for a network of radio stations dotted around the world. But the problem we have had is that allot of our users have limited connectivity in countries like Indonesia, Africa and India and have wanted to be able to take their work offline.
We looked at a few options in the initial stages of the development process, including flash and flex, but quickly ran into a few road blocks. Flex wouldn't work offline and flash doesn't have the ability to store email attachments and the like on the client file system. I'm hoping that the Apolo project will remove some of these limitations, but at the end of the day we ended up going with a Java solution for the client app simply because of it's power and flexability.
Now where do I start about Java development. I had done some java years ago, but had never really done a project big enough to sink my teeth into. Well that's changed and I'm pretty confident with Java now. There's alot of libraries to learn and a crap load more complexity involved than in working with CF, but I've really been enjoying it. In contrast to CF, it's much stricter and unforgiving, but that's where it's power lies. That's not to say I'm ready to jump ship and start doing JSP development and throw CF out the window. On the contrary, CF has a very special place in my toolbox because of it's simplicity and rapid development architecture. It's just sooo easy to whip out functional code without too much stress. Anyhow, everything has it's place...
A bit about the architecture. We basically pass serialised objects back and forth the client app and our custom cold fusion event gateway. The gateway converts java beans into cold fusion beans and vice versa. All the processing on the server is done by the existing cold fuision business model and results are passed back out through the gateway via a socket connection to the client app. The client persists the objects and the user can happily disconnect from the internet and work offline in much the same way as a regular email client.
Looking back over the project my main observation has been the dramatic increase in development time as apposed to CF server development. It has been challenging and very rewarding.
