Foundation Layer
The lowest level of framework which can be exploited by application developers is the Foundation. It provides the underlying infrastructure that is used to build the Common Business Objects and the Core Business Processes. It allows San Francisco to hide differences in underlying technology from application developers. This helps to make it easier to support an application on multiple platforms while still exploiting platform specific advantages. The Foundation layer also provides a consistent programming interface and structure for building applications.
The Foundation layer provides two categories of functions which are directly usable by developers. They are the Foundation Object Model Classes and Utilities. To support the distributed, mission critical requirements of San Francisco based applications, the Foundation layer also provides a set of kernel services. In most cases, the kernel services are not directly visible to developers. Instead they are invoked indirectly by the Foundation Object Model interfaces. This approach makes the application programming model much simpler to use. It also allows application developers to use new underlying technology that IBM incorporates into the infrastructure without having to modify their application code. The interfaces that application developers use remains consistent; only the underlying implementation of the infrastructure changes.
Many of the services are based on the object service definitions from the Object Management Group (OMG). For example, the kernel service provides an object transaction service, collections, communication between distributed objects, and persistence management. However, San Francisco does not provide a CORBA compliant Object Request Broker. The Foundation merges and combines OMG defined functions with functions provided by Java. It also simplifies the OMG definitions when possible, as well as adding additional function when necessary. For example, instead of supporting all of the locking types defined by OMG we are supporting only optimistic locking (to allow greater concurrent access to data) in addition to the traditional pessimistic locking approaches used by many infrastructures. The industry is currently working on the convergence of CORBA and Java technology, and we will use additional capabilities (such as support for OMG's Interorb Interoperability Protocol (IIOP)) as they evolve.
The kernel services also contain extensions that we found were necessary for our Java frameworks. For example, we use Java's Remote Method Invocation (RMI) as the basis for the communication infrastructure. In addition we have extended the RMI function to include support for areas such as server process management. We do anticipate that some kernel services will be provided by products from other vendors that compliment the Foundation. Examples of this include licensing and encryption technology.