Java for RPG Programmers has been popular for over a decade. This unique book manages to bridge the gap between the procedural nature of RPG and the sometimes mysterious world of Java and object-oriented programming (OOP). This Third Edition is a worthy entry in the book's history.
The problem for RPG programmers is that most Java books don't differentiate between application programming and system programming. Java has a dual nature: Java experts use the advanced features of the language to build system-level routines, and application programmers use those routines to build applications. Most RPG programmers need the latter explained in familiar terms.
Unfortunately, most Java tomes delve deeply into the intricacies of OOP, using terms that belong more in post-graduate Computer Science courses than in your average programming shop. I found the word "polymorphism" about five pages into the first Java book I read, and I immediately wondered what I'd gotten myself into.
I'm pretty good at Java now, but I wish I'd had this book to get me started. Java for RPG Programmers uses a unique "Rosetta Stone" approach in which Java concepts are compared to similar RPG concepts. The authors understand where the languages are similar and where they differ in a way that could confuse RPG programmers. For example, they make sure to point out that arrays are zero-based in Java as opposed to one-based in RPG. And in their own words, they don't "hit you over the head" with OO stuff. They explain it where needed and leave it out where it's unimportant.
The book covers all the important facets of Java programming from an application standpoint—from basic syntax and control logic to database programming. I also appreciate that they don't teach outmoded techniques for the sake of filling space; instead, they present expert-level techniques for solving basic programming issues. I've been programming Java for a decade, and I still learned a couple of new tricks.
As an added bonus, they go out of their way to make RPG III programmers comfortable in the RPG ILE world. Since ILE has more in common with modern languages than old OPM-style RPG, it's to your benefit to understand ILE programming. But the authors understand that not everyone is an ILE expert, so where it's appropriate, they compare the two RPG styles. Things like exception handling and even things as basic as the D-specification are explained so that RPG III programmers can get up to speed and make the transition to Java.
This book is obviously written by and for real programmers. There are several pages just on commenting, including a remark ("You do comment your code, don't you?") that lets us know that these guys have been in the trenches. The authors even went so far as to include a brief but helpful "How-To" section for common System i issues. In the end, it's clear this was meant for System i programmers, right down to an appendix on IBM's Java Toolbox, which allows access to System i data and objects.
If you're an RPG programmer who wants move into Java programming, this is an excellent book to get you there.