Isn't it about time somebody told us how to integrate RPG and Java?
Written by Joe Pluta
Tom Snyder's first foray into RPG programming books, Advanced Integrated RPG, is an auspicious beginning. The book is ostensibly about three specific examples of integration between RPG and Java: accessing Excel spreadsheets, creating PDF documents, and sending email. And while the book presents these topics quite well, it's the larger view of the book that really makes it special.
To properly take advantage of the Java capabilities of RPG, you must use the Integrated Language Environment (ILE) version of RPG. Since not all of us are ILE experts, a book introducing the integration of Java and RPG should by necessity cover the concepts of ILE, especially as they apply to using the two languages together. And while that makes a lot of theoretical sense, practically speaking, a thorough treatise on ILE programming would be larger than this book's 400 pages.
Somehow, though, Tom has managed to incorporate a functional introduction to ILE programming in about 70 pages and provide a corresponding treatment (I hesitate to call it an overview because it's quite exhaustive) of Java integration in another 80 pages. The ILE section alone is worth the price of the book to a traditional RPG programmer trying to make sense of ILE.
After that, Tom gets right into the meat of the book, providing practical examples of how to use RPG to take advantage of Java code, particularly existing open-source Java code. He starts by tackling what must be one of today's most prevalent issues in real-world companies: making the data on your i work and play nicely with Excel. Many techniques are being used today with varying levels of success. The simplest is the comma-delimited file, also known as comma-separated values (CSVs). Another is to automate the System i Access plug-ins for Excel, which allow uploading and downloading. But the most straightforward way is to be able to directly access and update an Excel spreadsheet. An open-source project for this exists at the Apache Web site. The project is called POI-HSSF, which stands for Poor Obfuscation Implementation, Horrible SpreadSheet Format (nobody refers to the full names anymore, including the Apache project itself, but I think they give you a flavor of the irreverent nature of open-source code). POI-HSSF is a relatively robust API for accessing the data in an Excel spreadsheet, but because it's written in Java, it isn't particularly useful for the average RPG programmer. That's why this book is so important: it shows you all the steps needed to use a complex Java API like HSSF-POI from within a standard ILE RPG program.
This is the largest portion of the book and for a good reason: accessing and manipulating Excel spreadsheets is a complex subject. This is especially true with HSSF-POI because unlike the other methods I mentioned above, which deal primarily with just the data, HSSF-POI lets you manipulate down to the tiniest detail the actual formatting of the spreadsheet, even including some rudimentary support for graphs and images.
The book continues with two more powerful examples. The first uses the tremendously popular iText package to create PDF documents. iText is a great package that is in use in many common packages, including Eclipse's Business Intelligence and Reporting Tool (BIRT) and Jasper Reports. iText provides an API that allows people to create and manipulate PDF documents without having to understand the complex PDF structure. This is a huge convenience; when I wrote my CPYSPLFPDF function many years ago, I had to learn quite a bit about the internal structure of PDF documents. A library like this would have made this task a lot easier.
The final section of the book deals with the JavaMail API from Sun. JavaMail allows Java programs to send and receive email from a mail server. This can be a little confusing; JavaMail does not actually send mail; it only sends an email message to your mail server. It's up to your mail server to then send the message on to its destination. If you don't have access to a mail server, the API doesn't do you a lot of good, but since all corporations and most home users have email, this shouldn't be an insoluble hurdle.
The book is rounded out with a brief few pages of pertinent tables and references—refreshingly few, in fact, for a book of its size. That's not surprising, given the amount of information stuffed between the covers. I hope you get the time to take a look at Advanced Integrated RPG; if you want to make your i a more integral component of your corporate network, you'll be sure to find this book useful.