I am just starting to learn Java, my background is in mIRC script.
I am learning okay with Head First Java 2nd edition but it could be a lot better.
I have been trailing behind since the arrays chapter with the 1st battleship game, the chapter after that was a bit of a waste for me for that reason.
The problem is, although it explains everything great there isnt enough application of the knowledge so I am not comfortable with the coding structure at all, or even the use of arrays and ArrayLists. I feel this is because I have not written out enough of my own code for everything to sink in deep enough.
I am basically learning new concepts day to day at a fast pace without applying them.
In the past I have found I learnt best by writing my own code getting stuck and checking a reference for a new concept but this is intimidating without any guidance as Java being my 1st programming language is very big to me.
I wish I could make myself some programs but I dont have enough to work with to get me motivated, no GUI no sockets or i/o just arrays variables, yet its now starting to teach me about inheritance and polymorphism.
I feel I should do a lot more coding before I move on to that.
I think I would benefit from a 2nd book to read side by side with Head First Java, or should I just roll with it and take in what I can?
I love Head First and would recommend sticking with it. But everyone learns differently, so a book to complement Head First might make the most sense for you. For that, I would recommend Thinking in Java by Bruce Eckel, which goes into far more detail and explanation. Each chapter of Eckel also has lots of exercises.
(Note: The 4th edition is the most recent of Eckel, which covers Java 5. That should be fine, since the differences between Java 5 and 6 are minor.)
It is worth considering a Deitel book because they have lots of examples and exercises in, but see if you can find a sample chapter first; the Deitel style is by no means to everybody's liking. Get a Java™ How to Program book, edition ≥ 6th, and I suggest if there are "early objects" and "late objects" editions, get the "early" edition.