I'm already a developer it is my day job, and I've made a decent business out of it. I'd like to learn Java, but all the tutorials seem to start out as if the only language I know is English. Are there any good resources for a programmer to learn Java?
Thinking in Java by Bruce Eckel. It assumes that you're a programmer with understanding of C.
You can use The Java Tutorials at Sun to learn many of the features of Java.
When I first learned Java I already had experience with C and C++. I found the Core Java series by Horstmann and Cornell to be a nicely paced tour through Java, they even have several equivalence comparisons to C++, so if you know C++ it is quickly understood.
Once you get a hang of Java, Effective Java and Java Puzzlers will be a couple of good books to take a look at.
Effective Java is filled with best-practices on features of the Java language, and the most recent edition (2nd edition) has been updated to cover the features of Java 5 as well.
Java Puzzlers is filled with (fun) puzzlers that will point out the interesting parts and the pitfalls that even the more experienced developers can get stumped with. Although it may seem like a "fun" book, but it is quite educational as well.
Aside from the above, here are a few links that will come in handy when learning Java:
- The Java API Specifications - Complete documentation on all classes in the Java SE platform. This will come in handy when learning the APIs, and learning to read the Javadoc-formatted documentation is going to go a long way.
- The Java Language Specifications - If reading the language specifications are your thing, then this is the link. The complete specifications are available to read online.
- The Java Virtual Machine Specifications - If you're curious about how the JVM works. Not a required reading when learning Java, but can come in handy if you want to know what is to happen under the hood.
I've found that Sun's java tutorials are actually very good for people who are already experienced programmers. In fact, at the point they were written, the main audience (IMHO) was people moving from other languages such as C++ to Java.
I've never "officially" learned Java, and whenever I needed to clarify some concept that I wasn't fully familiar with how it worked I found it easy to go to the relevant point in the tutorial without feeling I was being "baby-talked".
You didn't mention what language it is that you typically use, but Java is very intuitive to pick up even without a guide. You would only need the tutorial for specific models like Java threading and stuff like that.
Once you become comfortable, Effective Java is a good book.
In addition, you can google for very good "my language vs. Java" guides for most OO languages.
There are many tutorials and books out there and you will easily get bored if you start reading them.
Since you are already a developer (assuming you know most basic things)I would suggest you start rewriting one of your favorites apps(a small one) in java.It can be a standalone or web app.
There will be many things wrong in the beginning but then you read a liitle bit and you code little and then you improve by reading and referencing the best sources.
Another good way to learn about some complex topics is by listening to podcasts.
I personally used Eclipse/Java tutorials back when I began, give it a look (flash videos): https://eclipse-tutorial.dev.java.net/
If you already know a popular OO language like C# or C++ , I find the more challenging part is to learn those popular frameworks in the Java world, and how to effectively use them to help you write better code.
For the Java language itself, I don't see there is too much challenge to get hands on it.
In addition to the excellent suggestions here, I have to add Kathy Sierra's and Bert Bate's excellent certification guide to the SCJP test. It really helped me when I started learning Java (coming from C++).
And if you ever do choose to get certified, this book is both challenging enough and interesting enough to easily get you past the exam.
Stanford has an excellent introductory course to Java hosted free on their youtube channel
If you intend to learn something about Eclipse, the Eclipse Corner Articles are a good place to read about dozens of interesting things.