Object REXX

Object REXX is a high-level, general-purpose, interpreted, object-oriented (class-based) programming language.

It is a follow-on and a significant extension of the Rexx programming language (often called "Classic Rexx"). Object REXX retains all the features and syntax of "Classic Rexx" while adding full object-oriented programming (OOP) capabilities. Although Object REXX does not implement all aspects of the "Information Technology – Programming Language REXX" ANSI X3.274-1996 standard, it offers many new features of its own.

Following its "Classic Rexx" influence, Object REXX is designed to be easy to learn, use, and maintain. Object REXX is today often referred to as Open Object Rexx (ooRexx).

History
In 1988, the "Oryx" project at IBM, under the technical direction of Simon C. Nash, experimented with merging "Classic Rexx" with the object model of Smalltalk. The motivation behind the project was to transfer the advantages of OOP to "Classic Rexx" while remaining compatible and thus transferring the usability of "Classic Rexx" to OOP. Early on, the projects focused on OOP aspect such as treating everything as an object, object-based encapsulation and message passing, object-based concurrency, classes and inheritance.

This initial work later led under the direction of Rick McGuire to the first prototype of Object REXX, which was presented in 1992. In 1994, IBM announced that Object REXX would replace "Classic Rexx" as the standard REXX interpreter in the next version of OS/2. In 1996, Object REXX was released as part of the OS/2 Warp 4 operating system. In 1997, versions for Windows 95, Windows NT and Linux followed. In 1999 an Object REXX version for AIX V4.1.5 or higher was released. In 2000, versions for  zLinux and Sun/Solaris followed. For Windows 2000, Windows Me, Windows 98 and Windows NT 4.0, the last major update for Object REXX was released in 2001.

On 12 October 2004, IBM announced the discontinuation of Object REXX and transferred the source code and licensing rights to the non-profit Special Interest Group (SIG), the Rexx Language Association (RexxLA). In 2005, the RexxLA released ooRexx as a new incarnation of Object REXX as free and open-source software under the Common Public License. This first version of ooRexx 3.0.0 has been heavily refactored compared to the original IBM source code in order to increase readability. Later, the ooRexx kernel was rewritten in pure C++, and a new architecture and native interface were designed and implemented under the technical direction of Rick McGuire. This work enabled the RexxLA to release ooRexx 4.0.0 with support for 64-bit in 2009. To this day, the RexxLA continues to develop, support and maintain ooRexx as well as "Classic Rexx" and NetRexx. Furthermore, the RexxLA organizes annual symposia.

IBM's original Object REXX interpreter continues to be available in OS/2-derived operating systems, such as ArcaOS and eComStation.

Releases
The following table contains noteworthy features and changes of major Object REXX and ooRexx interpreter versions. All ooRexx releases and the necessary documentation are available on Sourceforge. For Arch Linux based distributions the current and the development version are available as Arch User Repository. Since release 5.0.0, portable versions of the interpreter are available that allow it to be used without installation.

Features
As supersets of Classic Rexx, ooRexx and Object REXX endeavor to retain all the features of Classic Rexx.

To this, ooRexx and Object REXX add all the features typical of object-oriented languages, such as subclassing, polymorphism, and data encapsulation. Further features include multiple inheritance via the use of mixin classes.

ooRexx and Object REXX are designed to be a compatible superset of Classic Rexx. They conform to the ANSI standard for the Rexx language (X3.274-1996, “Programming Language Rexx” ), for interoperability across platforms with other conforming Rexx implementations. Thus Classic Rexx programs that conform to the ANSI-1996 standard typically run under ooRexx and Object REXX without any changes. This makes it easy to transport both program code and developer knowledge from Classic Rexx to ooRexx and Object REXX.

For Windows, ooRexx includes a Windows Script Host (WSH) Scripting Engine for Rexx. It also includes Object Linking and Embedding/ActiveX support and OODialog Runtime to support OODialog programs. However, the code that IBM released to open source in 2004 did not include the classes for IBM System Object Model (SOM) and Workplace Shell (WPS) support.

The OS/2 version of IBM Object REXX includes classes to support the IBM System Object Model and Workplace Shell. These are also included OS/2's initial follow-on product, eComStation, and also in its current descendant, ArcaOS.