Componentes Calc UNO do OpenOffice.org provêm melhoramentos funcionais na instalação existente da suite OpenOffice.org. Componentes UNO podem prover funções completamente novas para uma área funcional esecífica, ou podem prover uma nova implementação para o existente conjunto de serviços e interfaces. Componentes UNO são a maneira comum de extender funcionalidades do OpenOffice.org. Assistentes especializados podem simplificar o trabalho para interfaces provedoras de serviço específicas. Por exemplo Calc Add-Ins podem ser usados para adicionar funções de cálculos financeiros especializados ao Calc.
Componentes UNO podem ser feitos de diferentes maneiras e com diferentes linguagens de programação (veja as
referências abaixo). O assistente é focado atualmente em tecnologias Java. Componentes UNO
são realizados como bibliotecas de classes J2SE normais onde uma classe é identificada para ser o ponto de entrada para o framework
do componente UNO. Essa classe provê informação sobre os novos serviços implementados, que são como um
contrato que novas intâncias ou objetos desse serviço devem preencher. Isso significa que não deve importar de qual
implementação você tem o contrato. Todas as implementações devem preencher o contrato segundo a especificação
do serviço. A classe de registro suporta os pontos de entrada necessários para criar novas instâncias
para uma implementação específica.
Os esqueletos do componente gerado implementam interfaces de serviço específicos e também interfaces que o framework
UNO requer. Todos os componentes UNO devem implementar essas interfaces.
Assim que você tiver implantado o novo componente UNO em uma instalação do OpenOffice.org você pode utilizá-lo diretamente de qualquer outro código ou em macros. Você pode simplesmente instanciar uma nova instância via o gerenciador de serviço global. Se você tiver um novo estilo de serviço, você pode chamar ou o construtor padrão ou o construtor definido na definição do serviço no UNOIDL.
Por exemplo:
XMyType xMT = org.openoffice.MyType.create(xContext);