implementations of these language bindings have a relatively coherent API definition (in particular, the different Java implementations share the same abstract API classes). The 'Look and Feel' part of the SAGA Core API specification covers the following areas: security and session management permission management asynchronous operations monitoring asynchronous notifications attribute management I/O buffer management Architecture SAGA is designed as an object oriented interface. It encapsulates related functionality in a set of objects, that are grouped in functional namespaces, which are called packages in SAGA. The SAGA core implementation defines the following packages: saga::advert - interface for Advert Service access saga::filesystem - interface for file and directory access saga::job - interface for job definition, management and control saga::namespace - abstract interface (used by advert, filesystem and replica interfaces) saga::replica - interface for replica management saga::rpc - interface for remote procedure calls client and servers saga::sd- interface for service discovery in distributed environments saga::stream - interface for data stream client and servers The overall architecture of SAGA follows the adaptor pattern, a software design pattern which is used for translating one interface into another. In SAGA it translates the calls from the API packages to the interfaces of the underlying middleware. The SAGA run-time system uses late binding to decide at run-time which plug-in (middleware adaptor) to load and bind. Supported middleware The following table lists the distributed middleware systems that are currently supported by SAGA. The column labeled Adaptor Suite names the collection (release package) of the (set of) middleware adaptors that provides support for the middleware system. Implementations Since the SAGA interface definitions are not bound to any specific programming language, several implementations of the SAGA standards exist in different programming languages. Apart from the implementation language, they differ from each other in their completeness in terms of standard coverage, as well as in their support for distributed middleware. SAGA C++ SAGA C++ was the first complete implementation of the SAGA Core specification, written in C++. Currently the C++ implementation is not under active development. RADICAL-SAGA(Python) RADICAL-SAGA is a light-weight Python package that implements parts of the OGF GFD.90 interface specification and provides plug-ins for different distributed middleware systems and services. RADICAL-SAGA implements the most commonly used features of GFD.90 based upon extensive use-case analysis, and focuses on usability and simple deployment in real-world heterogeneous distributed computing environments and application scenarios. RADICAL-SAGA currently implements the job and the file management