## Other Design Objectives

As well as its scientific objectives, the AST library's design includes a number of technical criteria intended to make it applicable to as wide a range of projects as possible. The main considerations are described here:

1. Minimum Software Dependencies. The AST library depends on no other other software.

2. Environment Independence. AST is designed so that it can operate in a variety of “programming environments” and is not tied to any particular one. To allow this, it uses simple, flexible interfaces to obtain the following services:

   - Data Storage. Data I/O operations are based on text and/or FITS headers. This makes it easy to interface to a wide variety of astronomical data formats in a machine-independent way.

   - Graphics. Graphical output is produced via a simple generic graphics interface, which may easily be re-implemented over different graphics systems. AST provides a default implementation based on the widely-used PGPLOT graphics system (SUN/15sun15).

   - Error Handling. Error messages are written to standard error by default, but go through a simple generic interface similar to that used for graphics (above). This permits error message delivery via other routes when necessary (e.g. in a graphical interface).

3. Multiple Language Support. AST has been designed to be called from more than one language. Both C and Fortran interfaces are available (see SUN/210sun210 for the Fortran version) and use from C3#3 is also straightforward if the C interface is included using:

   4#4

   A JNI interface (known as “JNIAST” - see `http://www.starlink.ac.uk/jniast/`) has also been developed by Starlink which allows AST to be used from Java.

4. ObjectObject Oriented Design. AST uses “object oriented” techniques internally in order to provide a flexible and easily-extended programming model. A fairly traditional calling interface is provided, however, so that the library's facilities are easily accessible to programmers using C and Fortran.

5. Portability. AST is implemented entirely in ANSI standard C and, when called via its C interface, makes no explicit use of any machine-dependent facilities.

   The Fortran interface is, unavoidably, machine dependent. However, the potential for problems has been minimised by encapsulating the interface layer in a compact set of C macros which facilitate its transfer to other platforms. No Fortran compiler is needed to build the library.

   Currently, AST is supported by Starlink on PC Linux, Sun Solaris and Tru64 Unix (formerly DEC UNIX) platforms.