Updates

Latest Tweet



What's New?

Check out for latest innovation, a computer based training video collection


Like this Page

From Java to C#: A Developer's Guide Review by Sam Miller

Awkward, Dry, and Uninformative

I bought this book based on the unanimous five star reviews posted here and was deeply disappointed. I honestly have no idea how someone can give this book five stars.

First of all, it is full of grammatical errors, some of which cause the entire section's conclusion to be ambiguous. Often the wrong word is used. For instance, the author begins one section by saying that there are many differences in paramater passing between in Java and C#, and then proceeds to list only similarities. Even when the writing is clear it is painfully dry, even for a computer book. The entire book reads like a laundry list, with no suggestion as to which features might be helpful or which might be confusing.

The various bullet points offer no explanation as to their relevance. For instance, at one point the author goes at length into describing how, in constrast to Java, a method can't return an object that is less accessible than the method itself. That sounds reasonable, but why is this the case? What issue in the Java security model does this address? What Java security considerations does this render moot? All the author suggests is to try it and see the compiler error.

More importantly, the entire focus of the book is wrong. The author glosses over most of the .NET framework and spends his time concentrating on the differences between the Java language and the C# language. The .NET framework itself is where the real architectural differences lie. I'd like something that tells me which .NET class to use in place of each Java class I know. The book doesn't even include an appendix for this. And truth be told, Java and C# are very, very similar. I don't need five pages explaining how I should use a colon instead of the word "extends".

When the book does address fundamental differences in the languages, it does so only on the most superficial level. For example, it mentions that while Java threads offer an isInterrupted() method, C# threads do not. But it gives no indication as to what replaces what is essentially Java's only external thread control mechanism. The only thing it says is that in C# suspend() and abort() take effect only in "safe" situations. The definition of "safe" is left to the reader's imagination.

Perhaps worst of all, the author gets tons of facts wrong about Java. The size of integers, nesting of exceptions, and the definition of daemon threads are just of few of the many errors the author makes in describing the Java language. With so many mistakes, I can't help but wonder if he was giving me an accurate picture of C#.

If you have more than a very rudimentary knowledge of Java, you will learn more from browsing the class docs in .NET than you will from reading this book. If you don't, there will probably be better books for you anyway. In short, save your time and save your money and look elsewhere.