by Robert Perper, Sr. Software Developer
Java and Unix Systems Services OS/390 Unix
Systems Services (USS), previously known as OpenEdition/MVS is a true
UNIX operating system living on System 390 computers and coexisting
quite nicely with OS/390. In fact, it is an integral part of OS/390.
For backup and restore, the USS file system HFS includes such UNIX
features as long file names, case sensitivity, UNIX type security,
symbolic links and more. Virtually none of these can be accessed from
native MVS applications. Traditional MVS storage management products,
such as Innovation Data Processing's FDR or IBM's DFDSS can back up
an entire file system (which is a single MVS dataset), but are unable
to offer file level restore. Thus the only way to reliably back them
up is as an USS application.
While USS is quite similar to other UNIX systems, there are a number
of significant differences; for example, text is EBCDIC rather than
ASCII.
Also, the USS file system HFS offers a number of file system features
not found in other UNIX systems including external links (references
to true MVS files), auditing flags and HFS extended attributes. Again,
the only way to back these up is as a true USS application.
The Innovation Data Processing development team for FDR/UPSTREAM was
charged with providing a file-level backup facility for USS. FDR/UPSTREAM,
which is a multi-platform storage management product providing such
features as backup/restore, file transfer, archiving, software distribution,
reporting and a number of other storage related functions. Clients
can run on a whole suite of operating systems including Windows NT,
Windows 95/98, OS/2, NetWare, AIX, Solaris, HPUX and more. An OS/390
mainframe systems service provides the server repository.
We designed and implemented a true USS version of FDR/UPSTREAM which
is capable of handling all of the USS specific features. It was implemented
as a command line application which can also be run as a daemon. As
a command line application, it can be integrated into the existing
scheduling (such as cron); as a daemon it can receive and process
requests from external systems including native MVS and all FDR/ UPSTREAM
clients.
As a storage management product, FDR/UPSTREAM performs the majority
of its functions (backup, archiving, etc.) in an unattended mode.
For unattended processing, a command line application is ideal. However
a user-friendly, helpful, secure user interface is required to fully
utilize its storage management functions especially for restores.
For host based FDR/UPSTREAM requests, existing MVS ISPF panels provide
a full-featured facility for requesting backups, restores, reporting,
and monitoring.
We also wanted to provide an additional user interface for workstation-based
restore requests. Requirements included multi-platform access, graphical
user interface, monitoring, error reporting, and proper security checking.
Particularly we wanted to offload the overhead of a graphical user
interface to workstations and other systems so as not to degrade overall
mainframe performance with unnecessary overhead. While a conventional
programming language, such as C or C++ could satisfy many of these
requirements, only Java offers true cross-platform compatibility.
We believe that our experiences in this development effort will be
helpful to a wide variety of administrators and developers who are
interested in USS, Java or cross-platform development.
The Java programming language has received quite a bit of press recently
due to its cross platform nature, object oriented architecture and
ability to run within web browsers. For user-interfaces it offers
an extensive variety of GUI features.
Java, as it is an interpretive language, requires a run-time environment.
The Java run-time environment can be run in two ways: inside a web
browser (as an applet), or as a stand-alone application.
When operating as an applet, you are initially running as untrusted
code (formally known as the "sandbox'). Java designers invented this
concept to keep applets from damaging the system of unwary surfers.
When running as untrusted code the vast majority of normal computing
functions are disallowed or tightly restricted including file I/O,
communications, executing programs and more. There are techniques
to becoming trusted, however they are quite complex and somewhat browser
specific. When running as a stand-alone application there are none
of the untrusted code restrictions. Java Run-Time Environ-ments (JREs)
are available for almost every operating system from the operating
system vendor, or for Microsoft Windows, from Sun, IBM and a number
of other vendors. We decided that the limitations of untrusted code
were unacceptable as communications flexibility and the ability to
run applications were requirements; thus our user interface program
had to be run as a Java stand-alone application.
Java is strong in a number of areas and excels in TCP/IP communications.
To make our application as functional as possible, we wanted the Java
program to be capable of running on the machine that is performing
the restore or on any machine in the network. Thus, it must be capable
of communicating to the program performing the restore.

Click for a larger view
Figure 1 (above) shows the components in the inter-computer communications.
The Java Client application communicates directly to the FDR/UPSTREAM
MVS server for security, and backup and file inquiry functions using
the existing FDR/UPSTREAM protocols. Initially the user must log in
and pass a required security check with the MVS server using MVS security
protocols; security is essential in a cross-platform product. Additional
communications are performed to display a full-featured, file restore
selection panel. Only when the user of the Java application wishes
to start a restore are communications established to the USS application.
The USS application, running in the background or as a daemon was
designed to be continuously listening on a specific TCP/IP port. The
Java application connects to it, and using a proprietary protocol,
is able to request that the restore begin. As the restore proceeds,
the USS application constantly sends status update and error messages
for graphic display on the Java user's screen.
Java versions 1.0 and 1.1 offer a complete and powerful graphical
user interface. In version 1.2, Java integrated the "Swing" set of
lightweight, platform independent components. Some of the new features
include progress bars, tool-tips, user-selectable "look and feel",
and more. We decided that to provide the user interface with the highest
level of functionality, to use version 1.2 and particularly the "Swing"
components.

Click for a larger view
Figure 2 (above) shows the restore inquiry and selection screen. Using
the "Swing" components allowed us to provide a user selection facility
with a selection "tree" in the top left frame, the contents of a highlighted
directory in the top right frame. In the top right frame, you can
use a pull-down menu to select a specific "version" of a file-a feature
only available with the "Swing" set.
In the lower frame, the "Restore to" item allows you to modify the
labeled value-again a "Swing" only feature.
The help system is based on the newly released JavaHelp¨ system. It
is HTML based, context sensitive and is fully indexed and is searchable.
It includes a Product Tour which describes the overall features, a
general concepts guide, assistance in getting started and specifics
for operations. To get help on a specific feature, click the arrow/question
mark button, and then click any control on the screen. The help system
will then appear with a detailed description of that control. When
you begin the restore, status slider bars show the percentage complete
for the current file and the restore as a whole. A graphic is continuously
updated showing the current performance of the restore.
Unix Systems Services offers a powerful Unix environment within MVS.
With its UNIX compatibility, flexible file system, communications
facilities and operation on System 390 mainframes it offers an ideal
platform for offering Enterprise-wide data services.
Java's extensive suite of user interface and communications services,
combined with its cross-platform capabilities makes it the development
environment of choice for end-user applications of the USS services.
When developed with this cooperative functionality in mind, you can
deliver high performance, high availability applications, which the
MVS mainframe does so well with, the high expectations for graphical
user interfaces and cross-platform availability that users expect
and Java can help you deliver.
|