OiL is an extensible component-based architecture for object request brokers (ORB). An ORB provides an infrastructure to perform remote method invocations (RMI) on objects residing in separated processes, possibly through a network. The use of an ORB is one of the most common ways to develop distributed object-oriented applications. OiL is available though the <%=link"Module"%>.
OiL is a very flexible ORB and almost every one of its aspects can be changed by replacement of its components (see the <%=link"Arch"%>). Nevertheless, OiL relies on three fundamental concepts that define the programming model supported:
An essential feature common in almost every ORB is the support for multithreading. OiL supports a cooperative multithreading model which is implemented over the coroutines provided by Lua. This model of multithreading is considerably different from preemptive multithreading, which is supported by most modern platforms. For a complete discussion about the multithreading model supported by standard OiL see section <%=link"Threads"%>.