Object REXX
Object REXX (OREXX) is an object-oriented programming language developed by IBM that is basically an extension to SAA REXX (Classic REXX) that gains the object model from Smalltalk with a few other language extensions. It was originally released in versions for OS/2 and AIX that offered integration with SOM 2.1 and had some limited graphic functionality, but IBM later made versions available for Microsoft Windows and Sun Solaris that were fully independent of SOM, note that unlike the OS/2 version the AIX, Windows and Solaris versions were all paid seperate commercial products.
While Object REXX is mostly compatible with Classic REXX there are some minor differences that mean that most REXX programs have to have at the least some modifications to run correctly under OREXX, and this has meant that in the OS/2, AIX and IBM mainframe worlds it never gained any real traction as it was incompatible with a large existing codebase.
On October 12, 2004, IBM released the Microsoft Windows, AIX, Solaris and Linux versions of Object REXX as open source software, handing the copyrights and responsibility of future development to the REXX Language Association (REXX LA). To differentiate their offerings from the commercial releases from IBM, REXX LA renamed the package Open Object REXX (or ooREXX), the source code release only consisted of the Object REXX code as it stood at the time and only contained parts of the SOM integration and none of the OS/2 specific features.
Object REXX coexistence with Classic REXX
OS/2 version 4 and later is shipped with both Classic REXX and Object REXX interpreters and the same is true of all operating system based on that codebase, including eComStation, Warp Server 4.5, Warpspace on Demand and JavaOS, the main difference being that the IBM systems default to Object REXX while eComStation defaults to Classic REXX. If you want to switch between implementations you can issue the SWITCHRX command in a CLI shell and the system will default to the alternative version to the current one at next boot. If you want to use both at the same time you have a few options, you can specifically call the alternative version to the one you are currently using either from a command line or from a script or batch file or you can associate different extensions to different interpreters.
It is in general recommended that Classic REXX is set as the default since most OS/2 and eComStation utilities use it.
Object REXX classes and bindings
In addition to classes developed specifically for it, Object REXX can use extensions intended for Classic REXX, you can take a look at the REXX page for some of those, there are usually no real compatibility issues, but care needs to be taken with multi threading if you use it, Classic REXX always addresses extensions on a single thread so some extension packages expect the tread that initiated the extension to be the only thread that uses it.
- OREXX/SQL Object Framework - Classes that allow you to access and manage SQL databases - Open source - Discontinued.
OS/2 text editors with Object REXX support
- jEdit - Java based editor - Object REXX syntax highlighting built in - Current.
Background & history
When IBM decided in 1988 to standardise on Smalltalk as their language of choice for future application development it became obvious that it would be beneficial if other tools from the company could offer a degree of compatibility with the object model that Smalltalk offered. This lead to amongst other things the development of the CORBA derived System Object Model and the closely related Distributed System Object Model but it also became obvious that it would be better if REXX, which was heavily used in IBM systems as a glue language, could operate with the object-oriented paradigm as well, this alongside a general interest in O-O languages at the time lead Simon Nash (IBM UK) later in 1998 to start experimenting with merging the REXX language with the object model of Smalltalk under the code name Oryx.
IBM showed the first prototype of the Object REXX language at the 1992 REXX Symposium on an OS/2 2.0 machine and by the 1993 the language had gained graphical user interface class libraries for both OS/2 Presentation Manager and Motif on AIX, a development environment that includes a class browser, an interactive debugger and object inspector, and integrated support for OS/2 WPS object via SOM. In 1994 IBM announced that development the Object REXX would replace Classic REXX as the default REXX interpreter in the next release of OS/2, but that came with the promise that it would be "100% compatible with Classic REXX" and that development was now in the hands of a team run by Rick McGuire. At the same time the company announced a few extensions to the language in addition to the O-O features already included but amongst new language features were expressions in stems, parse enhancements, Countstr and Changestr functions, extended Do and date conversion.
Object REXX was finally released in beta form in 1995 as part of the IBM Developer Connection Volume 6 and in GA form as part of the release of OS/2 Version 4 and shortly thereafter as a seperate download for users of OS/2 Version 3 and OS/2 Server Version 4. However that release proved to be something of an anticlimax, the language was not 100% backwards compatible as had been promised, breaking not only a lot of third party REXX scripts but was also incompatible even with a number of scripts supplied on the OS/2 Warp 4 CD. The visual development environment and large portions of the GUI class library IBM had shown were missing from the package after the developers of similar development environments for Classic REXX complained and threatened to withdraw all support for IBM products from the market (it turned out that a couple of other visual development environments for Classic REXX from IBM were never released for the same reason).
Versions
- OS/2 versions
- 6.00 (12 Jul 1996) - included in Warp 4
- 6.00 (21 Jul 1997)
- 6.00 (11 Nov 1997) - Warp Fixpak 6
- 6.00 (25 Mar 1998) -
- 6.00 (18 May 1999) - IBM FTP Update
- Windows versions
- Object REXX (1996)
- Object REXX Development Edition (Summer 1997)
- Object REXX plus IBM Object REXX Workbench (GUI development & debugging) and sundry tools like tokenisers & linkers etc.
Articles
- REXX Tips & Tricks:Hints for Object REXX
- Rony G. Flatscher: Extending the Workplace Shell with Object REXX.
- Dr. Willis Boughton: SOM and Object REXX
- REXX Tips & Tricks:Sample source code for Object REXX
- Mike Baryla: On the Road with Object REXX
- Mike Baryla: Setting the Stage for Object REXX scripting
- Rony G. Flatscher: Resurrecting REXX, Introducing Object Rexx
- IBM announcement of the Open sourcing of Object REXX
Publications
- Tom Ender: Object-oriented Programming with REXX - 1997, ISBN 0471118443 - Out of print
- Ueli Wahli, Trevor Turton, Eddie Griborn & Norio Furukawa: Object Rexx for OS/2 Warp - Prentice Hall 1996, ISBN 0-13-273467-2
- Ueli Wahli, Trevor Turton, Ingo Holder: Object Rexx for Win95/NT - Prentice Hall 1996, ISBN 0-13-858028-6
- Object REXX for OS/2; Rexx Bytes Objects Now or Taking the ″Oh, oh!″ out of OO - IBM RedBook - (September 1996)
- Object REXX for Windows NT and Windows 95 With OODialog: Windows Dialog Interface - IBM RedBook - (30 December 1996)
Links
License and availability
- Originally commercial software, distributed as a component with all eComStation versions and OS/2 versions 4 and later and Warp Server 4.5 and later. Discontinued.
- Later open sourced as "Open Object REXX" but that release was not ported to OS/2. The open source version is released under the Common Public License Version 1.0