http://jy02567465.blog.bokee.net/bloggermodule/blog_viewblog.do?id=577820

---------------------------------------------------------
Java發展歷史
相信熟悉Java 演進歷史的人或多或少都聽說過,Java 技術一開始並非就叫做 Java ,而是叫做OAK ,而且最早的時候就是為了嵌入式系統而設計的一項產品。後來因為網際網路的發達,而OAK 的諸多特性剛好又適合用在網路上(例如可移植性、編譯後程序碼很小),因為商標已被註冊的關係,因此 OAK 被改名成Java ,從此因緣際會地成了網路上的閃亮巨星,並隨著時間越來越成熟,也慢慢地產生了許多非原本預期中的相關運用。雖然 Java 已經被用到許多企業級軟體上,可是其實骨子裡面還是非常適合用在嵌入式系統之中。
雖然從Java 1.0 發表之後,Java 就被廣泛地使用在桌上型應用程序以及Applet 的開發上,但是,從Java 1.1 開始,Java又回到了它一開始的老路--也就是嵌入式系統方面的應用,在當時Sun Microsystems 發表了Embedded Java 與Personal Java(也有人簡稱為PJava)這兩項規格。其中Embedded Java 是為了資源十分有限,而且沒有顯示設備的嵌入式裝置而設計; Personal Java 則是為了在能夠與網際網路連線、並擁有顯示系統(例如彩色LCD)的消費性電子裝置而設計。接著Java 的版本演進到Java 2 ,這時為了再明顯區分各種Java 的應用,所以分割出了J2EE 、J2SE、以及 J2ME 三種版本。這三種版本的各種特性我們已經在前面已經詳細地描述,在此不再贅述。不過請大家記住,由於 Java 2將Java 的應用區分成三大塊,使得 Java 程序語言的發展不會再像Java 1.1時如樹枝狀般擴散出去,這麼一來有助於大家對 Java 各種應用的澄清,而不會造成今後越發展下去越不可收拾的混亂局面。額外向大家一提的是,後來Personal Java 發展到1.2 版的時候,也採用了一些Java 2 平台上與安全性有關的設計。

J2ME
J2ME 在設計其規格的時候,遵循著「對於各種不同的裝置而造出一個單一的開發系統是沒有意義的事」這個基本原則。於是 J2ME 先將所有的嵌入式裝置大體上區分為兩種 :一種是運算功能有限、電力供應也有限的嵌入式裝置(比方說PDA 、手機);另外一種則是運算能力相對較佳、並請在電力供應上相對比較充足的嵌入式裝置 (比方說冷氣機、電冰箱、電視機上盒 (set-top box))。因為這兩種型態的嵌入式裝置,所以Java 引入了一個叫做Configuration 的概念,然後把上述運算功能有限、電力有限的嵌入式裝置定義在Connected Limited Device Configuration(CLDC)規格之中;而另外一種裝置則規範為 Connected Device Configuration(CDC)規格。也就是說, J2ME 先把所有的嵌入式裝置利用Configuration 的概念區隔成兩種抽象的型態。

其實在這裡大家可以把Configuration 當作是J2ME 對於兩種類型嵌入式裝置的規格,而這些規格之中定義了這些裝置至少要符合的運算能力、供電能力、記憶體大小等規範,同時也定了一組在這些裝置上執行的 Java程序所能使用的類別函式庫、這些規範之中所定義的類別函式庫為 Java標準核心類別函式庫的子集合以及與該型態裝置特性相符的擴充類別函式庫。比方就CLDC 的規範來說,可以支援的核心類別函式庫為java.lang.*、java.io.*、java.util.*,而支援的擴充類別函式庫為 java.microedition.io.*。區分出兩種主要的Configuration 之後,J2ME 接著在定義出Profile的概念。Profile 是架構在Configuration 之上的規格。之所以有Profile的概念,是為了要更明確地區分出各種嵌入式裝置上Java 程序該如何開發以及它們應該具有哪些功能。因此Profile 之中定義了與特定嵌入式裝置非常相關的擴充類別函式庫,而 Java 程序在各種嵌入式裝置上的使用者介面該如何呈現就是定義在Profile 裡頭。Profile 之中所定義的擴充類別函式庫是根據底層Configuration 內所定義的核心類別函式庫所建立。
雖然J2ME標準繁多,但只要把握住標準劃分的原因就很容易掌握。在這個技術飛速發展的領域,我們不能把眼光局限於標準的字面含義,而要靈活掌握,把握其精神。比如,CLDC和CDC的定義中具體的最小內存需求僅僅是"最小的",隨著硬件能力的飛速發展,很有可能一些界限會變得模糊。PDA本來應該屬於CLDC的範圍,但是Compaq的 iPaq上卻實現了CDC。以後的下一代PDA有64M內存並不意外,在其上實現CDC也是完全可能的。但是,從功能的角度,應該還是CLDC以及PDA Profile更適合於PDA的條件。到那時,具體的實現就要看廠商和開發者的選擇了。還需要注意的是,由於Profile是建於 Configuration之上,作為對Configuration的擴展,因此Profile必須Configuration的支持。有的文章在講到 MIDP的內存需求時,說MIDP需要最少256K,這是指MIDP本身。而有的文章說MIDP需要最少768K,那時因為把作為基礎的CLDC所需要的 512K算進去了

