麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

進入Harmony 世界,類庫開發最佳實踐

2019-11-18 15:28:19
字體:
來源:轉載
供稿:網友

2006 年 12 月 14 日

Apache Harmony 是 2005 年 5 月公布的開放源碼 java SE 實現,本文是由 5 部分組成的 進入 Harmony 世界 系列文章的第四篇,這個系列主要介紹 Apache Harmony 項目的內部實現,最新發展現狀和開源 Java 開發的模式,并鼓勵和歡迎大家參與到 Harmony 的社區中來。

本文較具體地介紹了 Harmony 項目類庫(API庫)開發過程當中的經驗,從架構設計和軟件工程的角度,介紹了類庫開發過程當中積累的類庫模塊的劃分、測試優先的開發模式、結對編程、代碼審核等等最佳實踐。

類庫模塊劃分

類庫模塊的劃分,是 Harmony 項目類庫總體設計上的主要特點。通過將龐大的 J2SE 類庫劃分為若干個相對獨立而且小規模的功能模塊,Harmony 的開發者簡化了類庫實現的過程,降低了開發類庫的風險。類庫模塊的劃分原則和具體劃分方式,是項目進行和結構設計實踐當中不斷總結和歸納出來的。

Harmony 模塊化背景和目標

實現一個完整的兼容的開源 J2SE,這是一種很棒的開創性的想法,但它的實現有著相當的難度,有很多的問題需要注重。開源軟件的開發流程,具有一定的自由性和不確定性。通常的情況是,來自世界各地的開發者,在一個組織的統一協調下,分工合作,不定期的提交一些功能模塊,然后集成到一個大的平臺產品當中。這樣的開發方式是開源軟件的固有特征,但是對于 J2SE 這樣的龐大體系,這樣的開發模式會增加產品的風險。為了減小風險,便于平臺的升級和維護,就要充分考慮以下問題:合理的劃分平臺,定義好模塊之間的接口,以及降低耦合性。總結來說有以下幾個目標:

  1. 符合 J2SE 基本結構

    與現有的 J2SE 實現功能上兼容的同時,在基本的大的組件方面也要做到一致。如 JVM、類庫、JIT 組件等等大規模組件必須對應一致。這樣可以使 Java 類庫的開發工作易于治理,開源社區的參與者可以集中開發他擅長的模塊。

  2. 獨立開發

    為了開發的便利和風險的降低,平臺的模塊必須實現獨立開發,各個模塊之間盡量減少耦合,這樣才可以發揮開源項目的優勢,避免其缺陷。

  3. 模塊替換

    在 Java 的開源世界里,隨時都有很多開源軟件的出現,假如出現了某些優秀的開源 J2SE 組件,應該答應它們方便的替換進來;另外,假如發現本身某一個模塊實現上的不足,也可以方便的替換出去,而不影響整個平臺。

  4. 共享組件

    除開提供完整的 J2SE 實現,這個項目的另外一個有價值之處就是在于為開源社區提供共享的 J2SE 組件。這個目標十分重大,因為一個完整的 J2SE 平臺,本身就意味著了聚集了很多有價值的組件。所以,平臺的設計必須確保這些組件可以方便的被共享和重用。

針對以上目標,在 Harmony 項目中采用了模塊化的劃分方式。在 Sun 公司的最初設計里面,根本沒有考慮過對 Java 模塊化,也沒有開源的想法,所以原有的耦合性是比較大。而且,這個劃分既要有全局的劃分,即把整個 J2SE 劃分為幾個大的組件,如 JVM,API 類庫,Tools 等等,也有對組件內部的劃分,例如把類庫進一步劃分成一些模塊,不同的模塊實現不同的功能。

類庫設計

完整的 J2SE 平臺的模塊化設計,首先應該在最抽象的層次,按照設計目標,劃分出整體的模塊組件,規定好它們的互聯規范,比如對類庫、虛擬機間接口的定義;然后,應該在比較具體的層次,在比較大的組件當中再次劃分子模塊,例如類庫的進一步劃分。

類庫(Class Library)是 J2SE 當中最復雜和最常用的部分。它為 Java 開發者提供了豐富的編程接口,給 Java 應用程序提供了基礎類庫。Harmony 類庫的目標,是要實現一個標準 J2SE 類庫,和現有的 Sun 的 JDK 兼容一致。雖然不會增加特性,但是在完全不涉及 Sun 的源代碼的前提下,僅僅依靠公開的 Java 文檔,設計和開發這樣的類庫,依然是一項艱巨的工作。

Harmony Class Library 分為三十多個模塊。假如我們從上下層次上看,它們主要上分為以下四個大類,主要模塊如圖所示。


圖一 類庫劃分總圖
進入Harmony 世界,類庫開發最佳實踐(圖一)
點擊查看大圖

應該注重到,這個劃分和 Sun 公司的 J2SE 結構圖并不相同,這是因為,Harmony 為自己項目的特點,對已有的基于包(package)的類庫結構按照功能重新分析和歸類,有的模塊是從包中劃分出來,如 instrument 模塊做 Java 虛擬機的類重定義和治理功能,它本來是 java.lang 包當中的子包,但是由于功能的獨特,所以就被單獨分為一塊。

下面逐一介紹這四大類和主要的模塊。

  1. 基礎模塊 (LUNI) 與 NIO

    LUNI 是 Lang、Util、Net、IO 這些模塊的首字母總稱,他們和新的 NIO 模塊一起表示類庫的基礎和核心部分,處于類庫的底層。當然,LUNI 當中也有些獨立分出模塊的子包,如 instrument,management 模塊,這些模塊作為虛擬機監測工具類庫,就不屬于 LUNI。

    之所以要把 LUNI 和 NIO 同看作為基礎模塊,是因為它們互相之間有著密切的聯系。在實際實現中,它和 IO 和非常多的底層公用,兩者有緊密的聯系。如 NIO 當中的 SocketChannel 和 NET 中 Socket 基本上就可以共用同一套底層代碼。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成av在线 | 亚洲福利在线免费观看 | 草久免费 | 日本s级毛片免费观看 | 国产88久久久国产精品免费二区 | 久久影院一区二区三区 | 欧美视频一二区 | 色就操 | 在线免费观看毛片 | 久久久99精品视频 | 久久国产免费 | 欧产日产国产精品99 | 精品国产91久久久久久 | 久久久精品精品 | 青青国产在线视频 | av免费在线观 | 精品国产一区二区三区四 | 性盈盈盈影院 | 精品久久久一二三区播放播放播放视频 | 91精品国产乱码久久久久久久久 | 国产一区二区三区视频观看 | 国产精品久久久久久久久久尿 | 色七七网站 | 亚洲欧美一区二区三区在线观看 | 久久久噜噜噜久久熟有声小说 | 天天看成人免费毛片视频 | 成人免费自拍视频 | 福利在线国产 | 一级大片在线观看 | 毛片在线免费播放 | 黄色羞羞视频在线观看 | gogo全球大胆高清人露出91 | 深夜精品福利 | 黄视频网站免费观看 | 黄色片免费在线 | 91精品国产一区二区在线观看 | 中文字幕免费在线看 | 国产高清一区 | 高清做爰免费无遮网站挡 | 国产精品久久久乱弄 | 欧美大荫蒂xxx |