UNO Development Kit Project

UNO (Universal Network Objects) is the interface based component model of OpenOffice.org. UNO offers interoperability between different programming languages, different objects models, different machine architectures and different processes either in LAN or via the internet. UNO components can be implemented in and accessed from any supported programming language.

Currently exist bindings for Java, C, C++ (compiler dependent, please see http://porting.openoffice.org for a list of supported platforms), OLE Automation and Python(in a alpha state).

Office development kit package

All tools, libaries and jar-files forming the UNO core plus all IDL interfaces used in the office are available for a seperate download. You can use the development kit to extent OpenOffice by additional components or to to script OpenOffice using the interprocess bridge.

You can also use the ODK as the framework for new platform independent applications (independent of OpenOffice.org).

Documentation

Concepts

UNO The base concepts of Universal Network Objects
Guide to UNO A complete introduction to the language independent part of UNO.
UNO Language Binding A summary of definitions what functionality a language binding provides.
Bridge How to translate the calls from one language into another one.
UNO-CORBA Bridge Concepts for the UNO-CORBA bridge (not yet implemented).
updated and revised UNO Contexts UNO Component and Current Context
updated and revised UNO Security UNO Security Model
Streaming services Introduction into the UNO streaming concepts
Scripting Framework Proposals for a Language Independent Scripting Framework

Specifications

XML Description Creating a XML module deployment description.
Remote Bridge How to use interprocess bridges.
Connection Services Additional information about the com.sun.star.io.Acceptor and com.sun.star.io.Conector services.
UNO-Url Specifies semantics and syntax of the UNO-Url.
C++ bridges This document is written for developers implementing a bridge from C++ to binary UNO. The last paragraph covers the Microsoft Visual C++ - UNO bridge in detail.
OLE Automation Bridge Using UNO services in a COM environment and vice versa.
Binary TypeLibrary Binary specification of the UNO typelibrary.
UNO IDL specifaction Description of UNO IDL (keywords,syntax)
Binary UNO specifaction Specification of binary (C-)UNO types. This is the platform-dependent intermediate (bridging) format.
C++ UNO specification Specification of C++ UNO types. This is what the cppumaker tool generates for you.
C UNO specification Specification of C UNO types. This is what the cunomaker tool generates for you.
Uno RemoteProtocol Binary specification of the UNO interprocess protocol.
Java in UNO and OpenOffice Fundamental informations for the Java developer, who wants to write components for UNO or OpenOffice
Library Unloading API that offers a way to unload all unused libraries at once
Default Bootstrapping Specification for Bootstrap Arguments and UNO Default Bootstrapping
Micro Deployment Specification for Bootstrap Arguments and Micro Deployment
Text Conversions Specification of the text conversion functions in SAL

Drafts

COM  COM -  UNO language specification
UNO and SOAP Considerations
UNO Synchronization and Multi Threading Reflect the current state of handling multi threading and synchronization in UNO.
Remote Visualization and Oneways Example of non transparent remote visualization
Logging Concepts and specification of a Logging API/framework.

Tutorials/Examples

Component in Java Writing a simple UNO component in Java (Inspector/CalcAddins).
Component in C++ Writing a simple UNO component in C++.
Guide to C++ UNO This document gives an introduction to the C++ mapping of UNO.
Remote Demo Demo that accesses OpenOffice via an interprocess bridge.
UNO Components Developing components with UNO (examples in Java and C++)
OLE Automation Controlling OO through Automation
API examples Contains example usages of the the API which are ready-to-compile.
These examples are written in different programming languages.
new Registries in UNO Explains the UNO registry handling and how
components can be added to OpenOffice.

References

IDL Reference The generated documentation of all IDL files.
C++ Reference The generated documentation of all C and C++ APIs in the UDK and SAL.
Java Reference The generated documentation of the Java UNO API.

Tools and FAQ

Tools Description of all command line tools
FAQ Frequently asked questions about UNO

Links

new PyUNO Python-UNO bridge, maintained by Ralph Thomas

Tasks

Open tasks Gives some ideas of how YOU can contribute to the udk-project
API tests Help implement API tests for the udk-project

Modules in UNO Development Kit Project
Module Function
cppu The UNO runtime library which is used by all language bindings except Java.
idlc The IDL compiler.
cppuhelper C++ UNO implementation helpers.
javaunohelper Java UNO Helper implementations.
jurt Java UNO runtime. Contains runtime of the Java language binding for UNO.
bridges The bridges to different languages like C++ (M$ Visual C++, SUNWspro5 SPARC, egcs 2.9.?), Java and remote.
remotebridges Contains UNO services to build interprocess UNO bridges, such as iiop-bridge.
stoc One components - basic UNO services.
cpputools Collection of UNO utility and runtime programs.
registry The implementation of the registry.
codemaker Contains the programs to generate c++ header files, Java files and CORBA IDL files. The programs work on a binary type repository which is generated by the unoidl compiler.
rdbmaker Generate binary type repository subset from the binary type repository or with the service com.sun.star.reflect.TypeDescriptionManager.
sandbox A Java security manager based on Java 1.1.
jut "Java UNO Tools" - a collection of Java utilities, the Java parallel to the cpputools project.
product Contains makefiles to build a UDK zip file, which contains all core libraries of the UNO component model. Additionally this module contains some UNO samples.

Interesting modules outside the UNO Development Kit Project
Module Function
sal The System abstraction layer implements a basic abstraction of the underlying system. For your components to be system independent you should use SAL. SAL includes abstractions for thread creation and synchronization. Mechanisms for process communication and file system access are also part of this library. Management of libraries and profiles is also included. Functions for creating and manipulating strings and wide strings belong to SAL. The functionality of SAL is splitted in two namespaces osl (system functions) and rtl (strings and memory management) SAL only exports functions conforming to the c calling convention. So, it should be suitable to be a system abstraction for any language.
store This project provides the hierarchical storages for the component registry.