Sunday, January 28, 2007

The Problem of Offline Web Applications - Technology Choices

I have been trying to develop a new application for doing timesheets. We currently use a system which was developed using MS Access and MS Excel combined with access to an Oracle database and a local hsqldb. Needless to say it is messy solution. It was something that was started by a wonderful field engineer that works for my company. As these kinds of projects take on a life of their own, the problems of updating them and ensuring that everyone is using the latest version come up.

Here are some of the issues:
  • Non-object oriented (OO) design
  • No source control
  • No version control
  • No defect management
  • No mechanism to control enhancements
  • MS Access and Excel are binary applications, so there is no clear way to implement source control
  • No clear interfaces
  • Client interaction directly with Oracle
  • On/Off line modes are user controlled
  • Can not move database back end without updating all clients
So I am examining some ideas to make the timesheet application a better design. There are really two options to consider: a web based application, and a standalone Web Start application.

The web based application I have in mind could take form using either a completely server side version using JSF. The other option is to use an embedded database like Java DB in a browser, and submit the final results to a application server. The latter does not have a clearly defined method of updating the application. The idea is based on the demo of Java DB called Java DB-in-a-Browser Demo

The demo is impressive from a number of ways. It shows how to use Java DB, AJAX, Live Connect technology (been around since the days of Netscape and Java integration), applet technologies, and simple HTML. It is truly an enlightening demonstration.

The alternative is to create a rich Swing based application using Java Web Start. These technologies have really matured and combined with the Sun Java System Application Server make a great tool set for any Java developer. The application client using being dispensed from the application server solves a number of problems including simplification of the client. A majority of the business methods are implemented on the server. This leaves the presentation and validation to the client. This combined with Java DB packs a potent punch. It also solves two problems mentioned above: offine use with a mechanism for interaction when a network connection is detected (automatic), and removal of direct interaction with database.

You may believe that I am inclined to use the Swing application client, but I really am impressed with JSF. JSF does require online access to work which may hamper its implementation.

Some technologies to consider:

Here are some interesting articles in the same genre:


s450r1 said...

I ran across this blog post today that might provide a third option: Hybridizing Java

I've never used Flex, but it sounds interesting.

John Yeary said...

I read that article too. I am glad that people are trying to find new solutions to common problems. Bruce is a brilliant mind so it makes for an interesting article.

John Yeary said...

I looked at TimeTracker when I was vetting my options. I decided to write our own in house time management system. TimeTracker covers the more general cases, but does not integrate into our ERP system. Thanks for the suggestion. Great minds sometimes think alike.

Popular Posts