It was a very good year
It was a very good year for blue-blooded girls
Of independent means
We'd ride in limousines
Their chauffeurs would drive
When I was thirty-five"
Welcome to 2005! 2004 was a heck of a year, and now that we're able to take a breath, it's a good time to take a look back and then make some prognostications about the road ahead. This column is quite simple: I'll take a quick pass through some of the major events of 2004 that relate to the WebSphere world (and the iSeries in general), I'll make a couple of predictions about the future, and then I'll close with a few things I'd like to see and explain why I think they would make a big difference in the midrange landscape.
What's going on out there, eh? IBM peeled off its PC division (a division large enough to rival many other companies) and began what looks to be a much more focused drive to market its server products (and the associated services). This makes sense, since PCs are quickly becoming a commodity, and the services potential is slim compared to the money that can be made from a single server installation. All in all, I see this as a favorable move both for IBM and for those of us in the midrange community.
And what about our faithful midrange? The i5 (nee iSeries, nee AS/400) continued to move forcefully down the path of becoming the most open platform the world has ever seen, while at the same time, the Microsoft juggernaut seems intent on hurtling in the opposite direction. The eServer box looks like it will allow partitions of just about any of IBM's primary operating systems: Linux, AIX, i5/OS (nee OS/400).... But here's one I'd like to see: an OS/X partition. I'll talk about that later in this article.
IBM finally recognized that the iSeries exists. We now have a big IBM player in charge of the platform, and we've even seen some television advertisement. Some think it's too little too late, but take it together with IBM's new emphasis on the server platforms, the lowering prices on the box, and the great new development tools, and I think it bodes well for midrange programmers and users.
ILE has continued to make strides, and the interoperability with Java is one of the most truly masterful projects IBM has ever managed to create. The JTOpen package allowed us to access RPG programs and other QSYS objects directly from Java, but the continued extensions of RPG in V5R3 make it extremely easy to invoke Java objects from RPG programs. This interaction can only make the platform that much more accessible to the new generation of programmers.
Eclipse really came of age with each succeeding release of the WebSphere Studio products. The feedback between the two teams is as synergistic a relationship as the one between MAPICS and RPG that propelled RPG into the lead as the world's most productive business logic development language. You can say all you want about how other languages, especially the new scripting languages like Python, make it easy to develop Web interfaces, but when it comes down to the back-end, nothing makes it easy to design flexible, adaptive business rules the way RPG and native I/O do.
The conservatives spoke, the "red states" voted, and the Republicans returned to power, and regardless of your political affiliation, that means that we're in for another four years of business for business' sake. So we'll probably continue to see a push toward more leniency on outsourcing and visas, although the pressure from groups like Numbers USA has been amazing. At the same time, we're beginning to see the results of outsourcing projects gone awry. And the non-traditional IT management techniques like Extreme Programming don't seem to be having the revolutionary effect they were meant to have. Some projects, like Google's Orkut project, are clearly out of control. Combine all that with the historical lows for the dollar and the rising labor rates in India, and you see some pretty mixed signals for the "inevitable" demise of the American IT industry.
So now it comes to the new year. What's going to happen in 2005? Well, I'm going to break this down into two areas: what I think will happen and what I'd like to see.
What Will Happen?
.NET vs. J2EE
The biggest question is whether .NET is going to take over the world, and specifically whether it will knock out Java and J2EE (and thus WebSphere). Personally, I think there will be a standoff between .NET and J2EE until late 2006. That's how long it's going to take Microsoft to ship the new release of Windows (Longhorn). A lot of Microsoft credibility is going to be riding on that release. At that point, I see two different sets of possibilities:
First, the Java possibilities:
A. Java doesn't make much forward progress in the next two years.
B. J2SE gets some much-needed improvements (J2SE 5.0 and beyond).
C. J2EE makes great strides, especially in Web Services.
D. Both J2SE and J2EE get major improvements.
Next, the Windows possibilities:
1. Longhorn comes out relatively bug-free with all functionality in place.
2. Longhorn comes out relatively bug-free but missing major functionality due soon.
3. Longhorn comes out typically buggy and missing major functionality due soon.
4. Longhorn comes out significantly buggier than XP and/or major functions are delayed a long time.
Given those situations, 1A is a clear win for MS, but I think that's a very unlikely scenario. We already know that J2SE 5.0 (the Tiger release) is adding some serious (and long overdue) productivity improvements, and I can only hope that continues. At the same time, there are a bunch of initiatives going on to position J2EE in the Web Services niche. My guess is that we'll see either option 2 or 4 for Java.
Meanwhile, Longhorn has been slipping, and we consistently hear rumors about things dropping off (like WinFS, the new hyper-searchable file system) and incompatibility between the new release and previous APIs. I'm going to be optimistic and predict scenario C for Windows, but scenario D wouldn't surprise me. Anyway, given this matrix of scenarios, I'd say something like this:
Figure 1: These are the possible outcomes of the .NET/J2EE face-off.
1A: Clear win, MS over Java. .NET takes over the marketplace.
1B, 2A, 3A: Moderate win for MS, unless the new functions are extremely buggy. J2EE loses lots of ground.
4A: Minor win for MS. Both will make it at least the next three years, with MS gaining share.
1C, 2B, 3B: Draw, waiting on release of other Longhorn components.
1D, 2C, 3C, 4B: Minor win for Java, but MS still strong. J2EE will gain share.
2D, 3D, 4C: Moderate win for Java. J2EE takes over significant market share.
4D: Major win for Java. .NET loses all or most of its market share.
Based on this, I see a pretty good chance for a moderate win for Java. Unless MS is able to deliver an uncharacteristically clean release of Longhorn, J2EE will likely continue to gain market share, just because it's more stable. Now, if something unforeseen happens, such as a release of a very buggy JVM or some serious flaw in Java's support for Web Services, then all bets are off. A killer IDE could also change the playing field, but I see VisualStudio and WebSphere Studio head to head for years to come.
So, based on that, I'm still pretty comfortable with a Web interface using JavaServer Pages (JSP) as the primary interface of choice. But that's a thin client. AVR.Net is a thick client, and the field is a little murkier there. If you are heavy on RPG skills and don't intend to invest in Java anytime soon, then I would probably steer you toward VisualAge for RPG. On the other hand, if you're contemplating writing code in Java, then I'd advise you to look into the Eclipse RCP (Rich Client Platform). It's clear that the Eclipse team is putting a lot of effort into this particular area of the product, with the goal being to make the Eclipse look-and-feel the development platform of choice for cross-platform, thick-client development. And since OS/X is one of the targeted platforms, Apple might just have a bigger stake in the game.
Frameworks and CASE Tools
Here's my big one: Struts is dead. Like Keith Richards, it may still be touring, but the truth is that this technology died about the time its founder jumped ship for JavaServer Faces (JSF). Whether JSF will actually overtake it is a moot point; personally, I find JSF to be a particularly ugly implementation, like EJB or SOAP, designed more for tool vendors than for real programming productivity. There are other, far better frameworks out there. The problem is that we're now in that part of the cycle of program development in which point-and-click programming is again all the rage. It's been shown over and over that the majority of such tools really don't make programmers any more productive; they allow end users to throw together screens and offload some of the developers' grunt work, thus justifying smaller IT staffs, but in the end, there is no great reduction of backlog. Instead, a lot of small, unmanaged application development projects eventually collide, causing an even greater cost when they must be integrated.
And despite the history, we will see an increasing trend toward using these tools--at least initially. This isn't the first time this has happened. We saw the exact same scenario with CASE tools (or as they tend to be called these days, 4GLs) on the midrange platform in the 80s and 90s. In certain cases, they made coding easier and better, but those cases tended to be the lower end of the programming spectrum: tasks like file maintenance and query programs. Whenever a CASE product tried to make the enhancements necessary to build enterprise-level applications like MRP generations, the enhanced tools almost always made the job more complex and cumbersome than they would have been had you written the code by hand. Until someone comes up with the concept of an open CASE tool, one where you can seamlessly blend CASE-generated code with hand-written development, you'll never see a completely successful implementation. However, I think it's becoming clear in some of the leading-edge shops that so-called "push-button programming" really doesn't do the job. Instead, I think there will be a movement toward a more cohesive multi-platform architecture into which these tools can be successfully integrated.
What does this mean for WebSphere and especially WDSc users? I think it means that you need to be very careful when using the various wizards provided by WDSc (and indeed by any development tool) to generate code. Remember that generated code is no better than the guy who wrote the generator and often nowhere near as good, since we as end users tend to use the wizards for tasks unforeseen by the original developer. I firmly believe that code generators of any kind should be used for prototyping, and once you've proven your concept, you should assign a team to examine and rewrite the generated code in such a way as to make it specific to your company. This is especially true in object-oriented languages, where the idea is to never write the same code more than once. Code generators are conceptually the exact opposite approach.
This is one I'm worried about. The more I hear about those in the process of SOX compliance, the more I'm afraid that the procedural overhead is simply going to swamp many developers. The concentration is on limiting access to everything; I've heard it said that the SOX auditors think the biggest threat to any company is its programming staff. And given the fact that companies are outsourcing large portions of their development to countries that are at best mildly antagonistic to America and in no way bound by our laws or ethics, I can see their point. At the same time, unless IT professionals make a determined effort to come up with standard ways to address the compliance issues, I think most companies are going to lose a significant chunk of productive time to this undertaking. And if SOX turns into another Y2K, with billions spent for little or no real gain and instead a whole lot of bad blood between service providers and their clients, I think you can kiss the American consulting industry goodbye.
What Do I Want to See?
Defenestrate WDSc! (Or "Get WDSc out of Windows")
I might start using this as my tagline on mailing lists. I am begging IBM to remove any Windows dependence from the WDSc product. Between Eclipse and JTOpen, all of the features are available to completely divorce WDSc from Windows and make it a true Eclipse-based product. Please, please, please, IBM, do this for all of us!
An RCP-Based Office Suite
This wouldn't even have to be freeware; it could be a nominally priced software alternative to Microsoft Office. The current open-source rival, Open Office, is a very good package, but the polish just isn't there. We need a completely integrated package with the ability to plug in new components as they become available. The Eclipse platform is perfect for such a package, and the RCP user interface means it would run just as well on Windows as on Linux as on...Apple?
Quit Pussyfooting Around, and Get on the Apple Bandwagon!
I alluded to this near the beginning of the column, and here's where I'm coming from. You may have heard of Citrix, which is an excellent way to create what are in effect very inexpensive business computing appliances, both in initial cost and in ongoing service expense. They run only the programs you want them to run, and the software is all loaded on a centralized server. Only that server needs to be updated and patched and all that good stuff.
But what I'd really like to see is that this central server is an OS/X machine. It would serve OS/X appliances (Apple-iances?). No more worrying about IE worms; no more Outlook nightmares. All the software would be centrally located, including the aforementioned office suite and the defenestrated WDSc product. And get this: The central server would be an OS/X partition on an eServer. All your office applications could be seamlessly integrated to your back-end database.
Bye-bye, Microsoft licensing issues! So long, daily network security alerts! Sayonara to teams of dedicated MCSEs doing little more than upgrading Windows boxes on a daily basis!
Ah, it would be a very good year, indeed.