This week's book giveaway is in the Servlets forum.
We're giving away four copies of Murach's Java Servlets and JSP and have Joel Murach on-line!
See this thread for details.
The moose likes Book Reviews and the fly likes Mike Meyers' Certification Passport Java2 by Cindy Glass et.al (Osborne/McGraw-Hill) Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Books » Book Reviews
Bookmark "Mike Meyers Watch "Mike Meyers New topic
Author

Mike Meyers' Certification Passport Java2 by Cindy Glass et.al (Osborne/McGraw-Hill)

Johannes de Jong
tumbleweed
Bartender

Joined: Jan 27, 2001
Posts: 5089
Author(s) : Cindy Glass, Jane Griscti, Margarita Isayeva, Ajith Kallambella, and Kathy Sierra
The book combines easy readability with a condensed format. It has a casual, friendly style. I liked the organization of the book including its exam tips and links to more information.
The individual chapters in this book are a good resource for individual topics covered on the SCJP2 exam, but it suffers from lack of cohesiveness. Some chapters cover topics in detail while other chapters limit discussion specifically to what is covered on the exam. Some chapters repeat some information that is contained in other chapters, which is good if you are only reading that chapter. The repetition also helps to solidify the concept when you are reading the book straight through. Some chapters contain a lot of code demonstrating the concepts, while others contain very little code. However, individually all the chapters were very clear in their presentation of the subject at hand. And seeing the organization of the authors' thoughts helped clarify many of the concepts that previously had seemed opaque after reading other exam prep books.
The index was not very useful when I used it to try to find a section I knew I had read but couldn't remember where it was in the book.
The book comes with a CD containing a couple of mock exams. You must install it to take the exam, and it has a few bugs (missing words in the explanations).
On the whole I found this book to be detailed, complete, compact, accurate, and useful.
(Marilyn de Queiroz - Sheriff, November 2001)
More info at Amazon.com
More info at Amazon.co.uk
More info at FatBrain.com

Shivaji Marathe
Ranch Hand

Joined: Jan 11, 2002
Posts: 203
I got this book after reading this review and others on Amazon. In just under an hour of attempting only the questions at the end of each chapter, I came across several errors- some are typos and I am willing to concede that the authors did not have much control. But some are glaring mistakes such as "the arguments to switch statements must be either literals or final variables.( Chapter 7, flow control) ". I have read 3 other books and none of them said so. The JLS says

The type of the Expression must be char, byte, short, or int, or a compile-time error occurs.

So I tried out the example from the book itself. Of course all of the options that they have listed as wrong ( the integer/byte/char/short options only) work beautifully. I am using JDK1.3.1 and I do not think it is a bug in jdk 1.3.1.
Waste of my money and time. Stick with RHE book if you are looking for definitive information on topics covered in the exam.
[ January 16, 2002: Message edited by: Shivaji Marathe ]
Cindy Glass
"The Hood"
Sheriff

Joined: Sep 29, 2000
Posts: 8521
Originally posted by Shivaji Marathe:
such as "the arguments to switch statements must be either literals or final variables.( Chapter 7, flow control) ".

Well, I don't know where you got that quote, but it did not come out of this book. The word "arguments" is not even used during the discussion of Switches, not even in the explanations of the questions. The only reference in the section on switches to literals or final variables is:

The case-expression must be a constant expression whose value can be calculated at compile time. This means it can include only literals and variables defined as final and initialized using a compile-time constant expression.

This is a true statement.
Notice that we are talking about the labeling of the case statements, NOT the switch expression, which YOU are talking about.
However, any if you can list any typos that you found, we will be happy to get those corrected in the next printing - which is coming up very soon. Thanks.


"JavaRanch, where the deer and the Certified play" - David O'Meara
Mapraputa Is
Leverager of our synergies
Sheriff

Joined: Aug 26, 2000
Posts: 10065
There are two kinds of expressions in the switch structure. One appears in a switch statement itself, others in case statement(s). If you say "the arguments to switch statements" it's not clear which expression you mean. Is "the arguments to switch statements must be either literals or final variables" an exact quote? If so, I was not able to find it. What the book said is (p. 220-221)
"switch (expression)
The expression must result in a value of byte, char, short, or int type
Case expression:
... The case-expression must be a constant expression whose value can be calculated at compile time. This means it can include only literals and variables defined as final and initialized using a compile-time constant expression."
The JLS says
The type of the Expression must be char, byte, short, or int, or a compile-time error occurs.

