Blogjava中很少有关于OpenOffice.org的讨论,本人做过这方面的项目现将项目中的经历记录下,方便自己和大家。
    上一个项目是关于OpenOffice.org二次开发的,现在那个项目已经结束了,但是对于OpenOffice.org总是有一种难以割舍,难以忘怀的心情。这可能主要是因为OpenOffice.org是SUN公司开源的,并且它最接近于个人的现实生活吧:),况且它各方面性能不差是我们在政府大力推广正版化之后的良好替代方案,它能够为我们极大的减少软件支出费用,也能够降低大家使用盗版软件所带来的心理上的负担。本人强烈建议软件开发人员使用正版软件,如果不能的话,请使用免费软件替代。试想自己都不能够尊重别人的知识产权,今后我们有何理由向别人提及它、要求它呢!这不就是自己砸自己的脚嘛。
    今后我会抽空慢慢总结在做OpenOffice.org二次开发项目之中遇到的问题与经验教训。
    OpenOffice.org的二次开发,主要是向其添加UNO组件的形式进行的,具体而言就是向其添加UNO组件的压缩包,这个压缩包在OOo调用的时候又分为两种:
    1、OOo直接调用这部分插件代码。
    2、OOo通过其内部的脚本调用插件代码。
由于所属层次与调用机制不同,造成了脚本调用功能完善,但第一次执行效率较另一个低下;而直接调用速度快,但在调用OOo内部的类的时候层次有所限制。具体性能测试后脚本调用并不会滞后多少。综其而言,通过脚本调用插件是我们的首要选择目标。下面我来向大家简要介绍两种UNO包的结构及其异同:
    一:直接调用的包:
          zip--|
               |-jarName.jar
               |
               |-addons.xcu
               |-jarName.xcu

    二:脚本调用的包:
          zip--|
               |-jarName文件夹--|--jarName.jar
               |                |
               |                |--parcel-descriptor.xml
               |
               |-addons.xcu
               |
               |-META-INF--|--manifest.xml

    相同点:
       1、由于OOo现在是SUN公司主导的开源项目,所以遵循SUN公司的打包惯例UNO包使用的也是zip打包压缩算法,这样就极大减少了琐碎小文件对于系统时间空间上地占用。
       2、它们都有设置OOo菜单的xcu文件,它是xml格式的配置文件。
       3、对具体的class文件都要打jar包。
    不同点:
       1、对于jar包,直接调用的需要在jar包中的MATE-INF文件夹中MANIFEST.MF文件中指出主类,而脚本调用的则不需要。
       2、对于zip包,直接调用比脚本调用多了一个xcu配置文件,这是因为它是说明OOo调用那个类开始的;而对于脚本调用,它在自己的zip包中还多加了一层文件夹包括了jar包和一个配置文件,这个名为parcel-descriptor.xml的配置文件详细说明了OOo需要调用的类,以及用于解析脚本所用的dtd文件。
       3、直接调用的处理是从使用OOo之中的XComponentContext对象开始的,而脚本调用则是从OO中脚本调用机制传入的XScriptContext对象启动。XScriptContext对象所属的层次比XComponentContext高,它能够获取当前编辑的文档对象以及XComponentContext。
       今天就先写到这里,下次介绍OOo之中配置文件的结构与其机制。

本文依据《创作共用约定》之“署名-禁止派生-非商业用途”方式发布,即你可以免费拷贝、分发、呈现和表演当前作品,但是必须基于以下条款:

  • 署名:你必须明确标明作者的名字。

  • 非商业用途:你不可将当前作品用于商业目的。

  • 禁止派生:你不可更改、转变或者基于此作品重新构造为新作品。

对于任何二次使用或分发,你必须让其他人明确当前作品的授权条款。

在得到作者的明确允许下,这里的某些条款可以放弃。