Doing A Distributed Project


This project is designed for people who would like to get hands-on experience in doing a distributed project. However it may be used to get familiar with Sun's developer assignment.

Please remember that this is a kind of exercise and no specific details in specification might be given. You will make a plenty of decisions by yourself in design and coding.

Before you start working on this project, you should have some knowledge preparation. Your knowledge scope should cover:

This project provides:

Return to top

Overview of the project

A university registrar asks an application to be used to retrieve graduated student information conveniently from his office or from his home office. This application may possibly be used by another officials in the school or modified for another uses.

The school's IT department decides to design a rudimentary database system for storing graduated student information and three graphical user interfaces, one for end user and the other for server administrator and another for data entry.

The graduated student database should include student name, sex, student number, undergraduate major, classification(study field), hours completed, hours taking, and grade point average.

The graphical user interface for data entry should be easily used by untrained employees to put new information to the database.

The graphical user interface for endusers should provide a convenient way to look up and search for each student information from the student database which should be provided with this project. The output retrieved from the database should include an alphabetical listing of all students, and alphabetical listing of students being searched, and a list of all students ordered by grade point average and by last name, but not limited. The registrar or the endusers should be able to update the database by modifying student information or add new information to the database.

The application for server administer should provide information about clients which include client activities on the server, like searching which record, contacting time, etc.

You are asked to document your design choices in html format. The code design should be produced in javadoc format. You should provide an interactive user manual and README file.

Return to top

Overall Architecture

This is a traditional client-server application, but not limited to this requirement. You are encouraged to design it with three-tired architecture.

The database should be put at two locations:

Your client application should be able to adapt to both databases on the fly.

When and whether the two databases should be combined or synchronized to be updated will not be considered in this project.

When no-networked mode is selected, i.e. your client application loads database from the client machine, no networking is performed, i.e. no sockets should be created.

When networked mode is selected, i.e. your client application loads database from a remote machine, a network connection should be established. You have only two choices for the connection protocol:

No Servlet or JSP tech should be used in this project.

Return to top

Project Requirement

To help you start the project quickly, you will be provided some piece of code as basis. Your code should be established on these code, or you may start on your own. Any changes to the original code should be archived or documented. Some outdated methods may be embedded in the provided source code. It is your responsibility to replace them with the newest ones.

You must use Java 2 platform(jdk1.4 version) to finish the project. If you have not updated your system to jdk1.4 version, go to Sun's homepage to update it.

Your project should be able to be installed and executed in any platform without any code change. These platforms include Windows(NT, 2000, XP), Unix, Solaris, Linus, Macintosh, etc.

The command line commands or user input in the GUI part may contain the following information:

You should document these information in your README file or user manual.

You should consider multiple concurrent network connections and protect the database from any data corruption. A lock/unlock of a whole database or part of database should be implemented in your project. A thread safe is required.

To connect your local database, your client application should indicate that the connection-mode and no any networking functionality should be launched.

All class files including server side and client side should be well organized and packed in a jar format. It may be launched from a command line or double-clicked. A batch file may be used in some conditions which should be documented in user manual and README file.

The whole project should be well-tested and robust against any wrong data input and malicious users.

Return to top

User Interface

The user interface(three GUIs) for this project should meet the following criteria:

Return to top

Network Approaches

There are many ways to implement the database network communication. but for this project only two approaches are allowed.

Either of above is OK. It is not allowed to use Servlet or JSP or CORBA or other Java technologies. You are allowed to work only on Java standard edition platform(jdk1.4).

It is allowed the user to choose database location and database name. No authentication is required for database access.

Return to top


People may ask why to design the database from scratch, the new technology may allow you to finish the project quickly. The answer would be that through this project, you may be trained to get familiar with database code writing and decision making. For example, how and when and why to extend a class or modify a class, how to robustly code a database and protect data from corruption, even more stuff you must confront with.

People may ask how long to get such project done. Generally speaking, if you are brand new to the Java world and just get certified in programming, it may take a year to get familiar with the related technology and finish the project(at least you need to spend 2 hours a week.) If you are an experienced programmer and have experience in networking programming from other languages, and you will have plenty of time, it may take 100 hours or so to go through thinking, learning, coding, and testing process.

People may ask if she or he may get a possible solution for this project, the answer is positive. The tutorial for this project is under construction. Part of the tutorial may be uploaded to the site in the near future. Check this site regularly.

You are recommended to sign in for JavaCamp mailing list, so as to get updated information timely.

Return to top