Thursday, November 09, 2006

Tips and trick

Some of material you will require before starting the preparation is :

1 : Java API :
java sdk 1.5 API
java sdk 1.4.2 API

2 :Java Language specification :

3: Sun Java tutorial :
Java Tutorial : 3rd edition

4: J2SDK :
j2se 1.5
j2se 1.4.2

For Starters

1 :Buy a good java book for learning java . Some books are :

a: Java :the complete reference

b: Head First Java

c: Thinking in java

2 :After learning from an introductory book , prepare from a sun certification preparatory book .

some books are :

A Programmer's Guide to Java Certification by Khalid Azim Mughal

SCJP 5.0 - Kathy & Bert

Read each chapter carefully ,make notes if you want .keep on checking objectives. And when in doubt see JLS or API .Ask questions .

3: Now once you have read the book or think you know enough , take some mock test without any external help .See if you are able to solve all questions in given time. Mock tests are good way of understanding your weak and strong areas.

some mock tests can be found here :

marcus green site

mock exam simulator

mock exam

4: Now reread the preparation books and concentrate on your weak areas. try to do as much as mock exams as you can .Ask others for mock test .There are hundreds of mock tests on net and all it takes is a simple search.

5 : Buy the SCJP2 Exam voucher from Sun. You can do it at any time .This voucher is valid for 1 year from the date of purchase.

6 : when you are consistently scoring above 90 % -95 % , you can give real exam . You need to schedule your exam at your local prometric center. You can reschedule your exam if you dont want to give it at scheduled date.

7 : In general you need to have some photo id . In center you are given a blank paper and pencil .After finishing up your exam you have to give back the paper which you used during the exam.

8 :
you have to fill a survey form before and after the exam. The time is not counted and it is not anything worth reading . So just click "i agree " button or you may read also . Dont bother about it .

9 : one important thing sleep well before exam . Dont be worried and be confident . You have to work like a compiler so you must be in good state of mind .

JavaRanch is always a good source for SCJP questions . Ask questions there and give answers. you can find some traps here

here is a link for understanding object-oriented concepts for starters.

i will update this post with some more information about exams latter.

Saturday, November 04, 2006

FREE: SCBCD 5.0 Beta Certification Exam

has announced that SCJP qualified persons can take free SCBCD 5.0 Beta Certification Exam .Beta Dates are between December 8, 2006 to January 2, 2007. And registration will start from 24 Nov .

Exams objectives are available here

Wednesday, November 01, 2006

SCJP 1.5 or SCJP 1.4 : which one to choose

Many people have asked me whether they should go for SCJP 1.5 or SCJP 1.4 . I generally suggest them to go for SCJP 1.5 . Because it is latest .And yes sometimes it matters . Many people think that SCJP1.4 is easy and SCJP1.5 is hard .Though SCJP 1.5 is definitely improved version of test it is not really hard . If someone is preparing for a certification ,then going for latest version is always good.

One argument against SCJP1.5 is that there is not enough resource available for it on Net .Though when compared with SCJP 1.4 it is true ,still enough material is available to fully prepare for exam . And with time situation is going to improve.

Sites for SCJP 1.5 :TigerTamerDB Mock Exam Questions for the JDK1.5 (Java 5) Programmer Exam : A fresh SCJP 1.5 Question every day : it covers all the exam objectives for CX-310-055 (Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0). : it includes articles about many topics that are in SCJP 1.5 : Practize Labs FREE DEMO: 25 questions : avaBeat: 2 exams with 25 questions in total : WhizLabs Free Demo (3.94MB Download)

Documentation on Enhancments in J2SE 5.0


Generics in the Java Programming Language

The For-Each Loop


Typesafe Enums

Variable Arguments

Static Imports

SCJP Tutorial by IBM Developer Works

Taming Tiger, Part 1 - An introduction to Java 1.5

Taming Tiger, Part 2 - Understanding generics

Chapter 3: Enumerated Types (PDF Format) in Java 5.0 Tiger: A Developer's Notebook

Chapter 5: Creating Varargs in Java 5.0 Tiger: A Developer's Notebook

