With the release of Version 7.5 of RDi-SOA, IBM provides the first real vision of the future of IBM i development.
With Something Old
and Something New
They Borrowed the Best
And Turned It Blue
I realize "first real vision of the future" may ring hollow in some of the more jaded ears in our community, what with all the Strategic Directions and Development Roadmaps over the years, but RDi-SOA Version 7.5 is truly unique in the annals of IBM i development. In fact, along with the 5250 and the integrated database, RDi-SOA may be another first in business application programming in general: in this case, the first tool that provides end-to-end support for developing every possible type of application architecture, from green-screen to full thick client.
The Whole Is Greater Than the Sum of the Parts
And believe me, the parts ain't bad. You may perhaps have read one or two things I've written about WebSphere Development Studio Client (WDSC) over the years, or perhaps more recently some of my experiences with Enterprise Generation Language (EGL). There have been the inevitable rough spots with those tools--and RDi-SOA is not immune to those sorts of problems--but generally, my response has been pretty positive. And over the years, the majority of you who have taken the plunge have agreed with me. For example, very few who have given WDSC an honest try have gone back to Source Entry Utility (SEU) and Programming Development Manager (PDM). There have been some, and anyway I'm not saying anything negative about those who haven't got either the time or incentive to learn the new tools; my point is more that when you are ready to move to new technologies, IBM has provided the tools you need to get there.
Not only that, the IBM tool builders have managed to do two things at once, a feat they seem to often find themselves forced into when dealing with our beloved but somewhat schizophrenic platform. In this case, they've managed to, in one release, provide both a better way to do one of the oldest things in the book, and at the same time provide the most revolutionary and cutting-edge tool available in today's programming environment. And that's quite a feat.
So which to tell you about first, eh? I think I'll start with the Something Old part of the program.
Finally, Let's Replace SDA Already!
After a whole lot of work and no small amount of prodding from the user community, IBM has delivered the Screen Designer. Unfortunately, it's still a technology preview, and they haven't yet done anything to replace the infamous Report Layout Utility (RLU, whose acronym is also said by those who love to hate it to stand for Really Lousy Utility). But as a technology preview, it's in pretty good shape. In fact, as far as I can tell, the only area that really needs work is the testing feature, not the pure editing portion. The editor is in really good shape. Let me show you.
Figure 1: This is the WYSIWYG screen editor. (Click images to enlarge.)
The WYSIWYG screen editor is very good. I could actually spend an entire article simply going over the Screen Designer, and to be accurate, I wrote a pretty extensive article back in May of last year when the Designer was part of the Advanced Edition of WDSC. To be honest, not a lot has changed since then, but the product does warrant a serious look now, especially for editing display files.
What I like is the context-sensitive configuration pages for keywords. SDA did the best it could to provide a menu-driven interface for entering DDS keywords, but it's nothing like the Properties page concept in Screen Designer.
Figure 2: Entering a keyword such as CHECK is much more intuitive with Screen Designer.
As you can see in Figure 2, Screen Designer takes full advantage of the graphical interface. It lays out all the keywords in a nice alphabetical list on the left, and then as you add each keyword, a special page shows up on the right allowing you to enter the parameters for that keyword. In this case, the CHECK keyword has a whole set of possibilities. Not only is each option enumerated, but putting your cursor over one brings up a tooltip with a brief description of the option's behavior.
So anyway, that's an example of the way that the new release of RDi-SOA caters to our existing legacy technologies. Green-screen programmers fret not; you have not been forgotten! And remember, this particular part of the tool is also available in the less-expensive RDi tooling, which is competitively priced with Application Development ToolSet (ADTS), which is what you have to purchase to get SEU and PDM.
On to the Future!
But it's not a better green-screen development mousetrap that has me excited. No, the really cool stuff is in the EGL tooling, specifically in the EGL Rich UI technology. I can't overstate the potential of EGL Rich UI. If you haven't worked with it yet, you really need to get a copy and play with it, because it's almost impossible to explain in words or even pictures what this technology does. I will, however, give it my best shot!
If you've read my articles about EGL over the last year or two, you'll know that the basic premise of the language is to remove plumbing. EGL is all about encapsulating the parts of technology that you don't need to worry about and integrating them directly into the language. In that way, EGL is very much like RPG and its implicit connection to the DB2 database, except that EGL does this same sort of encapsulation for the entire world of programming and especially Web application programming.
For example, the thin client feature of EGL uses JavaServer Faces as its foundation. However, the tool is also acutely aware of the EGL syntax, allowing programmers to write code and drag and drop EGL structures (called Records) onto a WYSIWYG designer, much the same way that SDA understands databases and lets you drop database fields onto the screen, except that EGL lets you drop an array of records onto the screen, and it automatically builds a formatted table--complete with column headings! I wish I could do that with a subfile, but I digress....
EGL Rich UI goes a level beyond that. You're probably familiar with terms like AJAX and Web 2.0. Another term that's actually a bit more specific but not quite as popular is Rich Internet Application, or RIA. RIAs are the Web applications that actually act like desktop applications, responding to individual keystrokes (traditional thin-client applications respond a page at a time, more like 5250 programs). The first RIA was probably Microsoft's Outlook for the Web, and indeed the underlying technology of that product, the XMLHttpRequest, is what gave rise to AJAX and Web 2.0 in the first place. The only alternative is to use one of the thick client wannabes such as Silverlight or Flex, in which you download what is essentially a player and then send it huge macros. With AJAX, all the rendering code is in the browser and so is already on the client; you don't have to worry about your user having the latest version of the Silverlight runtime.
However, the state of the art of development tools has lagged significantly behind the technology itself. Most AJAX programming is done by hand, and while some frameworks exist to make your job easier, EGL Rich UI is the first true development environment for generating RIAs. That's because with EGL Rich UI, you don't have to code the JavaScript. You write your code in standard EGL syntax, and the tool does all the generation work for you. Here's an example:
Figure 3: This is an EGL Rich UI application, complete with Google Map.
The application in Figure 3 is an example of the kind of thing you can quickly write with EGL Rich UI. It's a graphical front-end to RPG business logic running on the i. The entire client was less than 200 lines of code, most of which looked like this:
ui Box { columns = 2, children = [ appBox, debugBox ] };
appBox Box {
columns = 1,
children = [ promptBox, errorBox, orderBox ] };
debugBox Box { visibility = "hidden" };
// Prompt box - prompt for order number
promptBox Box = new Box { children = [
new TextLabel { text = "Order Number: ",
paddingRight = 10 },
orderField,
new Button { text = "Read", onClick ::= readOrder },
new TextLabel { text = "Debug: ", paddingLeft = 40 },
debugCB
]};
orderField TextField {};
debugCB CheckBox { onClick ::= toggleDebug };
The majority of the code is DDS-like code that lays out the screen. The paradigm for EGL Rich UI is boxes within boxes, which then translates to HTML tables. However, all that work is done for you. And more importantly, it's done using Cascading Style Sheet (CSS) classes rather than embedded formatting, which then allows you to easily modify the look and feel by simply editing a style sheet.
The application above even has its own built-in debugging to show the generated code. Since with Web 2.0 the HTML is generated on the fly, it's difficult to see the actual code; this is true of many frameworks. EGL Rich UI, however, makes it very easy to create a standard debugging "widget" and include that widget wherever needed.
It should be noted that the current version of EGL Rich UI is best debugged using an external tool, specifically the Firefox browser with the Firebug debugger installed. When I write about the tool in more technical detail, I'll address this particular issue, but at this time you can write code that causes errors that can only really be identified using this tool. That's one of the reasons I wrote my debugging widget. It's not the debugging that sets RDi-SOA ahead of everything else, though; it's the Design view.
Figure 4: The WYSIWG designer is the only one of its kind.
The Design mode in the EGL Rich UI editor is as far as I know the first of its kind. While it obviously takes its cues from the other WYSIWYG editors in the Eclipse/Rational tool line, it is unique in the fact that it allows developers to visualize not only the actual GUI but also the underlying source code. Because the code is EGL, the tooling has the benefit of using a common syntax, regardless of the targeted browser.
There is one other tool that I know of, WaveMaker, that has similar functionality. That tool is built on top of the Dojo framework and looks to be pretty slick for what it does. However, WaveMaker by definition has a very narrow focus: writing and maintaining the Dojo part of an application. What it lacks is the breadth of the RDi-SOA tooling.
And That's What Is Really Exciting
With the release of RDi-SOA 7.5, IBM closes the circuit. I can now develop an entire multi-tier application in a single workbench. I can use the RDi tools to build the RPG business logic, then use the base EGL tooling to create a Web service to expose that code, and then finally write an EGL Rich UI application to display it in a browser. My little order inquiry application is probably 600 lines of code all told, and more importantly I don't have to know a single thing about HTML or Java or JavaScript or even XML. All the plumbing is done for me, and about the only thing I need to concentrate on is learning how to do CSS. And really, that part of it is probably best left to the folks who do the corporate Web site anyway; they're probably able to give you a standard CSS that you can use to set fonts and colors and all those goodies.
Of course, if you don't have a corporate Web site group (or if, as in many shops, you are that group), then you'll need to learn CSS anyway. But let me at least give you a cool visual that really sums up the something old/something new nature of RDi-SOA:
Figure 5: How cool is being able to run an RIA side by side with editing your display file?
Figure 5 shows the epitome of a fully integrated environment. I can not only create a rich client that can consume my Web service, but also create a green-screen application that can call that same business logic. No other tool has the same appreciation of the unique characteristics of the IBM i.
What Am I Unhappy About?
I don't like to write lists of negatives, even as a simple balance to a positive article. I've done it in the past only to find the negatives quoted out of context. I hate that.
But given the rather positive tone of this article, I'm going to take the chance to point out a few negatives. My first negative is actually not an RDi-SOA issue; rather, it has to do with its little cousin, RDi. I just don't like the fact that the Data Perspective is limited to the much more expensive RDi-SOA package. These days, everybody and their brother is telling RPG programmers to get with the times and use SQL. Well, that's kind of hard when you don't have a decent SQL tool. To give someone the wonderful capabilities of RDi as an RPG development environment and then tell them they have to use STRSQL for their database management is...uncivilized.
Second, I am no big fan of "technology previews." Granted we've grown used to them, whether it's games that don't work right without patches or operating systems that need a couple of service packs or cumulative PTFs. But that still doesn't mean I have to like them. I suppose it's better than releasing them as production-ready before their time, but how many previews does it take to get to a real release?
That being said, I actually agree that this isn't a production tool yet. There are some things in the EGL Rich UI release that will definitely need tweaking. Let me be clear: the underlying conceptual framework of EGL and of Rich UI in particular is as groundbreaking as anything you're going to see in the IT world. But there are areas where the tool needs work. The visual editor for JavaScript is astounding in its audacity, but it's in need of some serious performance improvements. And this is a personal position, but in my opinion, reliance on a third-party software product, even one as accepted as Firebug, is a tough pill to swallow in an integrated tool, especially one with a big price tag.
I have some technical complaints as well; what's new technology without some nitpicks, eh? I hope to address those in a more technical column. However, none of these are insurmountable issues, and the positives greatly outweigh the negatives.
Final Word
This is a little bit of a teaser, actually. The application you see in a couple of the figures in this article will be featured in a book Coming Real Soon Now, written by yours truly. In it, I'll show in detail the steps required to create business logic in RPG on the IBM i and then that logic as a Web service using EGL and then consume it using EGL Rich UI. All of it will be done in a single integrated RDi-SOA 7.5 workbench, and I believe it will really make you rethink your ideas on what can be done with the i--and more importantly, what you and indeed any IBM i developer can do. EGL Rich UI promises to put RIA programming within your reach, and I think IBM will deliver on that promise.
LATEST COMMENTS
MC Press Online