Java™ certification is the process by which Sun tests your level of knowledge of the Java programming language, its libraries, and the platform as a whole. Multiple levels of certification exist, with the first level involving a multiple choice test to prove your competency. To pass the test, you need to know what the objectives are and be able to apply them. You can take the exam at any authorized Prometric training center (they're located around the world). Table 1 has the exam details.
Table 1. SCJP 5.0
| Exam number: CX-310-055 |
| Prerequisites: None |
| Exam type: Multiple choice and drag and drop |
| Number of questions: 72 |
| Passing score: 59% (43 of 72) |
| Time limit: 175 minutes |
| Total cost: US$150 (or locally priced) |
The seven categories of objectives for the exam are as follows:
- Declarations, initialization, and scoping
- Flow control
- API contents
- Concurrency
- Object-oriented concepts
- Collections/generics
- Fundamentals
Don't worry too much about the order; it's simply how the objectives are described on Sun's Web site for the exam. Treat it more as a study guide for what you need to know. In the following sections, I'll look at each objective in more detail.
Declarations, initialization, and scoping
The initial section describes everything you need to know
about the basics of the Java programming language. Expect
to be tested on covarient return types, JavaBean
naming conventions, and the ability to read nested class listings.
Here is also where you are expected to develop classes
and interfaces, understand abstract classes, deal with the
differences of static and non-static methods and variables,
and work with constructors and return values. There's nothing here that should sound
too complicated to an experienced developer, but there are some things thrown in to trip you up. For example,
don't assume that just because code lines up at the same
tab stop that it is a method for the same class. Instead, ignore white space and tab stops when reading
code. Expect little tricks like that to try to confuse you. Remember: follow the {}s.
Most people should find this section easier than the others, having to deal with the familiar for-loops, while-loops, and do-while loops. However, it also includes content about the assertions and for-each loops. The other big section of content to explore here is exception handling. If you have a good grasp of try-catch-finally and where exceptions come from, you should do fine here.
This topic is mostly a catchall for those that don't fit elsewhere. It might require a good amount of study time if you have not used certain areas of the platform. Most of you should be familiar with working with the I/O streams for bytes and characters, but some of you might be unfamiliar with object serialization. You may be less familiar with locales and formatting dates and numbers.
The 1.4 release introduced regular expression handling, and it is covered here too. Also, there is the different
primitive wrapper classes with autoboxing/unboxing and the
string handling classes of String,
StringBuffer, and the new StringBuilder.
If you aren't familiar with StringBuilder, be
sure to learn how it is different from StringBuffer.
Lastly, there is the reading and writing of formatted input and output using the new Scanner and Formatter classes. Because of the broad nature of this topic, don't feel like you should spend an equal amount of time studying each; give yourself at least twice as long for this section.
The concurrency section is not about the new
java.util.concurrent package. Instead, it is
about understanding the use of Thread and
Runnable, along with the proper use of
synchronization, wait(), notify(), and notifyAll(). You should
know how and when to lock objects properly when
accessing critical sections of code.
The object-oriented concepts section requires that you have a good understanding of object-oriented programming principals and practices, like when to use inheritance, how to implement is-a and has-a relationships, and the differences in overriding and overloading methods. If you understand why you want loose coupling tied to high cohension and can describe its benefits, you should do well here.
One of 5.0's bigger additions is with
generics. You'll need to understand the differences
between the various collection types, when to use each, and
the importance of overriding both hashCode and equals. You'll need to know how to write generic methods and classes -- not just
use them. You should expect to be tested on dealing with sorting through both the
Comparable and Comparator interfaces.
If you haven't used generics much, you should
spend some time focusing on this area.
The fundamentals section requires you to understand various key aspects of the language, tools, and underlying virtual machine. You can expect questions on garbage collection, operator precendence and usage, access modifiers, JAR files, and the class path. Be sure you know the difference between primitive and object references and the autoboxing features found in 5.0.
The SCJP exam does not require that you know anything about graphical programming -- no layout managers, no event handling, no Swing. These topics are saved for a later exam in the certification process.
If you are already certified for 1.4 or a prior standard edition release, you don't have to take the full exam. Sun offers an upgrade option. The objectives of the exam are the same seven as the main exam, but it's assumed that you already have a basic level of comprehension. You still need to know about new concepts like generics, and depending upon from what version you are upgrading, you might also need to understand newer concepts like regular expressions, introduced with 1.4 (see Table 2).
Table 2. SCJP 5.0, upgrade exam
| Exam number: CX-310-056 |
| Prerequisites: Prior SCJP certification |
| Exam type: Multiple choice and drag and drop |
| Number of questions: 46 |
| Passing score: 58% (27 of 46) |
| Time limit: 105 minutes |
| Total cost: US$100 (or locally priced) |
You can prepare for certification in many ways. For those into self-study, there is the typical buy-a-book approach. Be sure to consider the "used" market, too, as many people don't feel the need to keep these books after they've passed the test. Another self-directed option is the online exam simulators, free or otherwise. Here you get to try out the typical exam format in the comfort of your own home. If you're looking for someone to study with, consider participating in online study groups and forums like Java Ranch or in-person groups from your local Java User Group (JUG). Finally, there are university or professional training companies. While this option is the most expensive, you might be able to convince your employer to pay.
Once you become a Sun Certified Java Programmer (SCJP), your next step depends on your personal desires and objectives. For instance, for mobile application developers using J2ME, there is the Sun Certified Mobile Application Developer (SCMAD). For enterprise developers, Sun offers certification options, too, but you may find certification through a specific vendor (such as IBM's Professional Certification Program) more valuable. Test types and costs vary by vendor.
Learn
- Course catalog: Sign-up for the exam using Sun's course catalog.
- Taming Tiger archives: Read about 5.0 features in the Taming Tiger archives here at developerWorks.
- Java certification success, Part 1: SCJP: An excellent tutorial for the 1.4 exam.
- Professional Certification Programs: Learn about IBM's Professional Certification Programs here.
- Java Ranch: A great place to find support from others looking to be certified.
- Marcus Green's Certification home: Another great site with many resources related to certification.
- Java Users Group (JUG): Join one and learn from others who became certified.
- Meetup: Meet up with a Java developer near you.
- The Java technology
zone: Find articles about every aspect of Java programming.
Get products and technologies
- J2SE 1.5: Download J2SE 1.5 from the Sun Developer Network.
Discuss
- developerWorks blogs: Get involved in the developerWorks community.

John Zukowski conducts strategic Java consulting with JZ Ventures, Inc. and is working with SavaJe Technologies to develop a next-generation mobile phone platform. His latest books are The Definitive Guide to Java Swing, Third Edition (Apress, June 2005) and Mastering Java 2, J2SE 1.4 (Sybex, April 2002)