Possible Duplicate:
Is there a canonical book for learning Java as an experienced developer?

I am looking for book to get up to speed with (start with) a Java language. I am experienced (more than 15 years) C# and C++ programmer with a bit of Python, so I don't need a book which starts with a programming concepts for a beginner. In fact I think I need a "Java language specification" sort of book.

I checked the answers to questions similar to mine and found that there two books which is being recommended most: "Effective Java" and "Sun Certified Java Programmer".

After a quick look at the "Effective Java" I realised it should not be a book to start with, it is a good book (I read all books in Effective C++, STL series and liked them but they are more "good practices" books, rather than a book for a beginners)

"Sun Certified Java Programmer" looks closer to what I am after - but goes too slow for me.

So I did some more search and found these two books:

  • The Java(TM) Language Specification by Gosling himself
  • Java™ Programming Language, The (4th Edition) by Ken Arnold

I gather the first one a little bit dated and the second one is the best Java Language Reference books up to date, but I am not sure - as I am not a Java person to make such judgements.

After reading the language reference book I will start learning the basic libraries / packages / namespaces (collections, algorithms, IO, etc) and then something about UI architecture. But that will come later.

Question: - which Java Language reference book for an experienced programmer you can recomend ? and why?


  • 2
    Just read the language spec - you do not need books and such.
    – SK-logic
    Jul 5, 2012 at 7:24
  • @SK-logic where can I find the spec for Java language. Is it here: docs.oracle.com/javase/specs ?
    – user18404
    Jul 5, 2012 at 8:39
  • @Andrew, yes, all the latest official stuff is there. You may also want to take a look at JSRs: en.wikipedia.org/wiki/Java_Specification_Request
    – SK-logic
    Jul 5, 2012 at 8:44
  • which book you finally choose ? I too am 10+ yrs experience shifting to java so I am in a similar situation. Mar 26, 2016 at 13:59

2 Answers 2


Six months ago I was also looking for books to get up to speed with Java. I was also coming from a background in C++ (as well as Perl, VBA, and JavaScript) and ended up purchasing the following:

  • Effective Java (2nd Edition) by Joshua Bloch
  • Java Concurrency in Practice by Brian Goetz
  • Java The Complete Reference by Herbert Schildt
  • Core Java, Volume I--Fundamentals by Cay Horstmann and Gary Cornell

I have since developed a Java application with more than 20,000 lines of code and found that the only books that I actually used were Effective Java and Java Concurrency in Practice. For basic language questions you can quickly get the answers from the Java Tutorials or by searching questions on stackoverflow.

In the case of Effective Java, it is the right place to start. The material is so fundamental to understanding Java idioms and avoiding common pitfalls that you cannot afford not to read it from the get go.

  • 1
    I would add that the Head First Java book is a fantastic way to pick up the fundamentals of the language, the rest I agree with :-) Jul 5, 2012 at 7:40

I were in your shoes ten years ago, tried "learning" Java after heavy C++ coding from books and examples - and failed.

Then I started working for a Java company, and they gave me the task to refactor an existing system, separate the reusable background framework from the custom business logic. At that time Java reference was unique: perfectly detailed explanations for ALL the language in a well-organized structure (now it's common). So I had the lang ref and the tutorial open in a browser, read and analyzed the code, and that's all. It was not easy, but I could manage it.

I think with your experience you don't need more. A good IDE (Eclipse is my choice), the Java tutorial for the first questions, the lang ref for the actual stuff - and tons of actual Java code with a real task to solve. And the holy Google with answers to the "beginner questions moving from C to Java" in the first months (yes, everyone has that period, bad, but it goes away). It will work.

Well, the bad side: today Java is not only the language, but the tons of tools (Spring, Maven, OSGI, Apache tools, not to mention the server side stuff), configs, magic, heavy googling. But I think anyone with a sane mind will let you familiarize yourself with the language itself before throwing you in the mud. ;-)

So: instead of any book, find a friend doing Java programming (or like me, a company that works in Java), explain the situation and start working.

My 2 cents.