The goal of this project was to write an easy to use Internet program that allowed users to draw objects that could then be transmitted to other users who were simultaneously using the same application. This electronic concept is similar to that of a real world whiteboard: one participant draws objects that others can see, and the other participants can then add to or delete these drawings.
Writing the system in Java was an obvious choice for several reasons. First, since I cannot control the type of computer the user will be logging in with, the programs needed to be platform independent. Second, Java provides multiple mechanisms to transport data from the server to the clients. These include sockets, RMI and Servlets. After deciding on sockets to transfer the data, I then had to write the server and the client side software. The server side program was straightforward. It needed to keep a list of what objects had been drawn by the client, receive updates from the clients to this list and then broadcast this update to the other clients. The client software, on the other hand, had to know not only how to send and receive the updates from the server, but also how to draw the objects. This required extensive thought and investigation on Java drawing techniques.
There were several challenges with this project. Getting the client to correctly draw, and move the objects was very challenging. I took several iterations and trials to get it right for each object type. Also, getting the user log in and log off information to display in a separate area took longer than expected. Luckily, and due mostly to the flexibility and stability of Java, getting the client and server to talk was easy. I enjoyed writing this system immensely, even though there were some problems along the way. I gained experience in programming a drawing application, in object communication and in using sockets.
Advisor: J. Dean Brock