Availability Guide for Application Design
Designing Applications for Change
Availability Guide for Application Design—525637-004
10-3
Considering Portability Requirements
Individual APIs
The NonStop Software products (principally Windows NT Server versions of NonStop
SQL/MP and NonStop Tuxedo) provide a high degree of isolation for applications from
the underlying platform differences. However, some degree of design and
implementation care must be taken with each API that might be used if the maximum
degree of portability is to be achieved—both between the NonStop operating system
and Windows NT Server, and between versions of the middleware that support clusters
of processors and versions that do not support clusters.
Operating System APIs
NonStop operating system Open System Services (OSS) provides a highly functional
set of POSIX and X/Open compliant APIs, greatly simplifying the porting of source
code and reuse of development staff between the NonStop operating system and other
X/Open compliant environments, such as UNIX systems.
Windows NT Server provides a minimal POSIX.1 execution subsystem that is
functionally weak and logically isolated from the full-functioned Win32 environment.
No obvious solution to this inconsistency exists beyond the engineering solutions of
avoidance (using higher-level APIs where possible) and isolation (providing your own
API to an easily changed common library module). Using a client/server application
model does separate those areas where full use of Win32 features is most desirable
(the user interface) from those implementing basic business transformations where
fewer nonstandard features are applicable.
Source Languages
Three languages dominate commercial application development today: C, C++, and
COBOL. A fourth language, Java, is becoming a significant alternative for distributed or
object-oriented applications.
C and C++ source codes benefit from ANSI and ISO standardization, greatly
enhancing the portability of code between different compilers.
There are still C and C++
coding standards that need to be met if source code is to be
efficiently protected against platform architecture differences. An example, particularly
with C++, is the use of function or class libraries as extensions to the basic language
functions. The compatibility of these libraries with all of the compilers that may be
required must be considered. The emergence of the Standard Template Library (STL)
definition helps resolve some of these issues for C++, in the way the ISO standard
library definition has assisted the C language. Refer to the Standard C++ Library
User’s Guide/Tutorial for more information about these libraries.
COBOL was the original and perhaps the most successful portability story in
commercial computing. Even today, the majority of commercial application code is
embedded in COBOL source. However, COBOL has never been environment
independent. COBOL compilers must provide integration with, or alternatives for,
platform features such as a structured file system and a relational database