Craig Cleaveland, Software Consultant

Internet Applications

An internet application is a distributed system for accomplishing some task over the internet. Although such systems can be construted from rudimentary web pages and cgi-bin scripts, it is generally better to use Java to create more flexible and efficient systems that require real-time dynamic behavior. The quintessential example of such a system is a chat room. Any number of people can be entering, exiting or conversing with other people in the chat room.

My interest in this area is the desire to provide the right systems that allow people to interact with each other over the internet. Virtual communities and collaborative tools are one of the more promising futures of internet interactivity. This has been my chief interest while at both Digital Equipment Corporation (DEC) and Internet Games Corporation (IGC). During my time at these places I created a number of such systems. At DEC I created demos of environments for doing collaborative development, and while at IGC I created a games network that included such features as a fully automated tournament system.

More recently, my work has been in the area of financial modeling (see Whitebirch Software) which is a system that allows collaborative work on financial models.


The principle technology for building such consumer-oriented distributed internet systems is Java. I was so impressed after reading the Java specification back in 1995 that I switched jobs so that I could work on Java full-time. I have never regretted that decision. Although Java is not perfect, it is the best language today for building internet applications. Among the features I value most about Java include:


XML (Extensible Markup Language) has a bright future. It is not a replacement to HTML, but rather a new layer on top. Although XML is often perceived to be simply a way of separating content from form to permit such things as more powerful searching mechanisms, I view XML as a more general technology that can be used in a wide variety of situations. In particular, I view XML as a very promising underlying technology in the next generation of domain engineering tools. Although XML is still in its infancy, now is the time to begin building and deploying XML tools.

Other internet technologies

Although my favored tools are Java and XML, there is a place for other technologies and techniques. These include cgi-bin scripts (using PERL or TCL) and Javascript. I tend to avoid proprietary features that only one or a few companies support.