|
UNO is a component model that offers interoperability between different programming languages, different objects models, different machine architectures and and different processes either in LAN or via the internet. The StarOffice and StarPortal products have proven the useability of UNO in complex real world applications. Developers that want to use, extend or modify the functionality of one of the products will do this using UNO. UNO is not limited to the above applications. The base libraries of UNO are independent of StarOffice and can be used as a framework for other applications. UNO is freely available (it is distributed under the LGPL license) and currently supports Java, C and C++ ( on windows, linux and solaris ). A bridge for COM OLE Automation already exists. UNO is developed by the OpenOffice community including the Sun Microsystems development labs. In near future a fully functional COM and CORBA-bridge will be available. Other topics are a SOAP bridge and bridges to scripting languages such as python or perl. | ||
Some technical details |
||
UNO is interface based ( as COM and CORBA ). Components implement interfaces compliant to their interface specification. Multiple components communicate only via their interfaces. This allows to implement one component in a different language or to move an implementation to another machine without modifying the other components. This gives you huge flexibility and preserves earlier invested efforts. Each component lives in a Uno Runtime Environment (URE). A URE is identified by the implementation language (e.g. C++, Java, perl, ...) and the current process. There is no performance overhead for components, that are instantiated within the same URE, e.g. in C++ a call from component A to B is just a virtual call. The calls between components from different UREs are bridged by UNO. ![]() UNO-interfaces are specified in IDL. All UNO-interfaces must be derived from a superinterface, that offers acquire,release and a queryInterface method (comparable to COM). The lifetime of UNO-objects is controlled by global reference counting. Exceptions are used for error handling. UNO guarantees object identity, thread identity and the sequence of calls.
A sequence of oneway calls can be transfered and executed extremly fast via an interprocess connection. The UNO interprocess protocol is optimized for low bandwidth connections. Have a look a this document for further technical information. | ||
Applications built on UNO |
||
This chapter discusses some use cases of UNO and what benefits the applications got from UNO. Staroffice (or OpenOffice)StarOffice is a fully featured office productivity suite. StarOffice mainly uses the C++ -in-process functionality of UNO. Before UNO the StarOffice development suffered very much from incompatible changes ( e.g. adding a new virtual method or a new member to a class) in one of the base libraries. This forced a complete rebuild of the product, which roughly consumed 2 days and was done only once a week. These incompatible updates could be reduced a lot by using UNO and as a result the whole work became more efficient. Please have a look at this document for a more complete explanation. Java components in StarOffice (e.g. the pgp-integration) use the Java-C++ bridge to access the StarOffice API. External developers can easily integrate their desired functionalty in StarOffice using this bridge. External developers can use the UNO-interprocess bridge to access StarOffice-API from a different process for remote office control. StarPortalStarPortal is a highly distributed application, which is soon to come. It provides a fully featured office productivity suite via the internet. Office documents can be accessed via various clients ( WebBrowser-Plugins, PDAs, HTML-Clients, etc. ).UNO is used in the communication between the WebBrowser-Plugin and the office application server. All outputdevice-calls (e.g. DrawRect, DrawLine, SetColor) necessary to paint a scene are transmitted via the internet connection ( the necessary performance is reached by declaring those calls oneway). UNO is used to bridge between Java Server Pages ( running within the webserver ) and the Universal Content Broker ( a C++ process that is responsible for data access ). | ||
UNO, COM, CORBA, Java RMI |
||
It is often asked, why a new component model (UNO) has been developed, instead of using already existing ones (such as COM/DCOM, CORBA, Java RMI). The main reason is that the other object models don't provide the functionality needed for applications such as StarOffice or StarPortal.
| ||
|
||
Auhor:
Jörg Budischewski
($Date: 2001/08/09 13:27:05 $) Copyright 2001 Sun Microsystems, Inc., 901 San Antonio Road, Palo Alto, CA 94303 USA. |
||
|