Apache Harmony 是 2005 年 5 月宣布的開放源碼 Java SE 實(shí)現(xiàn),本文是由 5 部分組成的 進(jìn)入 Harmony 世界 系列文章的第一篇,這個(gè)系列主要介紹 Apache Harmony 項(xiàng)目的內(nèi)部實(shí)現(xiàn),最新發(fā)展現(xiàn)狀和開源 Java 開發(fā)的模式,并鼓勵(lì)和歡迎大家參與到 Harmony 的社區(qū)中來(lái)。本文是 5 個(gè)系列的第一篇,概括介紹了 Harmony 項(xiàng)目的背景,技術(shù)架構(gòu),社區(qū)運(yùn)作和未來(lái)的方向。
本文是 5 個(gè)系列的第一篇,概括介紹了 Harmony 項(xiàng)目的背景,技術(shù)架構(gòu),社區(qū)運(yùn)作和未來(lái)的方向。
Apache Harmony 的背景
Apache Harmony 的提案在 2005 年 5 月被 Apache 軟件基金會(huì)(ASF)接受,并且按照 ASF 慣例成為一個(gè)孵化器(incubator)項(xiàng)目。
Harmony 為自己定了兩個(gè)目標(biāo),首先是開發(fā)出一個(gè)獨(dú)立并且與現(xiàn)有 JDK 兼容的 Java SE 5 實(shí)現(xiàn),并且以 Apache 軟件許可證 2.0 版發(fā)行;其次是建立一個(gè)開放的模塊化運(yùn)行時(shí)架構(gòu),包括虛擬機(jī)和類庫(kù)之間及其內(nèi)部的模塊化,并通過(guò)這個(gè)平臺(tái),允許社區(qū)在此基礎(chǔ)上自由定制自己的 Java 實(shí)現(xiàn),或者對(duì)某個(gè)模塊單獨(dú)進(jìn)行創(chuàng)新。
Apache Harmony 項(xiàng)目的成立以及它的這兩個(gè)目標(biāo)具有很大的現(xiàn)實(shí)意義。首先,由于商業(yè)JDK的流行性,它們幾乎成為事實(shí)上的標(biāo)準(zhǔn),所以 Harmony 必須與它們保持高度的兼容,才能夠使應(yīng)用程序的遷移成本最低,也就相對(duì)容易被用戶所接受;其次,Harmony 存在的重要意義之一就在于這是一個(gè)屬于開源社區(qū)的 Java 平臺(tái),在這個(gè)平臺(tái)上,社區(qū)可以自由的移植和創(chuàng)新,而一個(gè)開放的模塊化的架構(gòu),將為移植和創(chuàng)新帶來(lái)最大的便利性;最后,Apache 軟件許可證是一個(gè)對(duì)商業(yè)公司和開源社區(qū)都比較友好的開源許可證,因此 Harmony 可以給最大范圍的開發(fā)人員和用戶帶來(lái)便利。本文和本系列后續(xù)文章將詳細(xì)介紹 Harmony 在兼容性和模塊化方面的努力,以及這些目標(biāo)帶來(lái)的價(jià)值。
也許正是基于以上一些原因,Harmony 項(xiàng)目成立僅僅一年多一點(diǎn)的時(shí)間,就得到了廣泛的支持和關(guān)注,并且得以飛速發(fā)展。目前,Apache Harmony 已經(jīng)擁有了一個(gè)活躍的開發(fā)社區(qū),并且接受了來(lái)自公司,學(xué)校和個(gè)人的多次捐贈(zèng)。IBM 在 developerWorks 上提供了一個(gè) Java 虛擬機(jī)環(huán)境的免費(fèi)下載,以支持 Harmony 項(xiàng)目的開發(fā),還多次捐贈(zèng)了核心類庫(kù)的實(shí)現(xiàn)和測(cè)試代碼,在 IBM 英國(guó) Hursley 軟件開發(fā)實(shí)驗(yàn)室和中國(guó)軟件開發(fā)中心各有一個(gè)開發(fā)團(tuán)隊(duì)積極參與 Harmony 項(xiàng)目。此外 Harmony 項(xiàng)目還接受了三個(gè) Java 虛擬機(jī)實(shí)現(xiàn)的捐贈(zèng),另外還有一個(gè)開源 Java 虛擬機(jī) SableVM 正在積極的與 Harmony 社區(qū)合作以實(shí)現(xiàn)與 Harmony 類庫(kù)的集成。Java SE 實(shí)現(xiàn)難度最大的是其規(guī)模龐大的類庫(kù),而最近的類庫(kù) API 覆蓋率統(tǒng)計(jì)表明,Harmony 的 J2SE 1.4.2 類庫(kù) API 的覆蓋率已經(jīng)超過(guò) 80%,Java SE 5 的覆蓋率已經(jīng)達(dá)到 79% 以上。目前經(jīng)不完全測(cè)試,在 Harmony 上已經(jīng)可以良好運(yùn)行 Eclipse、JEdit、Ant 等流行的 Java 工具,并且可以部分運(yùn)行 Tomcat 和 Geronimo 等企業(yè)應(yīng)用。
技術(shù)架構(gòu)
如前所述,Apache Harmony 非常注重模塊化,從圖一中,可以對(duì) Apache Harmony 的總體架構(gòu)有一個(gè)初步的感覺。與所有其他 Java SE 實(shí)現(xiàn)類似的是,Harmony 從大體上可以分為三個(gè)層次,最下層是操作系統(tǒng),中間是 Java 虛擬機(jī),最上層是 Java 類庫(kù)。而 Harmony 的特點(diǎn)在于:
- 虛擬機(jī)和類庫(kù)內(nèi)部被高度模塊化,在 Harmony 中,類庫(kù)在功能和 Java Package 的基礎(chǔ)上被分成 31 個(gè)模塊,而虛擬機(jī)也被分成即時(shí)編譯器, 內(nèi)存管理, 線程管理,Java 本地接口等等模塊。每個(gè)模塊都有一定的接口定義,從而有可能單獨(dú)被替換成不同的實(shí)現(xiàn)。
- 操作系統(tǒng)層次與虛擬機(jī)層次之間的接口由 Port Layer 定義。Port Layer 封裝了不同的操作系統(tǒng)的差異,為虛擬機(jī)和類庫(kù)的本地代碼提供了一套統(tǒng)一的 API 訪問底層系統(tǒng)調(diào)用。
- 虛擬機(jī)與類庫(kù)之間的接口除了 Java 規(guī)范定義的 JNI,JVMITI 之外,加入了一層虛擬機(jī)接口,主要由內(nèi)核類(Kernel Class)和本地代碼 VMI 組成,實(shí)現(xiàn)了虛擬機(jī)接口的虛擬機(jī)實(shí)現(xiàn)都可以使用 Harmony 的類庫(kù)實(shí)現(xiàn),并且可以被 Harmony 提供的同一個(gè) Java 啟動(dòng)程序啟動(dòng)。
圖一 Apache Harmony 技術(shù)架構(gòu)鳥瞰圖
本節(jié)將分別對(duì) Port Layer,VMI 和 Java 統(tǒng)一啟動(dòng)程序作進(jìn)一步的介紹。
Apache Harmony Port Layer
Apache Harmony 在操作系統(tǒng)與虛擬機(jī)之間定義了一個(gè) Port Layer,Port Layer 是由一個(gè)標(biāo)準(zhǔn) C 的庫(kù)(Port Library)來(lái)實(shí)現(xiàn)得,Port Library 與操作系統(tǒng)交互,為虛擬機(jī)和類庫(kù)的本地代碼提供了一個(gè)平臺(tái)無(wú)關(guān)的標(biāo)準(zhǔn) C 語(yǔ)言 API 訪問系統(tǒng)調(diào)用。諸如文件 I/O,網(wǎng)絡(luò) I/O, 內(nèi)存操作,信號(hào)處理,以及錯(cuò)誤處理等等功能,都被納入 Port Library 的范圍。
通過(guò)使用 Port Library, 所有(目前還沒有做到,但這是設(shè)計(jì)目標(biāo))與操作系統(tǒng)平臺(tái)相關(guān)的內(nèi)容被封裝在一個(gè)庫(kù)里面,虛擬機(jī)和類庫(kù)的其他部分都可以盡可能以平臺(tái)無(wú)關(guān)的方式實(shí)現(xiàn)出來(lái)。這樣一來(lái),將 Java SE 的龐大類庫(kù)和虛擬機(jī)代碼移植到其他操作系統(tǒng)的工作就可以被快速的開發(fā)出來(lái),從而大大提高了可移植性和程序的可維護(hù)性。
在 Apache 軟件基金會(huì)資助的開源項(xiàng)目中,有一個(gè)類似的平臺(tái)無(wú)關(guān)庫(kù)叫做 Apache Portable Runtime(APR), 這個(gè)項(xiàng)目是從 Apache Http Server 等項(xiàng)目的開發(fā)過(guò)程中提煉和分離出來(lái)的,目前已經(jīng)比較成熟,它與 Harmony 的 Port Layer 的目標(biāo)有類似之處,但是也有明顯的不同,從而使得目前 APR 還不適合作為 Java 虛擬機(jī)和類庫(kù)的平臺(tái)無(wú)關(guān)庫(kù)實(shí)現(xiàn)。在本系列后續(xù)文章中會(huì)有單獨(dú)的文章詳細(xì)介紹 Harmony Port Library 的設(shè)計(jì)特點(diǎn),并與 APR 進(jìn)行比較。
Apache Harmony 虛擬機(jī)接口
Apache Harmony 虛擬機(jī)接口定義了類庫(kù)和虛擬機(jī)之間的接口,Java 規(guī)范已經(jīng)定義了一些虛擬機(jī)的 API,比如 Java 本地接口(JNI), Java 虛擬機(jī)工具接口(JVMTI)等,但是 Java 規(guī)范并沒有定義類庫(kù)和虛擬機(jī)之間的接口。Harmony 為了模塊化和可移植性的要求,定義了虛擬機(jī)接口(VMI),只要是實(shí)現(xiàn)了該接口的虛擬機(jī)就是 Harmony 兼容虛擬機(jī),從而可以與 Harmony 的類庫(kù)實(shí)現(xiàn)互操作,并且可以與 Harmony 提供的 Java 啟動(dòng)程序協(xié)作。
Apache Harmony 虛擬機(jī)接口分為三個(gè)部分,一部分是 Java 語(yǔ)言接口,由 23 個(gè)內(nèi)核類(Kernel Class)組成,另一部分是 C 語(yǔ)言接口,由 10 個(gè)函數(shù)組成,最后一部分就是標(biāo)準(zhǔn) JNI。
- 內(nèi)核類的提出是因?yàn)樯贁?shù)核心的公共類是與虛擬機(jī)密切相關(guān)(VM-specific)的,它們都是屬于 java.lang,java.lang.ref,java.lang.reflect 和 java.security 等幾個(gè)核心的包,比如說(shuō) java.lang.ClassLoader, java.lang.ref.WeakReference 等。隨著 Java 版本的升級(jí),核心類的數(shù)量也可能會(huì)增加。Harmony 的類庫(kù)實(shí)現(xiàn)為大多數(shù)核心類定義了實(shí)現(xiàn)模板。VM 的開發(fā)人員可以從零開始實(shí)現(xiàn)這些核心類,也可以在 Harmony 提供的模板基礎(chǔ)上開始開發(fā)。
- 虛擬機(jī)接口還定義了 VM 必須實(shí)現(xiàn)的 10 個(gè) C 函數(shù),用來(lái)訪問虛擬機(jī)和類庫(kù)共享的數(shù)據(jù)結(jié)構(gòu)和接口,比如說(shuō)訪問操作系統(tǒng)抽象庫(kù)(Port Library),虛擬機(jī)本地存儲(chǔ)空間等。
- 虛擬機(jī)的最后一部分就是標(biāo)準(zhǔn) JNI,它在這里的主要用途是允許從 Java 類庫(kù)的本地鏈接庫(kù)中創(chuàng)建 Java 對(duì)象。
應(yīng)該說(shuō)虛擬機(jī)接口是一個(gè)相對(duì)寬松的接口,它并不要求對(duì)虛擬機(jī)和類庫(kù)特殊的耦合,對(duì)垃圾收集,同步和對(duì)象的數(shù)據(jù)結(jié)構(gòu)等等也沒有特殊的規(guī)定。另外一個(gè)著名的開源 Java SE 類庫(kù) GNU Classpath 也有類似的虛擬機(jī)接口,本系列后續(xù)文章將詳細(xì)介紹 Harmony VMI,并且與 GNU Classpath 比較。
Apache Harmony 啟動(dòng)程序
Apache Harmony 提供了一個(gè)啟動(dòng)程序,也就是通常我們用來(lái)運(yùn)行 Java 程序的 java 和 javaw 命令的實(shí)現(xiàn),這個(gè)啟動(dòng)程序是個(gè)多目標(biāo)的啟動(dòng)器,可以根據(jù)命令行參數(shù)啟動(dòng)不同的虛擬機(jī),也可以支持虛擬機(jī)特有的選項(xiàng),如屬性文件或命令行參數(shù)等。這一切都是基于虛擬機(jī)接口,Port Library 和標(biāo)準(zhǔn) JNI 實(shí)現(xiàn)的。
在進(jìn)一步介紹啟動(dòng)程序之前,需要先介紹一下 Harmony Development Kit(HDK)和 Harmony JRE 的目錄結(jié)構(gòu),請(qǐng)參考圖二。HDK 是一個(gè)完整的開發(fā)包,不僅僅包括 Harmony 用戶所需的所有內(nèi)容,也提供 Harmony 開發(fā)人員所有的靜態(tài)鏈接庫(kù)和頭文件,使得他們可以在此基礎(chǔ)上對(duì)其中任何一部分進(jìn)行修改和重新構(gòu)建。
- <hdkbase>/jdk/jre, 這個(gè)目錄包含了標(biāo)準(zhǔn)的 JRE 結(jié)構(gòu),如 bin 和 lib 目錄等。
- <hdkbase>/jdk/include,這個(gè)目錄包含了標(biāo)準(zhǔn)的 JDK 頭文件,如 jni.h 等。
- <hdkbase>/include, 這個(gè)目錄包含了 Harmony 獨(dú)有的并且被多個(gè)模塊共享的頭文件
- <hdkbase>/lib, 這個(gè)目錄包含了編譯 Harmony 本地代碼所需的靜態(tài)鏈接庫(kù)文件,如在 Windows 平臺(tái),就包含了 .lib 文件,而在 Linux 平臺(tái),則包含了 .a 文件。
對(duì)于啟動(dòng)程序來(lái)說(shuō),需要特別注意的是 <hdkbase>/jdk/jre/bin 目錄,在這里可以包含多個(gè)虛擬機(jī)實(shí)現(xiàn),每一個(gè)實(shí)現(xiàn)應(yīng)該被放在該目錄的一個(gè)子路徑里(比如 vm1, vm2 等),缺省的虛擬機(jī)實(shí)現(xiàn)在 <hdkbase>/jdk/jre/bin/default 目錄,如果不指定特定參數(shù),該虛擬機(jī)會(huì)被啟動(dòng)程序使用。一般來(lái)講,每個(gè)虛擬機(jī)實(shí)現(xiàn)應(yīng)該包含虛擬機(jī)實(shí)現(xiàn)文件和資源文件,尤其是必須有三個(gè)部分的虛擬機(jī)接口的實(shí)現(xiàn)。
圖二 HDK 目錄結(jié)構(gòu)
在調(diào)用啟動(dòng)程序的時(shí)候,有兩個(gè)參數(shù)被用來(lái)指定啟動(dòng)哪一個(gè)虛擬機(jī)實(shí)現(xiàn),-vmdir 用來(lái)指定虛擬機(jī)所在的子目錄,-vm 用來(lái)指定實(shí)現(xiàn)了JNI接口的動(dòng)態(tài)鏈接庫(kù),比如要使用 IBM 提供的 VME,而 VME 放在 vm1 目錄下的話,啟動(dòng)程序的命令行就應(yīng)該像:
java -vmdir:vm1 -vm :clearvm.dll …
|
Harmony 的啟動(dòng)程序在啟動(dòng)時(shí)將執(zhí)行以下任務(wù):
- 生成一個(gè) Port Library 實(shí)例并且裝載它
- 裝載虛擬機(jī)本地動(dòng)態(tài)鏈接庫(kù)
- 初始化內(nèi)核類
- 調(diào)用 JNI_CreateJavaVM(…), main(…), JarRunner 等
Apache Harmony 類庫(kù)的模塊化
Apache Harmony 將類庫(kù)分成易于管理的模塊,這樣做的目的是
- 使 Java 類庫(kù)的開發(fā)工作易于管理,開源社區(qū)的參與者可以集中開發(fā)他擅長(zhǎng)的模塊
- 方便模塊裝配, 用戶可以自由選擇模塊提供者,可以自由替換或者升級(jí)任一模塊
- 使法律方面的風(fēng)險(xiǎn)易于管理,如果開發(fā)人員以前接觸過(guò)其他 Java SE 實(shí)現(xiàn)的代碼,他也可以參與以前未接觸過(guò)的模塊開發(fā)。
- 方便代碼捐獻(xiàn)
類庫(kù)的模塊實(shí)際上是由一組實(shí)現(xiàn)相關(guān)的功能的 Java 類和本地程序組成的,目前它們按照包的級(jí)別來(lái)劃分,也就是說(shuō)不會(huì)有兩個(gè)屬于同一個(gè) Java package 的類出現(xiàn)在兩個(gè)不同的模塊里(內(nèi)核類所在的包除外,但也僅在內(nèi)核類模塊和另一個(gè)類庫(kù)模塊中出現(xiàn))。這些模塊可以包含私有的內(nèi)部實(shí)現(xiàn),但是必須導(dǎo)出 Java API 參考文檔規(guī)定標(biāo)準(zhǔn) API,也可以導(dǎo)出 Harmony 獨(dú)有的 API,但是這些 API 并不鼓勵(lì)用戶使用,只是供其他模塊調(diào)用的。
模塊的鑒別方法是: 首先根據(jù) Java 規(guī)范,確定各 Java 包之間的依賴關(guān)系;然后尋找弱耦合的部分,將本身內(nèi)聚的包組織在一起,最后在社區(qū)討論哪部分類庫(kù)應(yīng)該可以拆開獨(dú)立成一個(gè)模塊。目前 Harmony 將 Java SE 5 規(guī)定的類庫(kù)分成了三十一個(gè)模塊,在 Java 升級(jí)之后,模塊的數(shù)量可能會(huì)增加。目前這三十一個(gè)模塊包括:
- ACCESSIBILITY
- ANNOTATION
- APPLET
- ARCHIVE
- AUTH
- AWT
- BEANS
- CONCURRENT
- CRYPTO
- IMAGEIO
- INSTRUMENT
- JMX
- JNDI
- LANG-MANAGEMENT
- LOGGING
- LUNI (lang, util, net, io)
- MATH
- NIO-CHANNELS
- NIO-CHARSET
- ORB
- PREFS
- PRINT
- REGEX
- RMI
- SECURITY
- SOUND
- SQL
- SWING
- TEXT
- X-NET
- XML
在 Harmony 的代碼資源庫(kù)中,每個(gè)模塊的源文件都保存在自己的各自的路徑中,如果使用 Eclipse 做開發(fā)工具,每個(gè)模塊就可以看作一個(gè)單獨(dú)的工程項(xiàng)目。特別需要注意的是,按照 jar 文件的規(guī)范,在每個(gè)模塊都有一個(gè) META-INF/manifest.mf 文件,在這個(gè)文件中定義了該模塊的 OSGI 元數(shù)據(jù),其中最重要的就是該模塊導(dǎo)入導(dǎo)出的 Java package。
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Harmony NIO
Bundle-SymbolicName: org.apache.harmony.nio
Bundle-Version: 1.0.0
Bundle-ClassPath: .
Eclipse-JREBundle: true
Import-Package: java.io,
java.lang,
java.lang.ref,
java.lang.reflect,
java.net,
java.nio.charset,
java.security,
java.util,
org.apache.harmony.kernel.vm,
org.apache.harmony.luni.net,
org.apache.harmony.luni.platform,
org.apache.harmony.luni.util,
tests.support;hy_usage=test;resolution:=optional,
tests.util;hy_usage=test;resolution:=optional
Export-Package: java.nio,
java.nio.channels,
java.nio.channels.spi,
org.apache.harmony.nio
|
在編譯之后,每一個(gè)模塊將被打包成一個(gè) jar 文件,如果該模塊有本地代碼,則該模塊的本地代碼被編譯成一個(gè)單獨(dú)的動(dòng)態(tài)鏈接庫(kù)文件。如圖二所示,hyluni.dll 就是 LUNI(lang, util, net, io)模塊的本地二進(jìn)制代碼庫(kù),而在 <hdkbase>/jdk/jre/lib/boot 目錄中,對(duì)應(yīng) LUNI 模塊的則有一個(gè) luni.jar。
Apache Harmony 的開發(fā)方法
近年來(lái),開源軟件相關(guān)的知識(shí)產(chǎn)權(quán)問題越來(lái)越受到關(guān)注。為了保證對(duì)知識(shí)產(chǎn)權(quán)的尊重,保持 Harmony 代碼的純潔性和原創(chuàng)性,除了 Apache 軟件基金會(huì)原有的通用規(guī)則之外,Harmony 開發(fā)社區(qū)花了很大的精力來(lái)定義 Harmony 接受代碼捐贈(zèng)和接受項(xiàng)目參與者的規(guī)則。
Harmony 要求每個(gè)開發(fā)人員在參與代碼捐贈(zèng)之前,必須完成一個(gè)問卷調(diào)查,問卷的主要內(nèi)容是關(guān)于該開發(fā)人員以前是否接觸過(guò)其他 Java SE 實(shí)現(xiàn),如果他接觸過(guò)其他專有代碼的某一部分,他就不能參與 Harmony 相應(yīng)模塊的代碼工作(但也有一些特殊的例外情況)。同時(shí),任何現(xiàn)有代碼的捐贈(zèng)必須提供代碼的"血統(tǒng)"信息。
知識(shí)產(chǎn)權(quán)之外的另一個(gè)重要問題就是兼容性。Harmony 的目標(biāo)產(chǎn)生一個(gè) Java SE 5 兼容的實(shí)現(xiàn),它不僅僅要完全遵循 Java API 參考定義的 Java SE 規(guī)范,Java 語(yǔ)言規(guī)范以及 Java 虛擬機(jī)規(guī)范;同時(shí)還必須保證與現(xiàn)有 Java SE 參考實(shí)現(xiàn)的兼容性,為此,Harmony 采用了測(cè)試驅(qū)動(dòng)開發(fā)模式,以單元測(cè)試用例來(lái)保證 Harmony 的行為和參考實(shí)現(xiàn)一致。最重要的是,Harmony 正在試圖申請(qǐng) Java SE 5 JCK 兼容性測(cè)試的許可證,因?yàn)橹挥斜?JCK 認(rèn)證過(guò),Harmony 才能正式被稱為 Java 兼容的實(shí)現(xiàn)。
除了單元測(cè)試之外,Harmony 還會(huì)通過(guò)一些已有的成熟的 Java 程序來(lái)作為黑盒測(cè)試的應(yīng)用,測(cè)試 Harmony 是否已經(jīng)可以支持這些應(yīng)用。目前 Harmony 可以運(yùn)行 Eclipse,Tomcat,JEdit 等 Java 程序。Harmony 提供了一個(gè)工具,鼓勵(lì) Java 程序作者將他們的程序運(yùn)行在 Harmony 上,并且通過(guò)這個(gè)工具將運(yùn)行結(jié)果反饋給 Harmony 開發(fā)社區(qū)。
總的來(lái)說(shuō),Harmony 采用以下幾種方式來(lái)衡量開發(fā)進(jìn)度:
- 粗粒度層次上,可以衡量一個(gè)模塊是否已經(jīng)開發(fā)。
- 使用工具比較 Harmony 和參考實(shí)現(xiàn)兼容性,比如使用 JAPI 檢測(cè) Harmony 的 API 覆蓋率。
- 使用工具檢查測(cè)試覆蓋率,檢查 Harmony 的各種行為是否得到充分的測(cè)試。
- 支持成熟的 Java 應(yīng)用程序列表。
- 將來(lái)的目標(biāo)是通過(guò) JCK 測(cè)試。
本系列后續(xù)文章將進(jìn)一步介紹 Harmony 開發(fā)中的最佳實(shí)踐。
Apache Harmony 未來(lái)的發(fā)展方向
Harmony 的一個(gè)重要目標(biāo)是類庫(kù)的模塊化。Harmony 將進(jìn)一步采用 OSGi 運(yùn)行時(shí)框架技術(shù),根據(jù)模塊元數(shù)據(jù)描述,自動(dòng)裝載模塊。并且還將努力實(shí)現(xiàn)以下目標(biāo):
- 允許同時(shí)裝載同一模塊的不同版本。
- 通過(guò)模塊的 MANIFEST.MF 元數(shù)據(jù)文件控制其所包含的 Java package 的可見性。
- Java 類和相應(yīng)的本地代碼的啟動(dòng)/停止/卸載等生命周期管理。
你能為 Harmony 做些什么
目前 Harmony 已經(jīng)建立了一個(gè)相當(dāng)活躍的開發(fā)社區(qū),并且非常歡迎更多的人參與進(jìn)來(lái),包括參與 Harmony 的開發(fā),移植 Harmony 到其他平臺(tái)(目前 Harmony 只有 IA32 的 Windows 和 Linux 版本),撰寫文檔,在 Harmony 上運(yùn)行成熟的 Java 應(yīng)用檢查其實(shí)現(xiàn)的覆蓋率和兼容性等等。除此之外,同樣重要的是,你還可以參與遠(yuǎn)未成熟的 Harmony 用戶社區(qū),試用 Harmony,參與 Harmony 的討論,等等。Harmony 是一個(gè)屬于所有人的 Java 平臺(tái)。
總結(jié)
- Harmony 的目標(biāo)是一個(gè)完全兼容的開源的 JSE 實(shí)現(xiàn)
- Harmony 投入巨大的努力保證知識(shí)產(chǎn)權(quán)的純潔性
- Harmony 社區(qū)的目標(biāo)是創(chuàng)建一個(gè)一流的模塊化的運(yùn)行時(shí)環(huán)境
- Harmony 在過(guò)去的一年中取得了巨大的成就
- Harmony 歡迎任何有興趣的開發(fā)者
轉(zhuǎn)載自 ibm dw http://www.ibm.com/developerworks/cn/java/j-lo-harmony1/