Chapter 8: Generics in Learning Java

Chapter 6: Objects and Classes in The Complete Java 2 Certification Study Guide

Cohesion in WikiPedia

Coupling in WikiPedia

Information hiding in WikiPedia

Lesson: Object-Oriented Programming Concepts in The Java Tutorial

Abstraction, Encapsulation, and Information Hiding by Edward V. Berard

Encapsulation is not information hiding in JavaWorld

Programming With Assertions from Sun.

Using Foreach Loops in J2SE 1.5

Reference Objects and Garbage Collection

The Truth About Garbage Collection

Garbage Collection (Chapter 9 of Inside the Java Virtual Machine)

Garbage Collection and setting to null

Object finalization and cleanup

Using Finally Versus finalize To Guarantee Quick Resource Cleanup

Achieve strong performance with threads

Programming Java threads in the real world

SCJP/SCJP 5.0 Study Notes

JQPlus: Tips and Study Notes for SCJP2

SCJP2 Study Notes at

SCJP2 Study Notes at

SCJP2 Study Notes by Velmurugan Periasmy

Anand’s SCJP2 Study Notes

if you know about more links please submit .

Links to sites for SCJP

bill brogden site : Bill 's site is one of the best . It has many resource and you can find general information about java and jsp also .

marcus green site : Marcus Green mock is considered a standard for practice .It gives good experience when you are practicing for SCJP .

prometric site ( the exam conducting site): Thompson-prometric is authorised for conducting Sun Certification .From this website you can find list of authorised centers available in your city .

Java Ranch
: Java Ranch is a fun website for certification preparation .Its mock test is relatively easy and it has a good discussion forum .

Dan Chisholm's Mock Exams : This is a good site for mock exams .

Frequently Asked Questions

How is the SCJP 1.5 exam different from the SCJP 1.4

* Exam objectives : Several important new language features have been added, including enums, generics, static imports, and autoboxing/unboxing. API features added to the exam include java.lang.StringBuilder, java.util.Locale, java.util.Formater, java.util.Scanner. java.util.regex.Pattern, and java.util.regex.Matcher. Java IO features have been added, including File, BufferedReader, BufferedWriter, FileReader, FileWriter and PrintWriter. Concepts such as loose coupling and high cohesion have been added, as well as greater emphasis on encapsulation as it relates to JavaBean conventions. Bit manipulation (e.g., shifting) has been dropped.

* Number of questions: 72 (increased from 61)
* Time : 175 minutes (increased from 120 minutes)
* Passing score : 59% (increased from 52%)
* Level of difficulty : The concensus is that it is more difficult.
* Format of questions : As before, you will always be told how many options to choose. No credit is given for partial answers.

Should i go for SCJP 1.5 or SCJP 1.4 ?

the core skills in scjp1.4 and scjp1.5 are quite same . so it does not make much difference if u clear scjp1.4 or scjp1.5. but if u r a beginer , it make more sense to try scjp 1.5 as it is always better to be updated with latest features in a language

