Programming Java applications without learning the Java language is now easier than ever, as IBM delivered its ages-old promise to open-source NetRexx, the language that bridges IBM Rexx and the Java VM, creating cross-platform Java bytecode.
It took roughly four years since the open sourcing idea was proposed but the NetRexx compiler and programming language is now officially out of Big Blue´s control, and will surely live forever - or close to it - as "open sauce", as our Nick Farrell likes to say to the collective annoyance of FOSS purists.
One of the many babies of IBM´s MFC, NetRexx gives the simplicity of the Rexx scripting language, with the multi-platform capabilities of Java, providing the proverbial "write once, run everywhere" without having to learn the Java language. Very much like JRuby does for Ruby programmers, Jython does for Python programmers, and Jabaco does for Basic language ones, all without the size and inconvenience of other interpreted environments.
The NetRexx language will be developed going forward by the Rexx Language Association -RexxLA hereinafter - which despite having its HQ in North Carolina, USA, has members throughout the world and is devoted to the promotion of the Rexx language, including the object-oriented Object Rexx and now NetRexx.
The RexxLA organises a yearly Rexx language event, and it has also worked on the ANSI standard of "Classic" Rexx, which was published in 1996.
René Vincent Jansen, the current president of RexxLA, told a quiet mailing list that NetRexx was going to live on as open source: "I am very happy to be able to announce IBM has sent RexxLA the source code of the reference implementation of the NetRexx translator for administration and release".
He continued: "This has secured the future of NetRexx, our favourite computer language, and enables us to do work on it to keep it up to date whenever this seems necessary. A special thanks to Mike Cowlishaw is in order, who not only invented and produced the language, but also was of invaluable assistance during the open source process."
Mr. Jansen added: "Because a lot of the work of readying the source code for publication has been done over the years past, there will be no long delay in having it available in a source code repository on the net. The www.netrexx.org site will be on the air shortly."
And that the current IBM NetRexx - freeware - website at IBM.com will be changed to reflect this new status and then cease to function later this year: "The binary distribution will be available from www.netrexx.org initially and will reflect NetRexx 3.00, which is an almost unchanged release that contains the required source code modifications of the translator and has some small fragments of code adapted to be able to build on more recent Java versions.
"It is expected that 3.01 will be available from the code repository and will be the first official RexxLA release."
The current NetRexx mailing list will be phased out and a new one created by RexxLA. The code will be released under the ICU License, which is described as being quite similar to the MIT license, but including "additional clauses about documentation and promotion."
T-Rex what?: A brief history of Rexx
While you might not have heard much about NetRexx, you surely have vaguely heard about Rexx, this scribbler´s favourite scripting language.
Both are the creations of Mike F. Cowlishaw (MFC hereafter), a retired IBMer in the UK, a member of the Royal Academy of Engineering the British Computer Society. and also a visiting Professor at the Department of Computer Science at the University of Warwick.
When not hiking, getting into caves or the occasional flying, MFC wrote the Rexx family of languages while at IBM, including "Classic" Rexx, which was popularised in the early to mid-1990s by IBM´s 32-bit OS/2 2.x and Warp 3.x operating systems where it was the operating system´s built-in scripting language.
Mike Cowlishaw also famously authored the "IBM Jargon Dictionary" which includes funny snippets like the following:
"& (ampersand). Character used in many IBM macro and command languages in order to make them hard to read and to type. Helps add to the mystique surrounding programmers that use such languages. Sometimes used doubled, for double confusion."
NetRexx: Why it matters
Simplicity and readability were always on the mind of MFC while designing Rexx and NetRexx, and it shows.
Cowlishaw, in his book, calls NetRexx "a new human-oriented programming language".
While discussing proposed enhancements to the language, his clarity of concepts is superb: "'*' in Rexx and NetRexx means multiply, not wild-card. Nowhere does it mean 'wildcard'" he says.
"By adding the special case you'd be adding an anomaly - and one that just adds a new meaning for an operator character and hence verbosity and complexity. "
He concludes "One can put together a programming language by adding snippets from other languages on a whim or any suggestion, but you'll end up with Perl. That's OK if you like that kind of thing, but it is incomprehensible to most people who are not dedicated programmers."
Speaking about the virtues of NetRexx, Jerry McBride from NJ, USA says: "The strongest point of NetRexx is that it requires perhaps one-third to one-half the keystrokes of a comparable Java program.
"The second strong point is, your NetRexx is compiled to Java bytecode and reaps all the benefits of writing to the JVM spec."
Meanwhile, René Jansen, president of RexxLA, agrees: "The NetRexx language enables the programmer to use everything that is in the Java platform".
Jansen calls it "an undeservedly unknown programming language".
See, within Rexx and NetRexx circles, "human-oriented programming" is a shared love, and readability is King. Attempts to suggest the addition of C-like syntax did not get much approval, in fact the C-unlikeness of NetRexx is precisely what the community loves about it.
Rene Jansen says: "NetRexx offers a nice way to write Java programs, without Java's C-heritage syntax".
Chip Davis, former president of RexxLA, chimes in with his opinion: "The fact that PL/I and object-oriented ooRexx have incorporated C syntax has more to do with the pervasion of perversion, IMHO."
The fact that it´s a scripting language doesn´t mean you can´t create GUI applications, for instance. For more details, follow this tutorial.
Good things come for those who wait. And wait, and wait
Just to show how slow can things get when you get a big corporation like IBM and its army of lawyers involved in releasing some formerly proprietary code as open source, there´s no better way than to describe the NetRexx nightmare.
Back in 2008, RexxLA announced in its yearly conference that it was discussing taking care of NetRexx as open source with IBM.
A year later, the project was "revived". To make a tedious long story short, two years passed by and the future of NetRexx was still in limbo, only with regular assurances by those in the know that the project was "moving along" within the Big Blue Elephant´s digestive tract.
René Vincent Jansen, president of RexxLA, summed it up: "This brings an end to a long period in which some have expressed doubts regarding the perspective of the language and the intentions of the parties involved.
"Now that we have this behind us, the real work can start. The language board will convene and draw up plans for the future."
Mike Cowlishaw´s legacy can now live on forever.
This scribbler feels this is one of those strange times where one can thank IBM´s Immense Bureaucratic Machine for delivering on its promises.
The bad news is that after four years of silence and despair, now Hell will probably freeze over and the world will probably end tomorrow in the Worst Case Scenario. Or by 2012 if you believe the Mayans. In any case, trust this scribler and see what NetRexx has to offer. Soon to be available -including source code- from NetRexx.org. If everything fails, just load the URL and keep hitting [F5].