NetRexx

Last updated
NetRexx
NETREXX.gif
Paradigm multiparadigm: object-oriented, procedural, structured
Designed by Mike Cowlishaw
First appeared1996;28 years ago (1996)
Stable release
4.06 / 2 March 2024;14 days ago (2024-03-02)
Typing discipline Static, strong, safe, partly dynamic, everything is a string (for the Rexx data type, which handles strings and numbers)
OS Cross-platform: Linux, Microsoft Windows, macOS, z/OS, z/VM, Android
License ICU License [1]
Filename extensions .nrx
Website www.netrexx.org
Major implementations
RexxLA NetRexx [2]
Influenced by
PL/I, REXX, ooREXX, Java

NetRexx is an open source, originally IBM's, variant of the REXX programming language to run on the Java virtual machine. [3] It supports a classic REXX syntax, with no reserved keywords, along with considerable additions to support object-oriented programming in a manner compatible with Java's object model, yet can be used as both a compiled and an interpreted language, with an option of using only data types native to the JVM or the NetRexx runtime package. The latter offers the standard Rexx data type that combines string processing with unlimited precision decimal arithmetic.

Contents

Integration with the JVM platform is tight, and all existing Java class libraries can be used unchanged and without special setup; at the same time, a Java programmer can opt to just use the Rexx class from the runtime package for improved string handling in Java syntax source programs. [4]

NetRexx is free to download from the Rexx Language Association. [2] IBM announced the transfer of NetRexx 3.00 source code to the Rexx Language Association (RexxLA) on June 8, 2011. [5]

History

In 1995 Mike Cowlishaw ported Java to OS/2 and soon after started with an experiment to run REXX on the JVM. With REXX generally considered the first of the general purpose scripting languages, [6] NetRexx is the first alternative language for the JVM. [7] The 0.50 release, from April 1996, contained the NetRexx runtime classes and a translator written in REXX but tokenized and turned into an OS/2 executable. [8] The 1.00 release came available in January 1997 and contained a translator bootstrapped to NetRexx.

Release 2.00 became available in August 2000 and was a major upgrade, in which interpreted execution was added. [9] [10]

Mike Cowlishaw left IBM in March 2010, and the future of IBM NetRexx as open source was unknown for a while. IBM finally announced the transfer of NetRexx source code to the Rexx Language Association (RexxLA) on June 8, 2011, 14 years after the v1.0 release. [5] [11]

IBM released the NetRexx source code to RexxLA under the ICU license. RexxLA shortly after released this as NetRexx 3.00 and has followed up with regular releases, with 4.01 (2021-03-20) adding Java Platform Module System support to support Java versions 9 and higher. [12] As of 2018 the ICU license has not been approved by OSI; it appears to be a variant of the Expat License. [13]

Syntax

The syntax and object model of NetRexx differ from Object REXX, another IBM object-oriented variant of REXX which has been released as open source software. The successor ooREXX shares a few syntactical elements (LOOP, DO OVER) not found in classical REXX.

NetRexx is written in NetRexx and uses the decimal arithmetic of REXX specified in ANSI X3.274.

Related Research Articles

<span class="mw-page-title-main">Java (programming language)</span> Object-oriented programming language

Java is a high-level, class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible. It is a general-purpose programming language intended to let programmers write once, run anywhere (WORA), meaning that compiled Java code can run on all platforms that support Java without the need to recompile. Java applications are typically compiled to bytecode that can run on any Java virtual machine (JVM) regardless of the underlying computer architecture. The syntax of Java is similar to C and C++, but has fewer low-level facilities than either of them. The Java runtime provides dynamic capabilities that are typically not available in traditional compiled languages.

<span class="mw-page-title-main">Mike Cowlishaw</span>

Mike Cowlishaw is a visiting professor at the Department of Computer Science at the University of Warwick, and a Fellow of the Royal Academy of Engineering. He is a retired IBM Fellow, and was a Fellow of the Institute of Engineering and Technology, and the British Computer Society. He was educated at Monkton Combe School and the University of Birmingham.

<span class="mw-page-title-main">IBM System Object Model</span> Programming framework

In computing, the System Object Model (SOM) is an object-oriented shared library system developed by IBM. DSOM, a distributed version based on CORBA, allowed objects on different computers to communicate.

<span class="mw-page-title-main">XEDIT</span>

XEDIT is a visual editor for VM/CMS using block mode IBM 3270 terminals.

<span class="mw-page-title-main">Object REXX</span>

The Object REXX programming language is a general-purpose object-oriented scripting language.

<span class="mw-page-title-main">Java (software platform)</span> Set of computer software and specifications

Java is a set of computer software and specifications that provides a software platform for developing application software and deploying it in a cross-platform computing environment. Java is used in a wide variety of computing platforms from embedded devices and mobile phones to enterprise servers and supercomputers. Java applets, which are less common than standalone Java applications, were commonly run in secure, sandboxed environments to provide many features of native applications through being embedded in HTML pages.

<span class="mw-page-title-main">SlickEdit</span>

