??? Blogjava中很少有關(guān)于OpenOffice.org的討論,本人做過(guò)這方面的項(xiàng)目現(xiàn)將項(xiàng)目中的經(jīng)歷記錄下,方便自己和大家。
??? 上一個(gè)項(xiàng)目是關(guān)于OpenOffice.org二次開(kāi)發(fā)的,現(xiàn)在那個(gè)項(xiàng)目已經(jīng)結(jié)束了,但是對(duì)于OpenOffice.org總是有一種難以割舍,難以忘懷的心情。這可能主要是因?yàn)镺penOffice.org是SUN公司開(kāi)源的,并且它最接近于個(gè)人的現(xiàn)實(shí)生活吧:),況且它各方面性能不差是我們?cè)谡罅ν茝V正版化之后的良好替代方案,它能夠?yàn)槲覀儤O大的減少軟件支出費(fèi)用,也能夠降低大家使用盜版軟件所帶來(lái)的心理上的負(fù)擔(dān)。本人強(qiáng)烈建議軟件開(kāi)發(fā)人員使用正版軟件,如果不能的話,請(qǐng)使用免費(fèi)軟件替代。試想自己都不能夠尊重別人的知識(shí)產(chǎn)權(quán),今后我們有何理由向別人提及它、要求它呢!這不就是自己砸自己的腳嘛。
??? 今后我會(huì)抽空慢慢總結(jié)在做OpenOffice.org二次開(kāi)發(fā)項(xiàng)目之中遇到的問(wèn)題與經(jīng)驗(yàn)教訓(xùn)。
??? OpenOffice.org的二次開(kāi)發(fā),主要是向其添加UNO組件的形式進(jìn)行的,具體而言就是向其添加UNO組件的壓縮包,這個(gè)壓縮包在OOo調(diào)用的時(shí)候又分為兩種:
??? 1、OOo直接調(diào)用這部分插件代碼。
??? 2、OOo通過(guò)其內(nèi)部的腳本調(diào)用插件代碼。
由于所屬層次與調(diào)用機(jī)制不同,造成了腳本調(diào)用功能完善,但第一次執(zhí)行效率較另一個(gè)低下;而直接調(diào)用速度快,但在調(diào)用OOo內(nèi)部的類(lèi)的時(shí)候?qū)哟斡兴拗?。具體性能測(cè)試后腳本調(diào)用并不會(huì)滯后多少。綜其而言,通過(guò)腳本調(diào)用插件是我們的首要選擇目標(biāo)。下面我來(lái)向大家簡(jiǎn)要介紹兩種UNO包的結(jié)構(gòu)及其異同:
??? 一:直接調(diào)用的包:
??? ?? ?? zip--|
??? ?? ?? ???? |-jarName.jar
??? ?? ?? ???? |
??? ?? ?? ???? |-addons.xcu
??? ?? ?? ???? |-jarName.xcu

??? 二:腳本調(diào)用的包:
??? ?? ?? zip--|
??? ?? ?? ???? |-jarName文件夾--|--jarName.jar
??? ?? ?? ?? ? |?? ?? ?? ?? ??? |
??? ?? ?? ?? ? |?? ?? ?? ?? ??? |--parcel-descriptor.xml
??? ?? ?? ???? |
??? ?? ?? ???? |-addons.xcu
??? ?? ?? ???? |
??? ?? ?? ???? |-META-INF--|--manifest.xml

??? 相同點(diǎn):
??? ?? 1、由于OOo現(xiàn)在是SUN公司主導(dǎo)的開(kāi)源項(xiàng)目,所以遵循SUN公司的打包慣例UNO包使用的也是zip打包壓縮算法,這樣就極大減少了瑣碎小文件對(duì)于系統(tǒng)時(shí)間空間上地占用。
??? ?? 2、它們都有設(shè)置OOo菜單的xcu文件,它是xml格式的配置文件。
??? ?? 3、對(duì)具體的class文件都要打jar包。
??? 不同點(diǎn):
??? ?? 1、對(duì)于jar包,直接調(diào)用的需要在jar包中的MATE-INF文件夾中MANIFEST.MF文件中指出主類(lèi),而腳本調(diào)用的則不需要。
??? ?? 2、對(duì)于zip包,直接調(diào)用比腳本調(diào)用多了一個(gè)xcu配置文件,這是因?yàn)樗钦f(shuō)明OOo調(diào)用那個(gè)類(lèi)開(kāi)始的;而對(duì)于腳本調(diào)用,它在自己的zip包中還多加了一層文件夾包括了jar包和一個(gè)配置文件,這個(gè)名為parcel-descriptor.xml的配置文件詳細(xì)說(shuō)明了OOo需要調(diào)用的類(lèi),以及用于解析腳本所用的dtd文件。
??? ?? 3、直接調(diào)用的處理是從使用OOo之中的XComponentContext對(duì)象開(kāi)始的,而腳本調(diào)用則是從OO中腳本調(diào)用機(jī)制傳入的XScriptContext對(duì)象啟動(dòng)。XScriptContext對(duì)象所屬的層次比XComponentContext高,它能夠獲取當(dāng)前編輯的文檔對(duì)象以及XComponentContext。
??? ?? 今天就先寫(xiě)到這里,下次介紹OOo之中配置文件的結(jié)構(gòu)與其機(jī)制。

本文依據(jù)《創(chuàng)作共用約定》之“署名-禁止派生-非商業(yè)用途”方式發(fā)布,即你可以免費(fèi)拷貝、分發(fā)、呈現(xiàn)和表演當(dāng)前作品,但是必須基于以下條款:

  • 署名:你必須明確標(biāo)明作者的名字。

  • 非商業(yè)用途:你不可將當(dāng)前作品用于商業(yè)目的。

  • 禁止派生:你不可更改、轉(zhuǎn)變或者基于此作品重新構(gòu)造為新作品。

對(duì)于任何二次使用或分發(fā),你必須讓其他人明確當(dāng)前作品的授權(quán)條款。

在得到作者的明確允許下,這里的某些條款可以放棄。