These are frequently asked questions relating to the Sun Certified Java Developer certification and the common answers to them.
You can ask any questions about the SCJD exam in the JavaRanch SCJD discussion forum
Frequently Asked Questions
You may not describe or talk about the questions you saw on any of the Sun exams - see the JavaRanch Policy on Real Questions for further details. (http://www.javaranch.com/realquestions.jsp)
For questions / discussions on the assignment, in general we will allow discussion where members are trying to:
But we will not allow posting major parts of a solution. For example, you may not post your entire code for locking and unlocking records - this is a major section (currently worth 20% of the assignment) and sections of such code will be removed from any post. Posting just one method (e.g. the lock() method is usually considered reasonable).
There are multiple reasons for this policy:
What other certications do I need before I go for the SCJD certification?
You must already be certified as a Sun Certified Programmer (any version).
There are several schools of thought...
Of course, SCJD is the friendliest forum to visit
The SCJD certificate does not show the score. However, a nice percentage always looks good on a resume.
How do I sign up for the Assignment?
You need to purchase the assignment - you may have to contact Sun. Contact details are on http://suned.sun.com/ - in many cases you can purchase the assignment on your local countries' website.
Where can I purchase the assignment in <your country>?
Take a look at the Sun World Training centers website (http://www.sun.com/training/world_training.html). There should be an office in a country close to you - you will be able to purchase the assignment through them. Frequently they provide the ability to purchase the assignment online
Where can I find information on Cost / Location of exam sites in <your country>?
Should I purchase both parts (the exams and assignment) at the same time?
You should be aware that as of February 2009 there is a 12-month time limit on completing the assignment.
Vouchers are valid for different lengths of time from country to country. To the author's knowledge, this can vary from 3 months to 1 year (other periods may be possible).
There have been reports of some Sun offices telling candidates that they must purchase the exam voucher at the same time as they purchase the assignment. This is not the case in all Sun offices though.
My recommendation would be to only purchase each section when you are ready to use it. That way you do not have to worry about any time limits on each section.
See also the question: My voucher for the exam is about to expire, what can I do?
What site do I use to download / upload my assignment and to see what score I got?
Thanks to Ravi Appala for passing on Sun's response to an email regarding which sites to use:
We have launched two Certification databases. The Sun Certification I7 database manages all of your certification exams:
whereas the Assignment Watcher specifically monitors our two assignment based exams:
You may only download and upload your assignments in the Assignment Watcher. Furthermore, you may only view assignment comments in this database.
Only your score will appear in the Sun Certification I7 database.
How should I name my submission jar file?
The website where you will perform the upload has these directions in the upload screen, but here is a quote from that page
My voucher for the exam is about to expire, what can I do?
Check the wording on the back of the voucher. It typically has words to the effect of:
So register for the exam before the voucher expires, then contact prometric and defer the exam. You may defer multiple times.
Be aware that Prometric and the test centers themselves have requirements as to how much notification must be given before defering an exam. So dont leave it to the last minute.
I purchased the assignment, but I have not received it yet, what do I do?
Sun do not send the assignment to you, you must download it.
See the question What site do I use to download / upload my assignment and to see what score I got? for which website to use, and try and download it. If you cannot download it, you will be told who to contact, and what information to provide them in order to get permission to download it.
Help - I cannot upload my assignment
This is a very common problem. The first day you try to upload your assignment, you will get an error saying that you don't have permission to upload the assignment. When you see this error you should also see an address to write to in order to get your permissions updated (mailto:SunCert@prometric.com). By the next day you should be able to upload your assignment.
Help - I cannot upload my assignment and I have scheduled my exam for today
This happens quite often. Currently Sun are kind enough to allow candidates to upload after sitting the exam. Make sure you do send an email to prometric to tell them that you cannot upload, and keep a copy of the email. And upload as soon as Prometric tell you that they have fixed your permissions!!!
Do not rely on this happening though - Sun do object if people deliberately plan to take the exam before the upload though, and if they feel that this situation is being abused, they may force people to follow the rules.
Help - I uploaded my assignment and it says I failed, with no score and no comments
You cannot fail the Part II exam (unless you leave questions unanswered), however Prometric sometimes marks the test as failed in the cert manager database. There have been reports of it having something to do with timing: when they think you did the exam / when they pass the exam data to Sun / when Sun acknowledge it.
Your assignment and your exam will be sent to an examiner, and eventually you will see your score, at which time you will be able to see whether you have passed or failed. Until then unfortunately you may still see the Failed status with no comments or explanations.
If you are still nervous, you could write to Prometric and/or Sun and get their assurances as well. (And if you get a better explanation for why you have got a "Failed" status, please update this FAQ).
If you fail the assignment, you should either get a description of the major area you failed (e.g. missing file) or you should get a points break down for each section showing where you lost points. If you did not get either of these then you have to write to Sun and get clarification.
How long do I have to complete the assignment?
The date on your voucher for the assignment indicates the latest date when you must download the assignment. Once you download the assignment, you have up to 12 months to complete it. If you buy your voucher for the Essay portion of the SCJD, then you will have one year from the date of the Essay Voucher to take the Essay exam. The Essay portion voucher is not related to the assignment.
In confirmation, we have the following statement from Sun thanks to Andy Michalec:
You may submit your assignment at your convenience. We only recommend that you submit within 18 months after the new platform has been introduced.
How Long will it take me to complete the assignment?
The current assignment provides you with a data file, an interface you must implement in order to work with that file, and some software specifications telling you what your application must do.
To complete this assignment you must:
If you are doing all this everyday in your normal job then you may find this a very simple exercise, and may be able to complete it in under a month full time.
Very few people do every single one of those tasks every single day, so it is more realistic to look at a minimum of 6 - 8 weeks of work at 40 hours per week.
Most candidates use this assignment as a learning exercise, picking up techniques and using APIs that they do not normally deal with. They also take the time to try different ways of accomplishing a given task to see which one works better / is easier to understand / is easier to maintain / is more interesting. This is the way that I would recommend people approach this assignment - it will prove more interesting, and you will get more out of it. But then you may find that doing the assignment may take longer as you explore different facets.
A few candidates are only doing the assignment for the certificate at the end - sometimes a requirement for a job. It is not unheard of for such a person to get the bare minimum done in a couple of weeks (and get a very low pass mark).
Sun says it takes 4-6 weeks to grade my assignment, it has been over 6 weeks. What should I do?
For a start - did you take the essay exam after uploading the assignment? Your assignment will not be looked at until after you have completed the part II essay exam.
Should I wait to find out my score from the assignment before taking the essay exam?
The answers you write in your essay exam, and your submitted assignment, are handed together to the assessor for assessment. So until you have completed your essay exam nobody will look at your assignment.
The reason for the exam is quite simple: Sun need some way to prove that you wrote the code that you submitted. The logic (as I understand it) works like this: When you go into the testing center, you must provide identification to prove who you are. You will then be asked four questions that can only be answered correctly by the person who wrote the code. If the answers you give match the code you submit then the assessor can be reasonably certain that you did write your submitted code.
Since the questions on the exam are based on the code that you wrote (for exampe: did you choose RMI or Sockets for networking) it is highly unlikely that you could fail the exam unless you didn't write the code. This appears to be Sun's view as well, as they only list the following three possible parts of the SCJD assignment:
If you fail some part of the assignment, then you only have to resubmit the assignment. You do not have to resit the exam.
How do I find out why I lost points?
Sun does not provide you any specific detail as to the reasons for point grading. They do break down the scoring by sections, which you can see on the Assignment Watcher web site (see question above on which web sites to use).
Will I get an email when I pass / fail?
No - you have to check the website on a regular basis to see whether you have passed or failed. You will receive the certification pack sometime after you pass, but this may not be for a week or two after you passed.
How do I contact Sun Education / Prometric?
Why are there add and delete methods in the data class when we don't need it?
Originally the assignment had an added requirement of creating a conversion program to convert a text file into a data file like db.db. In order to do this you would have needed these methods in the Data class.
This may also be a way for Sun to test whether you have implemented the provided interface correctly, or whether you have done the bare minimum for your assignment.
I don't have access to a UNIX box, do I have to test it on UNIX?
In the Instructions.html document that came with the Fly By Night Services assignment it states that you must provide:
In the Instructions.html document that comes with the new assignment, there is typically an instruction requiring you to provide:
This could mean that they take into consideration what platform you used and probably try it on that platform. Many posts have occured about this, and we haven't found any cases where there was a problem of not having access to a UNIX box.
What fields should I include in the Fly By Night Services GUI's search functionality?
In the instructions.html. It is a little unclear as to the minimum fields necessary to search.
In one section:
So you must have at least origin and destination.
Then it also states
In this example Carrier is also there. Here is where the confusion comes in. In the first statement carrier is not included, but here it is.
My take is to also include carrier.
My assignment says I can't use AWT components, but all layouts are in the java.awt package - what do I do?
While it is true that the layouts (and Font and Color classes) are in the java.awt package, they do not extend java.awt.Component (and are therefore not Components) and can be used in your assignment.
Personally I suspect that the prohibition on using ant AWT Component was suggested at the time that the SCJP exam required candidates to know what was a java.awt.Component and what wasnt (wasn't that fun ). Since candidates who passed SCJP 1.4 or SCJP 1.5 no longer need to know that class heirachy, the restriction on using ant AWT Component(s) only seems to confuse people.
If you want to use something that is not explicitly in the swing packages, take a look if it inherits from the java.awt.Component - if not, you can use it.
How do I implement the Model-View-Controller pattern for the GUI?
Both will show you examples of how to implement the MVC Pattern.
Which version of SDK should I use?
Your instructions should have something like this:
(...) the submission that you return must have been tested and shown to work under a production (not development) version of the Sun Microsystems' Java 2 plataform and that plataform must not have been superseded by a new production version for more than 18 months by the time you make your submission.
You may use the link in the next question and do the math. When in doubt, just use the latest version.
Example calc: 1.5.0 was released on Sept 29, 2004, superseding 1.4.2. However you can still use 1.4.2 until it has been superseded by 18 months, so adding the 18 months to Sept 29, 2004 means that you can still use 1.4.2 until March 29, 2006.
From April 2006 you must use at least JDK 1.5. You can no longer use 1.4.2 or prior versions.
How can I find out when a version of the JDK was released?
Is there a new exam?
No, there is only one SCJD exam. There are several assignments you may receive, however there is only one exam.
How may assignments are there?
There are three known assignments:
FBNS is the old assignment. The other two are the new assignments. To differentiate between the old assignment and the new assignments, the topic line for questions relating to the old assignment is usually prefixed by "FBNS:".
The assignments are very similar in scope, and most of the same issues apply for all assignments. In all of them, you have to write a GUI (using swing and a JTable), and connect it to a database either directly or via a network. For the network you must choose either RMI or Serialized Objects over Sockets.
Although there are only three known assignments, there are different versions of these assignments, so the instructions for your assignment may be different than the instructions for another user even if they appear to be doing the same assignment. Sun have the following warning in the instructions you receive with the assignment:
To give some examples of the differences:
When will the assignments be upgraded ?
Taken from a SUN response on this exact question.
We will be upgrading our SCJD certification, however we do not have set date at this time. When we do set a date we will also be recruiting candidates for our beta. Posting will be made on our Certification site and on JavaRanch.
I have downloaded two different assignments - which one should I do?
Several people who downloaded one assignment later tried to download the assignment a second time, and found that they received a different assignnment.
For a definitive answer, you should contact Sun.
Those members who did contact Sun were told that they may continue with the old assignment.
Has the marking changed between the old assignment and the new assignment?
Yes, the old assignment had a total of 155 marks, with a pass mark of 124 (80%).
The new assignment has a total of 400 marks with a pass mark of 320 (80%) .
The marks assigned to each section are (note: these may not be in the same order as specified by Sun):
What is 'General Considerations' / 'xxx'?
The old assignment broke the sections down as follows:
Why do we care about the magic cookie?
Different assignments have different schemas (and meta-data), and thus they have different magic cookies. Take a look at the following two examples of meta-data and schemas (taken from real assignments):
4 byte numeric, magic cookie value. Identifies this as a data file 2 byte numeric, number of fields in each record
Schema description section. Repeated for each field in a record: 1 byte numeric, length in bytes of field name n bytes (defined by previous entry), field name 1 byte numeric, field length in bytes end of repeating block
That has a different magic cookie than the one used for the following meta-data and schema:
Start of file 4 byte numeric, magic cookie value. Identifies this as a data file 4 byte numeric, total overall length in bytes of each record 2 byte numeric, number of fields in each record
Schema description section. Repeated for each field in a record: 2 byte numeric, length in bytes of field name n bytes (defined by previous entry), field name 2 byte numeric, field length in bytes end of repeating block
If I write my Data class such that it checks the magic cookie for the first example, and expects the meta-data and schema for that first example, then it will be able to read any file that has the same magic cookie, meta-data and schema. But as you can easily see, without the check on the magic cookie, the Data class would quickly fail when trying to read the second file format - the field sizes are different, and some fields are different.
Can't we synchronize the update() method and ignore the lock() methods? Why do we have lock() methods in the Data class?
Most of the file operations require some synchronization, as they involve accessing a single shared resource. Even worse, they often involve two operations on that single shared resource, where the two operations must behave atomically. That is, you would normally perform a seek() and then a write(), however you do not want any other thread to perform a seek() between when you performed your seek() and when you perform your write(), otherwise you will end up writing in the wrong location within the file.
(We will ignore for the moment the question of whether it is better to synchronize the entire update() method in Data class, or whether to just put the seek() and write() methods within a syncronized block.)
So having somehow synchronized the access to the file, we still have a problem of two clients believing that a record is available, and both trying to update it. That is:
now client B has overwritten client A's booking
This is where the logical record locking available through the lock() and unlock() methods of the Data class come in - in the above scenario, if client A had logically locked record 5 prior to checking availability, and client B had attempted to locally lock record 5 prior to checking availability, then client B would be blocked until client A had finished - no more problem.
How can I test my Data class/locking mechanism to make sure it is working properly?
In http://www.coderanch.com/t/427863/Developer-Certification-SCJD/certification/Tests-Data-class-locking-mechanism, you can find tests for the main functionalities of the Data class (such as creating or updating records) and also for the locking mechanism.
How can I test my business service?
In http://www.coderanch.com/t/484954/Developer-Certification-SCJD/certification/Test-your-business-service, you can find a test for the book-method of your business service.
How can I automatically build the submission jar (and test if every file is in the correct directory)?
In http://www.coderanch.com/t/450629/Developer-Certification-SCJD/certification/Submission-Jar-test-case-Ant, you can find an Ant build script that will automatically build your submission jar. You can find also a JUnit test case to validate the structure of your submission jar (and also some source checks).
Is there a tool I can use to read the .db file I received with my assignment?
In http://www.coderanch.com/t/445690/Developer-Certification-SCJD/certification/Database-file-reader, you can find a simple tool that reads the content of the .db file received along with the instructions of your assignment. The goal of this tool is to give people starting with the development an idea of how the .db file is organized and how it can be read.