The JLS says it regarding the expression in a switch statement. As for case expression, the JLS calls them "case constant expression". "... it can include only literals and variables defined as final and initialized using a compile-time constant expression" is the same idea spelled out.
Shivaji, which example works beautifully? We should check. Is it given in the book? I did not find one that matches your description. Since it's going to be a technical discussion, maybe we can continue it in one of our certification forums?


Uncontrolled vocabularies
"I try my best to make *all* my posts nice, even when I feel upset" -- Philippe Maquet
Shivaji Marathe
Ranch Hand

Joined: Jan 11, 2002
Posts: 203
OOPS! My fault. I was getting frustrated by the typos and errors, and did not pay attention to the difference between case expression and switch expression. Sorry!
Here are some of the errors that I noticed so yesterday.
Chapter 1 Q 10, The question says seelct 4 answers. The explanation lists only 3. And there are only three correct answers.
Chapter 2 Q 9, correct answers are A&B. The book lists A and D as correct answers and then proceeds to give expanation of how C and D are wrong.
Chapter 6 Checkpoint - page 207. The second last bullet on the page reads "In every case, the type of the operands for the binary operator must be a primitive numeric type or a compile time error occurs". No mention of the exception in the case of the + operator and the String operand. This is mentioned on the following page, after several other bullet points. If there are exceptions to a rule,isn't it appropriate to list them right after the rule?
Chpater 6, page 208
The fourth bullet from the bottom claims that a literal with a decimal point can be 'morphed' into a long by adding a l or L suffix.
JDK 1.3.1 which I use does not like a statement such as long l = 3.02L;

In about 40 minutes of perusing the book, I came across all these and lost all interest in the book. At least an errata site would have helped me identify all the problems that others before me have discovered and documented.
I am days away from taking the exam and I don't need this kind of ambiguity and errors in a book that I paid for. When I am using freebie mock exams from the web, I understand that the author is trying to share their knowledge with others, without any monetary benefit. So I am more tolerant of the problems I may encounter.
[ January 16, 2002: Message edited by: Shivaji Marathe ]
Shivaji Marathe
Ranch Hand

Joined: Jan 11, 2002
Posts: 203
Here are two more that I forgot about.
Chap 6 Q2, the answer is D,
the original array is
nSquares = {1,4,9,16,25,26, 49, 81}
The code changes value in the 5th element of this array. The answer for D is {1,4,12,16,28,36,49, 81} How did the value 9 ( in the 3rd element of the array ) become 12 ? There is no explanation of that.
Chap 7 Q2
Option A and B are identical both are i=1, j= 0
The correct answer is listed as B? Why B, Why not A? What is the idea of having two identical answers ?
Ajith Kallambella
Sheriff

Joined: Mar 17, 2000
Posts: 5782
Dear Shivaji,
Thank you for your constructive comments. I speak for all the authors when I say your comments are highly appreciated.
Like any other technical book( especially those which are just out, ) a small number of errors, typos and grammatical mistakes manages to slip through many iterations of reviews and proof-reads and some how get into final production. Nothing but user feedback helps us rectify them.
We are currently in the process of coming up with an errata page to document these mistakes. Once compiled it will be published on Osborne's website and the changes will be incorporated in the subsequent prints.
Best,


Open Group Certified Distinguished IT Architect. Open Group Certified Master IT Architect. Sun Certified Architect (SCEA).
Jane Griscti
Ranch Hand

Joined: Aug 30, 2000
Posts: 3141
Hi Shivaji,
I am sorry you found sections of the book frustrating. We all worked at trying to produce an error free book but as Ajith stated a small number of errors and typos inevitably manage to slip through.
There is an errata page posted for the errors in Chapter 1 and 5 on my personal site. The publisher is currently working on one which will cover the entire book. Hopefully it will be available by February.
All the best,
[ January 18, 2002: Message edited by: Jane Griscti ]

Jane Griscti
SCJP, Co-author Mike Meyers' Java 2 Certification Passport
Shivaji Marathe
Ranch Hand

Joined: Jan 11, 2002
Posts: 203
Jane, Ajith, Cindy and all the others :
Thanks for your patient and courteous replies. I can only blame my outburst on my (then) iminent exam.
I have gone through much of the rest of the book and will be happy to send you my questions / comments / suggestions if it is still within your deadline.
Shivaji Marathe
Ranch Hand