SlickEdit, previously known as Visual SlickEdit, is a cross-platform commercial source code editor, text editor, and Integrated Development Environment developed by SlickEdit, Inc. SlickEdit has integrated debuggers for GNU C/C++, Java, WinDbg, Clang C/C++ LLDB, Groovy, Google Go, Python, Perl, Ruby, Scala, PHP, Xcode, and Android JVM/NDK. SlickEdit includes features such as built-in "beautifiers" that can enhance code as you type, code navigation, context tagging, symbol references, third-party tool integration, DIFFZilla, syntax highlighting, and 15 emulations.

Comparison of the Java and .NET platforms.

The Dynamic Language Runtime (DLR) from Microsoft runs on top of the Common Language Runtime (CLR) and provides computer language services for dynamic languages. These services include:

Eclipse OpenJ9 is a high performance, scalable, Java virtual machine (JVM) implementation that is fully compliant with the Java Virtual Machine Specification.

Fantom is a general-purpose object-oriented programming language, created by Brian Frank and Andy Frank. It runs on the Java Runtime Environment (JRE), JavaScript, and the .NET Common Language Runtime (CLR). Its stated goal is to provide a standard library API. Fantom uses a curly brace syntax, supports functional programming through closures and concurrency through the Actor model, and blends aspects of both static and dynamic typing.

<span class="mw-page-title-main">LEXX (text editor)</span>

LEXX is a text editor which was possibly the first to use live parsing and colour syntax highlighting. It was written by Mike Cowlishaw of IBM in 1985. The name was chosen because he wrote it as a tool for lexicographers, during an assignment for Oxford University Press's 'New Oxford English Dictionary'. The program ran on mainframes under VM/CMS. LEXX's design was based on several other editors written by the same author augmented by the ability to dynamically parse text and display colour on the new colour terminals that had recently become available. It was programmable using dynamically-loaded compiled commands or using interpreted commands.

The Java Development Kit (JDK) is a distribution of Java technology by Oracle Corporation. It implements the Java Language Specification (JLS) and the Java Virtual Machine Specification (JVMS) and provides the Standard Edition (SE) of the Java Application Programming Interface (API). It is derivative of the community driven OpenJDK which Oracle stewards. It provides software for working with Java applications. Examples of included software are the Java virtual machine, a compiler, performance monitoring tools, a debugger, and other utilities that Oracle considers useful for Java programmers.

RemObjects Software is an American software company founded in 2002 by Alessandro Federici and Marc Hoffman. It develops and offers tools and libraries for software developers on a variety of development platforms, including Embarcadero Delphi, Microsoft .NET, Mono, and Apple's Xcode.

<span class="mw-page-title-main">Rexx</span> Command/scripting/programming language

Rexx is a programming language that can be interpreted or compiled. It was developed at IBM by Mike Cowlishaw. It is a structured, high-level programming language designed for ease of learning and reading. Proprietary and open source Rexx interpreters exist for a wide range of computing platforms; compilers exist for IBM mainframe computers.

<span class="mw-page-title-main">GraalVM</span> Virtual machine software

GraalVM is a Java Development Kit (JDK) written in Java. The open-source distribution of GraalVM is based on OpenJDK, and the enterprise distribution is based on Oracle JDK. As well as just-in-time (JIT) compilation, GraalVM can compile a Java application ahead of time. This allows for faster initialization, greater runtime performance, and decreased resource consumption, but the resulting executable can only run on the platform it was compiled for. It provides additional programming languages and execution modes. The first production-ready release, GraalVM 19.0, was distributed in May 2019. The most recent release is GraalVM for JDK 21, made available in September 2023.

References

  1. IBM (2011). "ICU License - ICU 1.8.1 and later" . Retrieved 2014-02-02.
  2. 1 2 "NetRexx". RexxLA. 2011. Retrieved 2014-02-02.
  3. M. F. Cowlishaw (1997). The NetRexx Language. Prentice-Hall. ISBN   0-13-806332-X.
  4. "Creating Java Applications Using NetRexx" (ZIP). IBM Redbooks. September 1997. SG24-2216-00. Retrieved 2014-02-02.
  5. 1 2 René Jansen (2011-06-08). "Great News: NetRexx Open Source". ibm-netrexx mailing list. <1496987A-5293-41EA-B88A-56B1B51B7B55@xs4all.nl>. Retrieved 2014-02-02.
  6. Michael L. Scott (2005-11-21). Programming Language Pragmatics (2nd ed.). Elsevier. p. 694. ISBN   0-12-633951-1.
  7. Per Bothner (1996). "Kawa History". Kawa . GNU . Retrieved 2014-01-24. started active development June 1996
  8. "NetRexx - Programming language derived from Java and Rexx". OS/2 EWS. IBM PC BBS. 1996. Retrieved 2014-01-24.
  9. M. F. Cowlishaw (2009-05-22). "NetRexx 2" (PDF). IBM UK Laboratories . Retrieved 2014-01-24.
  10. "software/awdtools/netrexx". IBM. 2005. Retrieved 2014-02-02.
  11. Fernando Cassia (2011-06-11). "Why an open NetRexx means humans can do Java". TechEye . Retrieved 2014-02-02.
  12. "NetRexx Translator Downloads, Releases and Release Candidates". RexxLA.org. 2013. Retrieved 2014-01-24.
  13. "Open Source Licenses". OSI. 2014. Retrieved 2014-02-02.