J2ME in a Nutshell(翻譯版) :第二章 串連有限裝置配置CLDC,2.1.1虛擬機器和語言特性

來源:互聯網
上載者:User
 

2.1.1 虛擬機器和語言特性

CLDC規範通過描述完整java虛擬機器的部分規範和不需要支援的java語言規範來定義其虛擬機器必須有的特性。Sun公司提供了一個CLDC規範參考實現。該實現是基於一個滿足CLDC需求的虛擬機器KVM的。然而,支援CLDC的裝置生產商不一定要基於KVM。任何擁有CLDC規範特性並且可以在受限環境中工作的虛擬機器都可以使用。在本書中,我們提供KVM的特性參考,但是除非我明確說明,我所說的任何特性同樣也適用於任何相容的虛擬機器。接下來的幾節我們將介紹CLDC不支援的虛擬機器和語言特性和不同於J2SE的行為。

2.1.1.1Floating point support

因為許多的CLDC平台沒有浮點運算的硬體,虛擬機器就不需要支援浮點數的操作。對於虛擬機器來說,表2-1所示的位元組碼操作時沒有實現的

 

這就帶來了如下的編碼限制:

ü        float 和double變數以及這些變數的數組不能聲明和使用

ü        float和double類型的常量不能使用

ü        方法的參數不能是float和double類型

ü        對象Float 和Double也不能建立(事實上,這些類在CLDC也不存在—參照2.2節)

Sun沒有特地為CLDC的應用提供java編譯器,所以可以使用J2SE編譯器來建立使用浮點數的類檔案,那樣就會違反上面的規則。然而,當裝載到CLDC虛擬機器進行嚴正的時候,這些類檔案會被拒絕(參照2.1.2節有關類檔案驗證的討論)。

2.1.1.2語言特性的缺失

除了浮點運算的限制,還有一些其他的java語言的特性在CLDC應用中不可使用

映射(reflection

java.lang.reflect包和與映射相關的java.lang.Class的所有特性都是停用。這個限制部分地適用於儲存記憶體,但是它也節省了決定應用代碼是否有許可權來訪問這些特性

弱參考(Weak references

因為需要儲存來實現,弱參考和java.lang.ref包沒有提供

對象結束(Object finalization)

相對於很小的作用來說,Object finalization使得虛擬機器變得很複雜。所以,Object finalization沒有實現並且CLDC類java.lang.Object沒有finalize()方法

線程特性(Treading features

CLDC提供了線程,但是它不允許建立監聽線程(當虛擬機器的所有非監聽線程結束後,這種線程自動終止)和線程組

錯誤和異常(Errors and exceptions

J2SE提供了大量的類來處理錯誤和異常境況。因為java應用通常不希望從錯誤中恢複(意味著拋出繼承於java.lang.Error的異常),大多數的類沒有被包含在CLDC平台。當這種錯誤發生時,裝置應該採取合適的行為而不是報告錯誤碼,具體可以參照2.2節

java本地介面(Java Native Interface)

CLDC沒有提供J2SE JNI特性,這允許java代碼來調用本地代碼。JNI被忽 略,部分是因為記憶體消耗,同時也是為了保護CLDC以免由於惡意代碼帶來的安全問題,詳細可參照2.1.2節。

2.1.1.3類的裝載

在J2SE平台,類的裝載是通過類裝載器來實現的,包括應用定義的類裝載器來實現一個開放機制來定位和裝載 Java類。相反,CLDC規範要求實現部可以被應用覆蓋和繼承的裝載機制。這樣做的原因就是防止因從不信任的地方來裝載類而帶來的安全問題。

CLDC規範表示任何虛擬機器實現必須可以裝載以JAR壓縮形式的應用程式套件。然而,它沒有制定額外的不依賴裝置的表示和訪問應用代碼的方法,也沒有提供任何方法使得裝置可以定位和擷取代碼。這些任務被扔給了不依賴裝置的應用管理軟體,它的特性不在規範的範圍之內。Sun的CLDC參考實現包含了這種功能的一個範例實現,被稱為java應用管理器(JAM).

裝置可以把任何支援的擴充格式的應用轉化為更適合和高效的內部格式。例如,針對PalmOS的MIDP產品,包含了CLDC的實現,接受了以JAR為格式的應用,就可以把它轉化成 PalmOS支援的PRC格式,具體請參照9.2節。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.