Joined: Jan 11, 2002
Posts: 203
Here are my comments/observations on Chapter 8.
At this time I do not have access to a spellchecker on a machine connected to the internet. So please apologize any errors in my post.

Chapter 8, Page 254 :
The third paragraph begins
"Since most computers do not have multiple procesors, the Java Virtual Machine (JVM) uses a mechanism in which each thread gets a chance to run for a little while, then activates another thread."
This seems to be in contradiction to what Sun says in the tutorial about the thread scheduler of JVM.
Each Java thread is given a numeric priority between MIN_PRIORITY and MAX_PRIORITY (constants defined in the Thread class). At any given time, when multiple threads are ready to be executed, the thread with the highest priority is chosen for execution. Only when that thread stops, or is suspended for some reason, will a lower priority thread start executing.
This is the link :
http://java.sun.com/docs/books/tutorial/essential/threads/priority.html
page 259 :
The paragraph on Waiting does not mention what happens to any locks a thread may be holding when it goes into the wait status. I believe this is a good place to mention locks and what happens when a thread holding locks gets in to wait state.
Pages 262 and 263.
If the thread program is run with the yield statement uncommented, each thread yields after two iterations of the println statment - so how come the output shows the two threads alternating after each print statement. When I run it on the my NT 4, JDK 1.3.1 set up, the outpput shows two lines from each thread alternating.
Did the machine on which you were running this support time slicing and then it allocated just enough time for each thread to do one pass through the loop ?
Page 265 :
The example on Priority threads. Would it produce the same results on operating systems that implement time slicing as well as on platforms that implement pre-emptive scheduling? Which kind of platform did you run it on to produce the sample output that is included in the book? What would be the output on another
kind of platform?
page 270
Second paragraph ends "Therefore, it goes on, ...". I believe the statment should begin "And so it goes on".
Page 271
The last paragraph explains that you can write synchronized code on an object that one does not have access to. It would be nice to have an example of how this can be done.
In the last statement on that page ( which continues on to the next page, the word 'follow',
needs to be 'follows'
Page 272
The program Sync2AccountDemo has a yield() statement in it's run() method? Why does this program have it when the previous one did not? There is no explanation of the implications of having yield in a synchronized block of code.
Page 274
The last sentence in the first paragraph ends "take care of performing the processing the data". Should read "take care of processing the data".
The second paragrpha ends "All three methods can only be called in a synchronized() method context." I think these methods can be called from any synchronized block of code, even if it is not a method.
Also, this may be a good place to mention that an "IllegalMonitorState" exception occurs if any of these methods are called from non-synchronized code.
Page 275
The paragraph below the travel advisory states thatif a thread moves to a wait state and does not get noified it dies. There should be some more information on how long the thread waits and how it dies.
Page 279
The explanation of notifyAll() - third paragraph, should also include information on
where the control returns after a thread gets notified, why it is good practise to call wait in a loop method, what happens to multiple threads that get notified, but do not get into a running state etc.

Page 280:
In the sample display, it looks like the consumer and producer are keeping up with each other so how come the list became full and the producer thread had to wait for the consumer?
Review question # 2
Option E reads "All java.lang.Thread is ..." Should be "java.lang.Thread is.."
Review Question # 5
Why would a call to yield() not work in this case?
[ January 20, 2002: Message edited by: Shivaji Marathe ]
Ashik Uzzaman
Ranch Hand

Joined: Jul 05, 2001
Posts: 2370

I would consider it as an excellent step from JavaRanch!
But its not available in my country (Bangladesh). Is it available in Kolkata (India) now? Then i would suggest my students to pick it....


Ashik Uzzaman
Senior Member of Technical Staff, Salesforce.com, San Francisco, CA, USA.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Mike Meyers' Certification Passport Java2 by Cindy Glass et.al (Osborne/McGraw-Hill)
 
Similar Threads
Advanced Techniques for Java Developers
XSLT Quickly by Bob DuCharme (Manning)
Java 1.2 Developer's Handbook
Professional EJB by Craig A. Berry, Matjaz Juric et al (Wrox)
Java Cookbook: Solutions and Examples for Java Developers by Ian Darwin (O'Reilly)