Jump to content

Object REXX: Difference between revisions

From EDM2
Ak120 (talk | contribs)
mNo edit summary
 
(51 intermediate revisions by 3 users not shown)
Line 1: Line 1:
'''Object REXX''' 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]]. It was originally released in versions for OS/2 and [[AIX]] that offered integration with [[SOM]] 2.1 and had some graphic libraries, 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.
'''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.


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''', the source code release only consisted of the Object REXX code as it stood at the time and did not include the SOM integration or OS/2 specific features.  
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, while on MS Windows and [[Linux]] OREXX has become the standard. This eventually lead IBM to cease all Object REXX development and hand it over to a third party.


====Object REXX coexistence with Classic REXX====
==Implementations==
OS/2 version 4 and later is shipped with both Classic REXX and Object REXX interpreters and the same is true and 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.
*[[IBM Object REXX]]
*[[Open Object REXX]]


It is in general recommended that Classic REXX is set as the default since most OS/2 and eComStation utilities use it.
===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


====OS/2 text editors with Object REXX support====
==Utilities==
* [[jEdit]] - Java based editor - Object REXX syntax highlighting built in - Current.
* [[RexxLiterate]] - Automatic document generator - Open source


====Background & history====
;Text editor support
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'''.
* [[Enhanced Editor]] (EPM) - ''Script Editor'' shipped with OS/2 Warp 4 OpenDoc
 
* [[jEdit]] - Java based editor - Object REXX syntax highlighting built in
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 AIX/Motif, 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 how 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) - [ftp://service.boulder.ibm.com/ps/products/ad/obj-xx/objrxx30.zip IBM FTP] Update
 
;Windows versions
* Object REXX Development Edition (Summer 1997)
: Object REXX plus IBM Object REXX Workbench (GUI development & debugging) and sundry tools like tokenisers & linkers etc.


==Articles==
==Articles==
* [[REXX Tips & Tricks:Hints for Object REXX]]
* Rony G. Flatscher: ''[http://wi.wu.ac.at/rgf/rexx/misc/ecoop06/ECOOP2006_RDL_Workshop_Flatscher_Paper.pdf Resurrecting REXX, Introducing 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: [http://wi.wu.ac.at/rgf/rexx/misc/ecoop06/ECOOP2006_RDL_Workshop_Flatscher_Paper.pdf Resurrecting REXX, Introducing Object Rexx]
* [http://www-01.ibm.com/software/awdtools/rexx/opensource.html IBM announcement of the Open sourcing of Object REXX]


==Publications==
==Publications==
* Tom Ender: ''Object-oriented Programming with REXX'' - 1997, ISBN 0471118443 - Out of print
* Veneskey; Trosky; Urbaniak: ''Object REXX by Example'' – Aviar 1996, ISBN 0-9652329-0-5
* Ueli Wahli, Trevor Turton, Eddie Griborn &  Norio Furukawa: ''Object Rexx for OS/2 Warp'' - Prentice Hall 1996, ISBN 0-13-273467-2
* Tom Ender: ''Object-oriented Programming with REXX'' - Wiley 1997, ISBN 0-471-11844-3
* [http://www.redbooks.ibm.com/pubs/pdfs/redbooks/sg244586.pdf Object REXX for OS/2; Rexx Bytes Objects Now or Taking the ″Oh, oh!″ out of OO] - IBM RedBook - (September 1996)
* [http://www.redbooks.ibm.com/abstracts/sg244825.html?Open Object REXX for Windows NT and Windows 95 With OODialog: Windows Dialog Interface] - IBM RedBook - (30 December 1996)


==Links==
==Links==
* [http://www.oorexx.org Open Object REXX website] - By the [[REXX Language Association]].
Small programs or routines that you can integrate into your own programs or study to learn from, but are not delivered in library form.
 
* [http://rosettacode.org/mw/index.php?title=Special%3ASearch&search=Walter+Pachl&go=Go Walter Pachl's code on rosettacode.org] - Mostly Classic REXX but also a few Object REXX snippets.
==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. It was released under the [[Common Public License]] Version 1.0
 
==Publisher==
* [[IBM]]
* [[REXXLA]]


[[Category:Tools]][[Category:REXX]][[Category:MS Windows Tools]][[Category:Linux Tools]][[Category:AIX Tools]][[Category:Solaris Tools]]
[[Category:Programming Languages]]

Latest revision as of 16:08, 13 December 2019

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.

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, while on MS Windows and Linux OREXX has become the standard. This eventually lead IBM to cease all Object REXX development and hand it over to a third party.

Implementations

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.

Utilities

Text editor support
  • Enhanced Editor (EPM) - Script Editor shipped with OS/2 Warp 4 OpenDoc
  • jEdit - Java based editor - Object REXX syntax highlighting built in

Articles

Publications

  • Veneskey; Trosky; Urbaniak: Object REXX by Example – Aviar 1996, ISBN 0-9652329-0-5
  • Tom Ender: Object-oriented Programming with REXX - Wiley 1997, ISBN 0-471-11844-3

Links

Small programs or routines that you can integrate into your own programs or study to learn from, but are not delivered in library form.