Before I dive into discussing my design for some parts of the certification, I’m sure not everyone’s heard of this certification, so an introduction is necessary. So the SCJD (Sun Certified Java Developer) is one of the 3rd level certifications of Sun’s group of Java Certifications.
It’s actually a 2 part certification…
- The application. You build and submit an application built strictly using the J2SE library.
- An essay exam where you justify design decisions you made while building the application.
Why it appealed to me
What appealed to me about his certification is that it required the building of an entire application. This is something that I’d never done before; I’d never built an entire application from scratch by myself. I had always just wrote a class or component here or there. So I found this to be fairly enticing as a learning experience, as I wanted to prove to myself that I could do it.
The requirements (at a high level)
So the task for me was to build a hotel reservation application for a company that sells hotel rooms. The application is to be used by a group of CSRs (Customer Service Reps) to search and book hotel rooms. Essentially, the application must allow the CSRs to find a hotel room based on certain criteria and reserve that suite for a customer.
So the top level features that have to be implemented are…
- A client with a GUI that accesses the database.
- A data layer that includes search and locking functionality.
- A network layer that provides remote access to the database.
Certain aspects of the assignment make it a bit more complicated. For example, that you cannot use any libraries or technologies outside of the basic J2SE libraries. That, for me anyway, is what made this certification very time intensive. Think about it. How difficult would it be for us to design applications at Intelliware without some of the open source libraries we use? Scary, very scary.
Some Design Elements
Here are a few things I had to learn or strengthen my knowledge of to complete the application.
- Swing and GUI design.
- GUI component event handling.
- Synchronization and thread safety.
- Design Patterns: MVC, Proxy, Adapter, Singleton and Factory.
My next post will start off the design with the overall architecture of the application: MVC.