|
|
Optimize with a SATA RAID Storage Solution
Range of capacities as low as $1250 per TB. Ideal if you currently rely on servers/disks/JBODs
Previous efforts to enable portability have included a multitude of standards efforts, some interpreters, and a few portable runtime systems. Most have required recompilation; none have achieved mainstream success. In the meantime, economic pressures on software developers and the urgency of delivering a multiple-platform solution in a timely fashion have made the goal more desirable than ever.
Portability and Unix
The Unix programming environment, as codified in the POSIX standards, took a major step toward portability by delivering
"source code" portability. Basically, a software product that runs on one POSIX platform can be ported to a new POSIX system
by recompiling the source programs -- ideally, with no required source code changes. In reality, source code changes and the
consequent burden of multiple versions are often required and unavoidable.
Portability and X Window
Other systems -- such as the X Window System -- address portability issues by providing a layered architecture that isolates
system-dependent functionalities. The X architecture successfully abstracts the details of the window and display system.
A program using the X Window System can use any X Window display hardware, although that program is still tied to a specific
instruction set and operating system architecture.
Neither the Unix or X Window efforts went far enough to provide universal portability. The Java programming environment, however, makes a significant step toward achieving this elusive goal. From the beginning, Java technology was intended to provide a programming environment that supports the write-once, run-anywhere (WORA) concept. Java technology has largely delivered on this promise by ensuring that Java programs will run across all Java-enabled platforms. Achieving this goal has reduced system dependencies to a very large degree.
When faced with a new computer architecture, a Java program does not need to be ported to it, or recompiled -- one delivery format serves as a universal program representation, usable on all Java-enabled computers. This capability has been achieved by a combination of a well-documented binary representation, the class file format, and a class library that makes the underlying platform functionality available through a universal abstraction layer, the Java Core APIs. We, therefore, prefer to speak of a Java program's runnability rather than its portability. A Java program does not need to be ported to a new computer -- it can simply be run. A Java program can contain constructs, however, that will deprive it of this property of runnability across all platforms. It is possible to unintentionally write a platform-specific Java program, since not all digital systems can be perfectly abstracted. For example, the file-naming convention in operating systems and display resolutions in hardware devices present different behaviors that may impede runnability.