Introduction: start 4/4/2015 This is a project I decided to make when while first being introduced into programming. Upon reading a blog post made by (Coding Horror)[https://blog.codinghorror.com/] I ran into programm methodologies such as Threading, Multi-Threading, User Interface, Network Sockets. While reading the blog post of these concepts I decided to explore exactly what these concepts were and how they were used. Therefore led me to developing this IRC desktop client, which helped me understand Threads, User Interface, Java executables, and most importantly Network Sockets.
Challenges Through developing this project, Many challenges I faced were:
What exactly was a thread, what really helped was during my research imagining a spider(I know yikes strangly I'm also arachnophobic!) shooting its silk in many different spreads to cover more distance, however for example the spider projects 5 threads in each thread they each have a seperate job, which is to stick to the location that it has come into contact with, once it has finished typically, a thread signal or vibration of some sort notifies the spider of successful job completion, where in this instance the spider can reload itself(reuse) its silk to repeat the process.
Starting, like anyone knows starting a project is difficult but how do you start something when something seems extremely overwhelming because there you don't know anything, Well I was able to overcome this by getting the good 'ol pen and pencil out, and started to draft a design of what i envisioned the desktop client would look like, once I was able to get a good foundation of the concept, I proceeded to jot down, functional requirments, things such as what I want to happen(events) given A what does B do? Once that was finished, I was able to tear my large problem into smaller sub problems, taking a step at a time, researching google, and
looking up massive documentation and tutorials on how to design small peices of things, using a bottom-up approach. I would learn to make, a jPanel, understand what Jpanels were, what were layout managers, then move to componenets which started at drop down menus, then text box's and then event listeners.
*Reflection 5/15/2017 Through this project, I'm glad to have done such a project because it's laid the foundation for my understanding in many of the things i use today, such as multithreading functions to handle concurrent task, and understand how to create web servies given my knowledge of sockets. Doing such a project has even given me understanding on how to make my own server, which would be a different way of sending and recieving data.
UI: information(Functionality implemented)
- titleBar shows computer name appended to chat client
- full JmenuBar(drop down menu) strangly im also arachnophobic
- nemonic keyEvent(key press Shortcuts)
- Terminal display of incoming chat
- Terminal Display of outgoing chat
- Jlist to display current connected channels
- Clear chat button
- Jscroll pane on both Terminal windows for better visibility
- custom links to GitHub and Linkedin Here is a screen shot if intrested. run jar file to test it!