Finally I think I understand this Java, OO-Programming, GUI based thing. Well enough to make a decent stab at some programming anyway, and that’s more than I’ve been able to manage in the past.
My first programming was in C which I was taught at university. This was back in the days when GUIs were in their infancy and most programming was done manipulating colours on a text screen rather than the multitasking graphical programs we see to day.
Long long ago…
The books I’ve tried in the past include: Ivor Horton’s Beginning Java 2 and Java in a Nutshell (from O’Reilly).
These books are good reference books, but as someone coming from a procedural programming background, rather than object oriented, I found them very difficult to follow. I also struggled with the Java GUI (now somewhat improved with the addition of SWING) and in the end for ways of achieving the results I wanted much faster with other programming languages and toolkits.
Steps taken before Java
Before I took up Java again I did get a lot more exposure with OO-Programming and GUI programming. I used some of the object oriented features in the perl programming language and also used the book OOP Demystified. That book certainly helped, but as a theoretical book it doesn’t provide the hands on programming which is needed to really get a good understanding.
I have also done some GUI programming using Perl/Tk and wxPython which are both simpler than learning Java GUI, although as I found not quite as portable as I really needed.
All these certainly helped me to build up some more background knowledge before I embarked on learning Java again.
Learning Java the Head First way
This is the first book in the O’Reilly Head First series that I’ve read. If you’ve not come across these before they provide a new approach using activity based learning rather than the usual didactic approach of most text books. The learning techniques are familiar to me as my St John Ambulance trainer training used a lot of learner centred teaching and my First Aid Quiz website includes teaching activities using a similar concept.
This is achieved by using text, humour, fictional stories and learner activities to reinforce the learning. At the end of each chapter are some activities including cross-words, code magnet activities and fill in the blanks. The end result is a fun way to learn the content which also helps to retain some of the information afterwards.
The book is for beginners to Java programming, to start you will needs a basic understanding of programming and programming concepts. It does teach OO-programming and the basics of Java. Unlike some other books it is not patronising and doesn’t insult the learner (it’s not for dummies, idiots or any of the other insults used by other publishers).
With the aid of this book I now understand some key concepts that I’ve been struggling with in the past. The explanations are good and some of the exercises / games are quite useful, although I skipped some others. One thing is that it may try and gloss over some things a little, either temporarily coming back later, or sometimes completely. The GUI section does not go into as much detail as I’d have liked, but that’s typical of general programming books and you often need to get a more detailed specialised book .
Finally the other thing it isn’t very good for, and to be fair it states this up front, is that it’s not particularly good as a reference book. You can use it to look up important concepts, but it doesn’t list the commands or provide the syntax for their use. So once you’re up to speed you need a reference manual to refer to during your programming.
This book is well worth buying. It has finally been able to break down the OO programming into a style I can digest and understand.
Java The Complete Reference
I had already got the Head First Java book and needed a reference guide for future reference. This book fitted the situation pretty well.
The book does explain each section, but it does not have the same energy as Head First Java. If you already know most of the concepts then that will probably be enough on it’s own. As far as being a complete reference guide it does quite well. The GUI section is lacking a little, but it does give you enough to get started with GUI programming.
Not the best book for complete beginners, but this is just the sort of book you want to handy when programming Java.
Swing: A Beginner’s Guide
The final book that I used when learning Java programming is Swing: A Beginner’s guide published by McGraw-Hill Osborne and just happens to be written by the same author as Java: The Complete Reference, Herbert Schildt. I was a little surprised that it was by Herbert Schildt as this book was much more engaging than the reference book.
It covers all the areas quite well and gives all the steps to get up and running with Java GUI programming. The content in the book is great and easy to follow. It does however repeat some of the code by presenting it as a whole and then in large chunks as well. It would be better if some of this could instead have been better used explaining a bit more about the different methods and widgets. I would also have liked a bit more on the different layout managers with worked examples as most of the examples used are based on the FlowLayout manager.
This is a good book which goes much further than the general Java books. The teaching style is well paced and is easy to follow. There are however bigger Swing books and I think that perhaps another book may go more in-depth (although I haven’t tried any others). It has provided what I need for the moment, but I may look for another book in the future.
Programming ability so far
These 3 books work together very well to provide a The Head First Java books and The Java Complete Reference in particular cover all the normal programming which works better together than using either book on their own. I’m happy with the Swing book so far which does a much better job than the other books I’ve reviewed here (as you’d expect) and is a good beginners book for Swing. You may want to see what other Swing books are available.
The end result is that I’ve now created a object oriented GUI based program. There are still some bits I don’t fully understand, such as threads, (I may need to read that chapter a few more times) and my GUI is not yet refreshing in the way I want (related to threading again), but this has come on a long way from when I first tried to learn Java and I think much of the credit belongs to the Head First Java book.