• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

B&S 2.2.3: 380/400

 
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
This is mostly a copy/paste of an article I wrote in my blog, I hope it's OK to post it here.

One year ago I became certified as a Java Programmer. This year, I took advantage of the free voucher program that Sun offers to its employees to pass the Java Developer certification.

The Java Programmer certification tests the understanding of the language, and of its core APIs. The Java Developer certification is the next level. It tests the ability to complete a full project. I was given an assignment and had to work on it at my own pace (there's a one year time limit). Then I submitted my work, which was reviewed by an assessor. At the time of submission, I also had to take a written test at a Prometric center, where detailed questions about the code were asked. This written test is mainly to ensure that I was the one who wrote the submitted code.

The assignment is not 100% precise on all aspects, and I had to make choices. This decision-making process is also part of the grading

The Database part of the project must implement a Java interface that is specified in the assignment. The assessor runs some automated tests against that API, and the tests must pass. As Sun do not publish these automated tests, I wrote a lot of unit tests to make sure all aspects of the API were covered and worked.

It is not specified in the assignment if logging should be used. From what I saw on the JavaRanch forum, some people remove all logging code just before submission, to be safe in case there's a problem in the logging code itself. I decided to keep it, because that's what we do in "real" applications: we don't remove logging before shipping. It is possible that it lowered the score I got on the General Considerations part (see below).

I generated some UML diagrams (with NetBeans) to clarify the relationships of the different interfaces and classes, and included it in the Javadoc. I felt this made the overall structure easier to understand.

It took exactly 4 weeks after submission and written exam, to get the results.

There are different possible assignments, the one I got is known as Bodgitt and Scraper 2.2.3.

It took me 3 months to complete the work, and I estimate the time spent on it to be around 100 hours. On these, about 50 hours were the actual code writing, testing, documenting and debugging, and 50 were on doing research: on the different design patterns that could be used, on trying different locking strategies to compare performance, on trying the different network approaches and comparing them, and trying different tools to generate UML from code,... This takes time as it forced me to look for solutions that were not familiar, and this is one of the great strength of the certification : to learn new ways of solving problems, not on relying on the same solutions over and over again.

In the written exam, they asked which solution is chosen on a particular problem, and why the other options were not adopted. This means different options must be evaluated. Answers like "I used RMI because it does the job, and it's the only technology I'm familiar with" is not the best answer.

Here's the detailed scoring report I received:

This report shows the total points that could have been awarded in each section, and the actual number of points you were awarded. This is provided to give you per-section feedback on your strengths. The maximum possible score is 400; the minimum to pass is 320.

* General Considerations (maximum = 100): 90
* Documentation (maximum = 70): 69
* O-O Design (maximum = 30): 30
* GUI (maximum = 40): 31
* Locking (maximum = 80): 80
* Data store (maximum = 40): 40
* Network server (maximum = 40): 40


I got the worst score on the GUI part. This is a confirmation that GUI design is better not done by Developers, but by real Designers :-) .

Being involved in commercial Java projects on my daily work at Sun, I can tell that what is asked by the Java Developer certification matches closely with what is expected from a working professional. For example, it would be risky to try this certification without using some kind of Source Code Management tool. It is also critical to develop correct Unit Tests in parallel with the code, as well as overall tests. Good code documentation is essential, as well as end-user documentation. The ability to deliver all that is tested by the certification.

Thanks to all of you on this forum for the help.

Marc
 
Sheriff
Posts: 11604
178
Hibernate jQuery Eclipse IDE Spring MySQL Database AngularJS Tomcat Server Chrome Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi Marc,

95%, nice score

if everything goes well i will be submitting my assignment this week and take friday my essay exam. I have 1 little question: how did you handle a possible InterruptedException (if you used wait/notify/notifyAll)? and did you mentioned something in your choices.txt

Kind regards,
Roel
 
Marc M Kossa
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Roel De Nijs wrote:if everything goes well i will be submitting my assignment this week and take friday my essay exam. I have 1 little question: how did you handle a possible InterruptedException (if you used wait/notify/notifyAll)? and did you mentioned something in your choices.txt

Hi Roel,
I did not use wait/notify, I used higher level primitives that do not return InterruptedException. We can go in more details, but I wouldn't want to confuse you at that stage (wait/notify works perfectly as well).
Marc
 
Marc M Kossa
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Roel De Nijs wrote:if everything goes well i will be submitting my assignment this week and take friday my essay exam. I have 1 little question: how did you handle a possible InterruptedException (if you used wait/notify/notifyAll)? and did you mentioned something in your choices.txt

Hi Roel,
I did not use wait/notify, I used higher level primitives that do not return InterruptedException. We can go in more details, but I wouldn't want to confuse you at that stage (wait/notify works perfectly as well).
Marc
 
Bartender
Posts: 3648
16
Android Mac OS X Firefox Browser Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
congrats. You didn't use wait/notify? wow i want to know what the "higher level primitives" are.
 
Roel De Nijs
Sheriff
Posts: 11604
178
Hibernate jQuery Eclipse IDE Spring MySQL Database AngularJS Tomcat Server Chrome Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi Marc,

Just like K. Tsang curious about these "higher level primitives". But i'll stick with my approach of wait/notify, because it works perfectly, so i will not get confused

Kind regards,
Roel
 
Marc M Kossa
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I used (J2SE 6.0) java.util.concurrent.ConcurrentHashMap to hold the database, and java.util.concurrent.Semaphore to implement lock()/unlock().

Marc
 
Ranch Hand
Posts: 334
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Congratulations


sat
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
reply
    Bookmark Topic Watch Topic
  • New Topic