Blog: Alternative Programming Languages for z/OS Development

June 16th, 2020 Blog: Alternative Programming Languages for z/OS Development
J Jeffrey Broderick
Enterprise Architect

 

Introduction

When many professionals in the Information Technology field think about mainframe development, they almost single-mindedly view it as a COBOL-only world. Although COBOL has dominated application development on IBM Z mainframe hardware, it is not the only language used for development. Since its inception in the mid-1960s, the z/OS platform has supported a plethora of programming languages. Those of us who have worked in mainframe application development are aware of many, including FORTRAN, AutoCoder, Assembler, PL/I, CSP, Algol, RPG and, of course, the most pervasive language on z/OS, COBOL.

A large number of specialty programming languages were also developed, several of which had significant market success. Products like FOCUS, RAMIS, NOMAD, TELON, and GENER/OL were considered 4th generation languages, as they provided a much more convenient way to generate entire applications from a more concise scripting/directive language. Languages like EasyTrieve, SAS, SPSS, and Quickjob provided a “quick and dirty” way for many information technology users to easily create and run their own reporting. JCL – Job Control Language – is also a legitimate language and provides powerful capabilities for managing job execution and data manipulation, but it can vary considerably by operating system.

Any customer looking to re-energize their mainframe application development should consider these four key attributes:

  1. Platform Efficiency/Specialty Processor Exploitation
  2. Developer Availability
  3. Integrated Development Environment
  4. API Development

1. Platform Efficiency/Specialty Processor Exploitation: zIIP and zAAP

IBM introduced the zAAP specialty processor for the IBM eServer zSeries 900 in October 2000. This was the advent of a 64-bit z/Architecture and enabled a more practical and viable implementation for java virtual machines (JVMs). The predecessor architecture was 31-bit, which was not as compliant with 32-bit Java applications. Integrated Facilities for Linux (IFLs) were also introduced on the zSeries 900.

With the success of the System z Application Assist Processors (zAAPs), IBM introduced the System z Integrated Information Processors (zIIPs) with the z9 family. To provide historical context, the zAAP processor functionality was fully integrated into the zIIP processors (zAAP on zIIP) with the z13 family of processors. Additionally, Java can exploit the Simultaneous MultiThreading (SMT) capability built into the z13 hardware and beyond. The exploitation of SMT allows for up to two threads per core for a better overall throughput for multiple concurrent workloads. This effectively doubles the capability of the zIIP for Java workloads by doubling the number of potential threads for execution. However, the actual performance improvement is very workload dependent.

Organizations will begin to see more opportunities for Secure Service Containers (SSC) for deploying containerized solutions that can leverage zIIP technologies. Existing offerings such as IzODA (IBM Open Data Analytics) and IBM Cloud Paks can already leverage zIIP technology. These types of SSC offerings provide powerful capabilities to leverage the hardware of choice for development, execution and runtime. Many of these products were frequently deployed on AIX, Unix, or Linux environments, but with SSC and zIIP technologies, they can now also deploy on z/OS.

2. Developer Availability

The availability of developers with specific language skills can be regional. Universities often choose which programming languages are core to their curriculum based on those that are most prevalent or have an increasing adoption rate by organizations within their geography. Many universities still teach COBOL and other core mainframe skills, and most incorporate Java, C++ and Python into their program requirements.

Be wary of adopting a new language for application development if there is a shortage of developers. If your organization cannot easily find skilled developers now, it is unlikely they will suddenly materialize in a few years. It is very important to manage development costs by being able to retain skilled developers and find their replacements if necessary. Here are some steps you can take to future-proof your application development:

  • Talk to your existing application developers.
  • Identify which universities and colleges they attended or where they received their technology training.
  • Research those same universities to identify their academic directions.
  • Reach out to those respective universities if your organization is looking for specific skillsets. Academic institutions want to provide education and skills that result in highly desirable, employable graduates.

3. Integrated Development Environments

The advent of Integrated Development Environments (IDEs) has enabled an entirely new generation of developers to create code. What originally started as source code editors has developed into very sophisticated tooling to provide efficiencies and enhance code production. Regardless of the languages that an organization adopts, it is essential that application developers be enabled with the latest IDEs available. Many mainframe developers are extremely efficient with their XEDIT, ISPF, or ICCF editor environments; they have learned and developed shortcuts, macros, command stacking, etc., to derive the highest level of efficiency for themselves. Do not force developers who are skilled in any one IDE to migrate to another IDE (such as Rational Developer for z). Providing the option to leverage the IDE of choice is far more efficient. Newer developers gravitate to graphical IDEs, as it is what they have always worked with. More experienced developers will leverage IBM Developer for z/OS (IDz) for functions and integrations that are not available in their editor.

Providing modernized IDEs enables both newer and more seasoned application developers to leverage the tooling that best fits their needs and be as productive as possible. There are also a few Open Source IDEs available such as Eclipse and Python Workbench which may be valid starting points.

4. API Development

The realm of applications and application integrations has expanded beyond the monolithic, massively constructed single modules of the past. Teams should be researching and implementing Application Programming Interfaces (APIs) for every new development or maintenance activity to maximize code re-use, avoid massive application rewrites, and expand functionality and data access throughout the enterprise without moving or cloning the data.

The z/OS environment has supported APIs and cross-language calling and invocation technologies for decades. Developing modular, API-based routines and functions lends tremendous extensibility and value to application development. Tools like IDz offer a convenient and robust method to derive web services via API integrations. Combining a modern IDE for API development provides a strategic path for modernizing an application development organization. It allows for development in multiple languages using best-of-breed technologies, leverages programmer productivity functions, and enables code deployment into an API enterprise, all of which can provide significant value.

More Information
Read the eBook: Alternative Programming Languages for z/OS Development

For more information on z/OS or IBM Z solutions, contact your Mainline Representative, or contact us here.

You may be interested in:

Blog: Benefits of z/OS Container Extensions on IBM Z

Blog: Pervasive Encryption: Linux on Z and Data at Rest

Mainline