* Familiarize yourself with Sun's exam process, including objectives, registration, testing, etc. See Sun's SCJP page for details.
* If you are new to Java programming, start with a good introductory book such as Head First Java or Thinking in Java. Check the JavaRanch Bunkhouse for additional recommendations and reviews. Refer to the API documentation and the Java Language Specifications along the way.
* Once you have a foundation, study at least one good (and current) certification preparation book. (
* Use the SCJP forum to post questions, and reinforce your own understanding by answering other people's questions.
* Take as many mock exams as possible. Use these to determine where additional study is needed, and as a guide to when you are ready.

* SCJP Sun Certified Programmer for Java 5 Study Guide by Katherine Sierra and Bert Bates (K&B).

* Head First Java By Bert Bates and Kathy Sierra

* Thinking in Java (3rd Edition) By Bruce Eckel

If I fail, can I take the exam again?

Yes, but you will need to purchase another voucher and wait 2 weeks before retesting. See Sun's FAQs for more details.

What are the pre- requisite for SCJP ?

There is no pre-requisite to appear for the exam, other than knowing
Java language concepts and syntax thoroughly.

What are the types of question that come in exam ?

You will find three types of questions on this examination:
* Multiple-Choice Questions with a Single-Correct Answer
* Multiple-Choice Questions with Multiple-Correct Answers
* Fill-In Questions Requiring your Typed Response.

Why there are many versions of exam ?

java is an evolving language . it was released with some new features , spme bugs and a lot that was not there. so at sun , people work to constantly improve the language , include new features ( as demanded by community) . when there are some major changes , a new sdk is released which supports the new features ( as well as old ones ) . these are named jsdk1.2 , jsdk1.3, jsdk 1.4 ,jsdk1.5 ....( with minor versions also). thats why there are various certifications . the old ones were scjp 1.2 and scjp 1.3. scjp1.4 and scjp1.5 are the exams which reflects these changes with new objectives ,and questions based on these new features.

How much time is required for certification ?

depends on person ability . though for someone who already has knowledge of java , it will b around 1 month.

Is training from an institute is required ?

i dont think training from any institute is necessary . the only thing such institute do is that , they can give u more material and they have experience in dealing with persons trying to give exam .

Objectives of SCP 5.0 (SCJP 1.5)

Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0 (CX-310-055)

Exam Objectives

Section 1: Declarations, Initialization and Scoping

  • Develop code that declares classes (including abstract and all forms of nested classes), interfaces, and enums, and includes the appropriate use of package and import statements (including static imports).
  • Develop code that declares an interface. Develop code that implements or extends one or more interfaces. Develop code that declares an abstract class. Develop code that extends an abstract class.
  • Develop code that declares, initializes, and uses primitives, arrays, enums, and objects as static, instance, and local variables. Also, use legal identifiers for variable names.
  • Develop code that declares both static and non-static methods, and - if appropriate - use method names that adhere to the JavaBeans naming standards. Also develop code that declares and uses a variable-length argument list.
  • Given a code example, determine if a method is correctly overriding or overloading another method, and identify legal return values (including covariant returns), for the method.
  • Given a set of classes and superclasses, develop constructors for one or more of the classes. Given a class declaration, determine if a default constructor will be created, and if so, determine the behavior of that constructor. Given a nested or non-nested class listing, write code to instantiate the class.

Section 2: Flow Control

  • Develop code that implements an if or switch statement; and identify legal argument types for these statements.
  • Develop code that implements all forms of loops and iterators, including the use of for, the enhanced for loop (for-each), do, while, labels, break, and continue; and explain the values taken by loop counter variables during and after loop execution.
  • Develop code that makes use of assertions, and distinguish appropriate from inappropriate uses of assertions.
  • Develop code that makes use of exceptions and exception handling clauses (try, catch, finally), and declares methods and overriding methods that throw exceptions.
  • Recognize the effect of an exception arising at a specified point in a code fragment. Note that the exception may be a runtime exception, a checked exception, or an error.
  • Recognize situations that will result in any of the following being thrown: ArrayIndexOutOfBoundsException,ClassCastException, IllegalArgumentException, IllegalStateException, NullPointerException, NumberFormatException, AssertionError, ExceptionInInitializerError, StackOverflowError or NoClassDefFoundError. Understand which of these are thrown by the virtual machine and recognize situations in which others should be thrown programatically.

Section 3: API Contents

  • Develop code that uses the primitive wrapper classes (such as Boolean, Character, Double, Integer, etc.), and/or autoboxing & unboxing. Discuss the differences between the String, StringBuilder, and StringBuffer classes.
  • Given a scenario involving navigating file systems, reading from files, or writing to files, develop the correct solution using the following classes (sometimes in combination), from BufferedReader,BufferedWriter, File, FileReader, FileWriter and PrintWriter.
  • Develop code that serializes and/or de-serializes objects using the following APIs from DataInputStream, DataOutputStream, FileInputStream, FileOutputStream, ObjectInputStream, ObjectOutputStream and Serializable.
  • Use standard J2SE APIs in the java.text package to correctly format or parse dates, numbers, and currency values for a specific locale; and, given a scenario, determine the appropriate methods to use if you want to use the default locale or a specific locale. Describe the purpose and use of the java.util.Locale class.
  • Write code that uses standard J2SE APIs in the java.util and java.util.regex packages to format or parse strings or streams. For strings, write code that uses the Pattern and Matcher classes and the String.split method. Recognize and use regular expression patterns for matching (limited to: . (dot), * (star), + (plus), ?, \d, \s, \w, [], ()). The use of *, +, and ? will be limited to greedy quantifiers, and the parenthesis operator will only be used as a grouping mechanism, not for capturing content during matching. For streams, write code using the Formatter and Scanner classes and the PrintWriter.format/printf methods. Recognize and use formatting parameters (limited to: %b, %c, %d, %f, %s) in format strings.

Section 4: Concurrency

  • Write code to define, instantiate, and start new threads using both java.lang.Thread and java.lang.Runnable.
  • Recognize the states in which a thread can exist, and identify ways in which a thread can transition from one state to another.
  • Given a scenario, write code that makes appropriate use of object locking to protect static or instance variables from concurrent access problems.
  • Given a scenario, write code that makes appropriate use of wait, notify, or notifyAll.

Section 5: OO Concepts

  • Develop code that implements tight encapsulation, loose coupling, and high cohesion in classes, and describe the benefits.
  • Given a scenario, develop code that demonstrates the use of polymorphism. Further, determine when casting will be necessary and recognize compiler vs. runtime errors related to object reference casting.
  • Explain the effect of modifiers on inheritance with respect to constructors, instance or static variables, and instance or static methods.
  • Given a scenario, develop code that declares and/or invokes overridden or overloaded methods and code that declares and/or invokes superclass, overridden, or overloaded constructors.
  • Develop code that implements "is-a" and/or "has-a" relationships.

Section 6: Collections / Generics

  • Given a design scenario, determine which collection classes and/or interfaces should be used to properly implement that design, including the use of the Comparable interface.
  • Distinguish between correct and incorrect overrides of corresponding hashCode and equals methods, and explain the difference between == and the equals method.
  • Write code that uses the generic versions of the Collections API, in particular, the Set, List, and Map interfaces and implementation classes. Recognize the limitations of the non-generic Collections API and how to refactor code to use the generic versions.
  • Develop code that makes proper use of type parameters in class/interface declarations, instance variables, method arguments, and return types; and write generic methods or methods that make use of wildcard types and understand the similarities and differences between these two approaches.
  • Use capabilities in the java.util package to write code to manipulate a list by sorting, performing a binary search, or converting the list to an array. Use capabilities in the java.util package to write code to manipulate an array by sorting, performing a binary search, or converting the array to a list. Use the java.util.Comparator and java.lang.Comparable interfaces to affect the sorting of lists and arrays. Furthermore, recognize the effect of the "natural ordering" of primitive wrapper classes and java.lang.String on sorting.

Section 7: Fundamentals

  • Given a code example and a scenario, write code that uses the appropriate access modifiers, package declarations, and import statements to interact with (through access or inheritance) the code in the example.
  • Given an example of a class and a command-line, determine the expected runtime behavior.
  • Determine the effect upon object references and primitive values when they are passed into methods that perform assignments or other modifying operations on the parameters.
  • Given a code example, recognize the point at which an object becomes eligible for garbage collection, and determine what is and is not guaranteed by the garbage collection system. Recognize the behaviors of System.gc and finalization.
  • Given the fully-qualified name of a class that is deployed inside and/or outside a JAR file, construct the appropriate directory structure for that class. Given a code example and a classpath, determine whether the classpath will allow the code to compile successfully.
  • Write code that correctly applies the appropriate operators including assignment operators (limited to: =, +=, -=), arithmetic operators (limited to: +, -, *, /, %, ++, --), relational operators (limited to: <, <=, >, >=, ==, !=), the instanceof operator, logical operators (limited to: &, |, ^, !, &amp;&, ||), and the conditional operator ( ? : ), to produce a desired result. Write code that determines the equality of two objects or two primitives.