This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
Champions, last year I wrote a paper to a brazilian Java Magazine called MundoJ (formerly known as MundoJava) about the SCJD/OCMJD Certification. I now created an improved version of it and would like to share with everybody. Here's the link to the paper:
Basically, it shows how this certification is like and the steps that can be taken in order to successfully solve the assignment. In order to show how the assignment can be resolved, a fictitious assignment is presented with code samples that show how each component can be developed. It also shows considerations about domain logic patterns, design patterns, architectural patterns and how everything can be put together the simplest way. Here's how this paper is organized:
2. The Assignment
3. Solving The Assignment
3.1 Traditional Four-Tier Layered Architecture
3.2 Transaction Scripts
3.3 Domain Model
3.4 Model-Delegate Pattern
3.5 Dependency Injection
3.6 Patterns Reunion Overview
4. Implementation Steps
4.1 First Step: Implementation of the Data Access Class
4.2 Second Step: Definition and Implementation of Business Methods
4.3 Third Step: Implementation of the Application Windows
4.4 Fourth Step: Packaging the Application
5. Execution Modes
6. Project Overview
7. The Locking Mechanism
Of course, each candidate is free to make their own choices, but the main goal is to give the candidates elements that can help them make their own choices.
So, that's it. I'd really like to know what everybody thinks about it. And I really hope this helps everyone that is working on the assignment and also everyone thinking about going for this challenge and getting this certification!
I just finished reading your article. I think it gives a nice overview of the OCMJD certification process for people who just started the assignment or will start in the near future. Futhermore it combines a lot of doubts/unclear things, for which people otherwise would have make a thread on this forum, into one singular article.
One small note:
In your introduction you say that a candidate receives a JAR file containing a file called instructions.html. Nowadays these instructions are displayed on the screen when a candidate downloads the assignment. The candidate is responsible for saving this html instructions file and supply it later with the deliverables.
Hello, I just downloaded the OCMJD assignment today. It is an HTML page which you get 2 hours to copy the assignment. I copied the assignment and saved the database file to my system and will start on it immediately which is why I am perusing this forum. Thanks for the great paper Robert. I would be interested in any additional information in regards to this certification, books, advice etc.
PS-this is my first post in this site. I used this site to help me prepare for the SJCP and passed on my first attempt so I am now a certified Java Programmer . Thanks for all people who previously posted here and for the great site for us Greenhorns. I hope to continue in the trend of successful certifications and hopefully assist others on the same path.
Howdy, Greg. In the name of the JavaRanch family, I'd like to give you a warm welcome!
You are very welcome, champion. And thanks for the words!
Did you read the paper already? I tried to give the minimal elements that it takes to solve the assignment. If you pay careful attention, you'll be able to solve everything using the design proposed in the paper, even what was not shown there.
I still have to update the part where it says that you receive a JAR file.
Yes, I read the paper Robert and it is top notch. It surpassed my expectations. I was not expecting the paper to involve different approaches to the same problem from a design standpoint. It will take me a little while to fully absorb but I respect the amount of time and thought it took to put this together. I am inclined to take the initial 4 tiered approach because it seems the cleanest design to me. I will however reserve judgement until I fully analyze all approaches mentioned. Thanks for the hard work. It is much appreciated.
I have spent quite a few hours going over the assignment/project and then I read your submission again. I was thinking along the lines of a solution exactly like figure 18 in your paper. It is nice to see I am thinking correctly in this. This is an interesting problem and I initially thought the 4 tiered approach would be the simplest solution but the approach you mentioned is the correct one for this application. Nothing else really makes sense.
My network was down for most of the day today so I had to work on putting together some pieces of code which would be required no matter which approach I took as well as just getting familiar with the assignment itself. I still need more time to plan this but it is nice to get moving forward a little anyways. After reading your paper once again I respect the amount of work this took even more. I may have a question or two as time progresses. Thanks again for your hard work.
I'm very glad this is being helpful to you! But, you know, I took this certification around 3 years ago, and since then, I have spent a lot of time here. In face of some questions, I ended up thinking again and again about several aspects of the certification. Today, if I had to redo the assignment, I'd follow the proposal presented in the paper. This is the cleanest and easiest approach I could think of.
After all these years in the software development industry, what I concluded is, the less code you write to develop something, the better. There are many things that I would change in the assignment that I developed and submitted in the past. What I tried to present in the paper is the most objective and object-oriented possible solution.
If you have suggestions, or even doubts, feel free to come here and make your considerations. We are always here to try to help everybody the best possible way!
Robert, I am trying to create a similar GUI to the one in your paper. I am having trouble adding the top panel to my code and have it layout, resize etc the way it should. I posted my code in the Swing section "Having trouble adding a panel to my GUI". If you have any suggestions I would be very pleased to hear them. Thanks.
Thank you for the excellent work in writing a great paper that removes a lot of the tears and fears of OCMJD. It is such a magnum opus that the organization outline you created in your post can also be included in the document itself because it is almost like a book.
Well, I'm very glad you liked it! Thank you very much for such kind words. This is one of the purposes of this paper, that is, to clear doubts and put people on the right path. I hope you liked the design I proposed to solve the assignment.
I also hope this paper helps you clear your thoughts and become a SCJD sooner!
OCMJD surely has changed a bit since Oracle bought Sun. The things that changed are:
- The instructions.html is online, not in the provided downloaded JAR file
- The time to work on the assignment is 6 months instead of 1 year
- A mandatory course is needed listed here
The certification doesn't really test your skills in design patterns or UML, but knowing what you used during the design phase is indeed excellent learning experience.