Java Instant Messenger
Needs to be as simple as possible.
- Login with password / New User (details can be stored in a text document)
- Contact list (ability to add friends and see which friends are online)
- private chat (between 2 persons)
- group chat (between more than 2 persons)
- FTP between users
I have some started code already, which I would ask that you modify. No plagiarism of code from another source. Any borrowed code should be referenced as this project will be highly scrutinised. All code should be heavily commented, so that I may learn from it. Keep as simple as possible.
Simple IM Program
1. Project Goal:
- Everything should be implemented in the simplest possible manner & explained throughout. This does not require a high standard of design/complexity. It just needs to work. I want to learn from this, so I can implement your expertise in a school project.
- Use supplied Server, Client & Login as the foundation for this project (Client.java; Server. Java; Login.java); Explain any modifications and reasons for doing so.
- No 3rd Party APIs to be used.
2. Commenting of code, variable names. GUI etc.:
- Code should be explained throughout - heavily commented in English;
- Along with other comments, the following should be explained in the code: how messages are sent privately and not just as broadcast messages; explain how the file transfer works (i.e. how it can transfer files to different platforms); explain how users can see who is online or offline; explain how window automatically pops up when a client receives a message), explain how each conversation is on a different thread etc.
- Variable names should be relevant and also in English;
- GUI elements should be as simple as possible (Java Swing). Netbeans cannot be used;
- Current Server.Java to be modified to allow several clients to chat to each other at once (i.e. multi-threading);
- Clients can have a private conversation (2 users) or a group conversation with (3 + users);
- Clients can send files to each other across all platforms – i.e. Windows to Mac; Mac to Linux etc. (simple file transfer. No requirement for FTP);
- Contact List – user can see when his friends are online and select them from the contact list to chat.
4. Login Window (Login.Java)
- Options: Login or Create a New User
- Details should be saved to a text document (username, email, address, password etc.) Each user will have a unique ID
5. Conversation Window (Client.Java)
- Users can have a private conversation (2 users) or a group conversation with (3 + users);
- Separate windows for separate conversations;
- Conversation window pops up when one client receives a message from anothe;
- Group chat clients can be added to existing conversation window (no requirement to prompt clients to accept that they have been added… just add them)
6. Contact List (Client.Java)
- A simple contact list should be added on the right hand side of each conversation window. This will display all program’s the registered users.
- Each client can see who is online or offline and select one or more to add to his conversation. Note – there is no requirement for icons. If user is online, their name can be in green with online in brackets - e.g. John (Online). If the user is offline, text can be in grey with offline in brackets – e.g. Paul (Offline).
Simplicity and functionality is key!