CLDC
CLDC是針對少於512KB內存footprint的設備的配置。CLDC採用的是KVM,它是高度優化的JVM方式,他針對的是16比特或32比特的微處理器,160到512 KB內存為基礎的低端,網絡連接,電池驅動的設備。典型的內存要求是128KB做有來存儲KVM和相關的庫。更多關於KVM的信息可以從Sun公司的 KVM白頁中得到。
就網絡化而言,CLDC針對的是有限的和間歇性的無線連接設備,所有在J2ME CLDC之上運行的應用軟件都應能在其他任何高端的Java VM上運行。當然,這需要CLDC庫的支持。CLDC配置關注於I/O,網絡化,安全問題,國際化問題和核心Java庫等相關的領域。
與事件處理,用戶和應用程序的互動,應用程序生存期管理等內容相關的領域是由Profile來處理的。使用界面定義(對於特定的設備,如傳呼機,移動電話和 PDA)也在Profile層的範圍之內,它建立在頂端之上,並使用J2ME配置。Mobile Information Device Profile (MIDP)是一個J2ME profile,它定義了使用CLDC配置設備的用戶界面相關的規範。
CLDC從J2SE獲得絕大多數的類,但一些針對小內存footprint設備的新類並不是從J2SE APIs獲得的。關於類從J2SE 做繼承和新CLDC類的具體信息,可參考CLDC規範1.0a版本的6.2和6.3中的內容。Java語言規範中的一些例外是沒有浮點支持,沒有類實例的完成化支持和有限的錯誤處理能力。
在這裡提到CLDC HotSpot應用也是具有相關性的,它相當於使用CLDC配置的設備的KVM中Java VM的替換。根據Sun公司,CLDC HotSpot執行VM是一個高性能的JVM(32位,採用CLDC v1.0規範)。他在相同的內存footprint上運行時提供比KVM高出一個數量級的更佳的性能。

CDC:完全的Java平台
CDC是應用在具有較大內存,特別是2MB以上的設備上的,CDC針對有限和間歇的無線連接設備,CDC與CVM和Foundation profile共同定義了完全的J2ME環境。
CVM是為用戶和嵌入設備設計的完全功能性JVM,它支持所有的Java 2 v1.3 VM安全防護,JNI, JVMDI, RMI,弱引用功能和庫。本質上說,CVM具有所有一個駐留桌面系統的JVM所具有的功能。
CDC由J2SE中最小的Java數據包組成。Foundation profile由用戶設備所需要的保持類庫和APIs所組成。因此,如果你工作在一個以CDC為基礎的J2ME環境下,你就需要更新你代碼以使APIs更新換代。
CDC是CLDC的一個擴展集,所以在兩種配置之間存在著向上的兼容性。CDC和Foundation profile也提供了對使用PersonalJava實時規範開發的應用程序的完全兼容。
J2ME 的平台無關性主要指的是設備的宿主操作系統平台。由於Java平台建築於虛擬機之上,只要不同的操作系統上的虛擬機滿足同樣的規範和標準,對於虛擬機以上的層次是平台無關的。這使得針對某一Configuration或者Profile的應用可以運行於所有實現了這一Configuration或者 Profile的操作系統平台。舉例來說,目前已經有網站開始收集基於MIDP的程序--MIDlet,提供下載和收費,各種支持MIDP的設備都可以使用,這包括數量巨大的智能手機和幾乎所有的PDA(Palm OS和Pocket PC)。
創作者介紹

Amin's Note

Aminzai 發表在 痞客邦 PIXNET 留言(0) 人氣()