» Prologue «
I guess this is one of the threads everyone here has been waiting for. There was a thread created sometime back but due to been diluted by off topic posts couldn't be made into a sticky. I would request the OP to post the same links here if possible.
Please don't post "spam" or "Thank you" posts in this thread since this is meant to be used as a guide for all beginners and I am sure we would like it to be on topic. I hope you understand this.
» Introduction to Java «
To start off,
Java is a general purpose programming language liked by application developers and web developers alike. It is the force which drives a large number of enterprise applications out there. Read more about it
here. And yes, just for the records,
Java is not slow!! [1, 2, 3] ;-)
» Getting started «
All you require to develop Java application is a text editor and a JDK which encompasses a Java compiler, a Java interpreter and a host of tools which ease your development.
» Java 1.4 download (not recommended if new to Java)
» Java 5.0 download (not recommended if new to Java)
» Java 6.0 download (recommended)
» Java Language Specification - 3rd edition
» Java 6 online documentation
After installing the JDK, you might want to take a look at the
common problems beginners face when setting up Java and their solutions. New to java center is a good section for absolute beginners.
As a beginner, you should know the commonly used JDK development tools like javac, java, jar, javadoc to name a few. Read about them
here.
Though not recommended for beginners, there are a lot of IDE (Integrated Development Environments) out there which greatly reduce the development time and abstract away all the complexities faced. A few free and commercial ones are:
» Eclipse IDE [open source]
» IntelliJ IDEA [commercial and free community version]
» Netbeans IDE [open source]
» JCreator [both free and commercial versions]
» Build Tools «
Though compiling Java programs using the javac tool may seem fine enough now, it has its limitations. Compiling, building and archiving an entire application becomes quite tedious.
Build tools to the rescue. It is a good thing to have the knowledge of at least one of the build tools under your belt if you want to work with Java in a professional setting. There are a lot of
open source build tools out there,
Ant and
Maven being well known among them. Which build system to use is a personal / project choice though Ant is a good one for beginners.
As those who don't mind writing their build scripts in a scripting language rather than the verbose XML,
Gradle looks promising and innovative. For those who are conversant with Ruby, you might find
Raven interesting. Google for 'ant tutorial' and you will surely find something to get you started (that is if you are using Ant).
» Unit Testing «
It's a good thing to get into the habit of unit testing your code. Test cases have a host of
advantages over your normal print statements placed throughout your program. Testing helps you in focus on the way your Java object is actually used / the part it plays in the system, thereby improving class design. And above all, its fun. :-) Get the unit testing framework JUnit
here or the more recent
TestNG Google for 'junit tutorial' and you will surely find something to get you started.
» Links «
Now for some tutorial links:
» Java tutorials (beginners start here!)
» Online resources for Java programmers
» Brewing Java
» Java tutorials at about.com
» Don't fear the OOP
» The Java Tutorial by Mary Campione and Kathy Walrath
» Java Student's Resouce
» Sussex Data structure notes in java
» Ohio University Java notes
» Rochester Advanced programming in java notes
» LeePoint Java Tutorials
» Sample snippets from the Java Developers Almanac
Some free online books / pdf's:
» Introduction to Programming Using Java, Fifth Edition
» Thinking in Java 3rd edition
» Free java books
» Free java books at Developer's Daily
» Onto Java
» O'Reilly's eBooks
In case you need to buy a book, consider the ones enlisted below. They are a gem.
» Head First Java 2nd edition[beginner]
» Java Programming Language [advanced]
» Java in a Nutshell [intermediate]
» Hardcore Java [advanced]
» Java concurrency in practice [intermediate]
» Effective Java [advanced]
» Refactoring - Improving The Design of Existing Code
» Growing Object-Oriented Software Guided by Tests
» Clean Code: A Handbook of Agile Software Craftsmanship
» Working Effectively with Legacy Code
For those more interested in watching videos rather than reading books:
» Java programming on Freevideolectures
» Java programming on javavideotutes
» Videos on lernerstv
» CS 61-B video lectures
Must visit sites for all Java programmers:
» JavaWorld
» OnJava
» IBM Java developerworks
If you are one of those people who are interested in reading blogs, I would recommend
Reddit,
DZone,
JRoller and many others.
» Frequently Asked Questions «» How can I convert a java program to an executable?
» Differences between Java and C++
» What is hell is 'Generics' all about?
» Where can I find a more comprehensive FAQ?
» Does Java support pass-by-value or pass-by-reference semantics?
Just google for 'java faq' and you surely would stumple upon a gold mine of well written FAQ's.
» Certifications «
After getting a good grasp of the subject, you might want to get a good certification to add a feather to your cap. You can find more about Java certification
here. Google for 'scjp notes', 'java mock test' or 'scjp mock' to get started. Getting a
certification or not is a choice you have to make.
» Of programming and hackers «
The learning process remains incomplete unless we play around with the language, learn to understand others code and implement some sample projects. For those want to learn Java *really* fast,
Teach yourself programming in ten years would be a good read. Some other inspirational reads are '
How to become a hacker',
Great Hackers and other
Paul Graham essays. One of our community members,
Black Box, has written a nice
post targeted at beginners, which enlists what it takes to learn a language.
That being said, you can find a lot of open source Java projects on
Java source. Play with them to your fullest, try to see how things are done in the real world and walk the path of a hacker! ;-)
» Game Development «
And yes, now you can use Java for professional game development. The Java Monkey Engine makes this possible with advanced features like shaders, cloth simulation, bump mapping, inbuilt sound and user interface support and much much more. You can learn more about it on the
JMonkey Home page. Given that 3D game development can be a bit daunting for entry level game programmers, there's an excellent 2D game engine called
Slick which can help you get started with 2D game development in no time!
» Epilogue «
After all this, if you still find yourself struggling with some issue, make sure you read
this thread and
this essay before creating a new topic in the Java forums.
It has taken a lot of effort to come up with these links so that you don't waste your time searching for some study material / reference text. Appreciation goes out to
Stephen,
Ezzaral ,
Peter ,
Alok and others for their suggestions and corrections. So, just go for it, learn, contribute to this thread and above all, enjoy programming!
Java FTW. :-)