Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm looking to learn Java, but I don't want to get a book that is going to tell me what an object is, how OOP works, etc. I know this from my existing ActionScript 3 work.

One idea is to look at all the areas Java covers, pick one that is of interest to me and delve into that. Is this a good idea?

Any other suggestions?

share|improve this question

closed as not constructive by gnat, Joris Timmermans, BЈовић, GlenH7, Thomas Owens May 17 '13 at 13:58

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

Prepare for the SCJP test - even if you aren't going to take it.

You mentioned that you don't want a book that's going over things you already know. I highly recommend SCJP for Java 6 Study Guide. I got this book (the Java 5 version) to study for the test, and even though I already knew and was working with Java full time, it did not insult my intelligence even while going over the fundamental basics of the language.

Even though I was already competent, I learned important details about the language throughout the book, including specific details about the access keywords, polymorphism, as well as overloaded method priority, which became a lot more important when generics and auto-boxing were added.

From there, you may actually want to take the test (though at $200-300, whatever it is now, it would be better for an employer to subsidize it for you). The next level test, SCJD (D for Developer), actually requires you to implement a basic program with a back- and front-end, which would be a great way to get a basic, small (20-40 hour), well-defined project to cut your teeth on.

share|improve this answer
This is the process that worked best for me. The study guide is a fantastic resource that enlightened me about a lot of things I thought I knew but didn't really understand at an expert level. I went on and did the SCJD cert too which was also a serious learning experience. – Daniel Pereira May 17 '13 at 11:34

If a book covers a topic that you already know, there is no law that says you can't skim over that part. Back when I was learning Java, Java in a Nutshell was a good reference for me. I also see that Core Java is still being updated (although they appear to have done away with the hologram on the cover). The reviews on that one look great on Amazon, and I definitely did my learning in java on that one.

Just curious, why you're trying to transition to Java and not C#? Your experience with Flash would translate well to Silverlight.

share|improve this answer
Well the reason I'm interested in Java is it can be used in so many places (mobile, desktop, web). I always thought Silverlight was to similar to Flash/Flex (I haven't used Silverlight so don't know for sure). – stevo Feb 5 '11 at 17:28

best way to learn is to do. get a reference, say Java In a Nutshell, and start coding. The people over at Stack Overflow can help you if/when you have any questions.

share|improve this answer

Not many people realize this (I sure didn't) but ActionScript 3 is almost exactly the same language as Java. Because ActionScript is an implementation of ECMAScript most people assume that means it's just like JavaScript, but actually it more closely resembles Java and the ECMAScript aspect is all under the hood.

The upshot is that you can dive directly into moderately challenging Java straight from AS3 without needing to spend a lot of time on the basics. The actual uses of the languages are not the same so you will need to learn all the frameworks and domain-specific techniques for building a server-side program (or whatever you're doing with Java) but the language itself is almost identical.

share|improve this answer

The best way to learn any programming language is simply to use it as much as you can while digesting information about the language one concept at a time. Break the language up into smaller pieces and focus on each piece until you understand it then move to the next piece. The SCJP Study Guide mentioned above takes this approach and it works.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.