Java用於嵌入式系統的優點

與個人計算機這樣的通用計算機系統不同,嵌入式系統通常執行的是帶有特定要求的預先定義的任務。yjbys小編下面為你整理了關於Java用於嵌入式系統的優點,希望對你有所幫助。

Java用於嵌入式系統的優點

  優點1:與處理器無關

Java的第一個優點就是與處理器無關。傳統上,嵌入程式就是針對特定的微處理器設計並在其上執行的,而C語言程式的可移植性則可通過編譯或交叉編譯來保障。但是利用Java,一個程式可以儲存在一個系統上,而被下載並執行在完全不同的另一個系統上;裝置可能從不同地方下載一些程式在一個處理器上執行,或者不同的處理器運行同一個程式,並通過網路在相互間傳遞資料。使用Java,一個嵌入式系統就可能成為一個通用的通訊裝置,能下載並執行能完成特定任務的程式。

對嵌入式系統而言,這是一個新的模型,已經有一些開發者正在向它靠攏。例如,電視機頂盒的供應商已宣佈要在機頂盒內植入 JVM,以使使用者能通過Java applets在他們觀看電視的同時接收到該電視節目的一些內容。例如在觀看足球比賽時,看到的支援內容就可以是對球員的技術統計,在看電影時,看到的支援內容就可以是演員的背景資料。

這是一個恰當的設計和實施模型,首先它可以使開發平臺的選擇更加靈活,無需在與目標相同的平臺上開發,也不用關心交叉編譯的問題,因為Java位元組碼能在任何有JVM的作業系統中執行。其次,這種模型帶來的另一個優點是幾乎所有的檢測和除錯可以獨立於目標裝置來進行。雖然由於個別JVM有時有相容性的問題,應該在所有將用到該程式的平臺上測試它。但一般來說,並不要高階而昂貴的、配備有邏輯探針、 ICE以及其他除錯工具的、針對目標平臺的開發環境

  優點2:提高開發速度和可維護性

Java是一種純粹面向物件的語言。Java類被組織成一個等級層次,在層次結構中,一個子類能夠繼承其超類的行為,並可用子類所具備的一些特有功能來擴充套件其超類的功能。物件模型是能定義對應真實事物的資料結構,使得程式的任務和任務如何實現二者之間的轉換變得基本上透明。

面向物件的設計和程式設計的優點在於其開發速度和程式碼的可維護性,許多面向物件的開發都能通過利用和更改現存類庫來完成,而不是創造一個新的結構。這就使開發加快了, Sun‘s Java Workshop(一個完全用Java寫的IDE)的開發者能在幾個月內建立一個功能齊備的圖形IDE就是一個很好的證據。面向物件的方法還儘量使用自然的結構,使其有很高的可讀性,並且可輕易更改和加強。

  優點3:安全性高

由於有了JVM,一個Java應用程式與作業系統或硬體完全隔絕,因此計算機病毒或其他作祟的程式碼就很難獲得對裝置的控制。虛擬機器是主機裝置和那些可能難以確定其質量和可靠性的軟體之間的一個保護層。

另外,Java設計者從該語言中去掉了指標變數的概念。Java不能任意訪問記憶體,只能讀寫有Java記憶體分配管理系統建立的物件。由於Java編譯器所強制的嚴格的分類機制,從理論上來說,訪問那些未分配給程式的記憶體區域是不可能的。這個限制使得寫惡意程式碼變得非常困難了。當然,這個保護並不完善,有人已經在Java安全模型中找到漏洞,但是,JVM確實提供了一定的保護,使得幾乎不可能直接在硬體上執行程式碼。

對Java applet施加的限制就更加嚴格了。由於Java applet被設計成從Internet上下載,因而被視為不可信任的程式碼,除非它包括使用者已認定為可信任的主機的數字指紋。JVM在記憶體的一個稱之為 sandbox的區域執行諸如applet這種不可信任的程式碼。它給每個applet分配資源和特權,並將其限定在這些分配區域範圍中。除了這些限制, sandbox模型還施加如下限制: 禁止讀寫當地計算機檔案系統;網路操作被限止,禁止不被信任的程式碼建立與任何計算機的網路連線,它也不能在任何小於1024的埠號上監聽和接受連線;在執行不被信任程式碼的執行緒組以外,禁止訪問或建立執行緒。

  優點4:記憶體管理簡單

Java的記憶體管理遠比其他語言簡單,因為它不使用指標。當物件被例項化時,記憶體被動態分配。正如我們前面分析的,對個別記憶體地址的訪問被Java的設計者視為一個對安全的潛在危險,因此,訪問也被禁止。去掉指標的結果不僅提高了安全性,還簡化了程式設計,錯誤也減少了。

為了理解Java怎樣分配記憶體,我們拿Java與C語言比較一下。在C語言中,可以用值或引用的方式來訪問資料。事實上,出於靈活性和控制考慮,非原始資料型別都由引用方式來存取,即通過指標訪問。因此,值和引用的不同變得非常清楚,特別是開發者不得不使用不同的符號(*和&)來存取資料。要用這兩種不同的訪問方式,必須清楚理解它們是什麼以及為什麼應該使用這一個,而不使用那一個。

在Java中,由值和引用來儲存是無縫的,尤其因為其符號都一樣。兩者間惟一不同在於資料型別本身:所有原始資料型別始終由值的方式存取;所有物件,包括字串、陣列以及檔案流,始終由引用方式訪問。宣告為原始資料變數型別包含該變數的值,宣告為物件的變數則包含對該物件(即該物件的地址)的一個引用,而非物件自身的引用。僅僅宣告一個物件變數並不給物件分配記憶體,必須用“new”關鍵字來分配記憶體和建立物件。

這兩種方法最根本的不同在於:不可能像在C中那樣就Java記憶體地址做指標算術或其他操作。Java中物件的地址是相對的(或虛擬的),它由虛擬機器任意分配,因此你沒有理由還想要指標地址。

  優點5:具有垃圾收集功能

垃圾收集功能自動收集記憶體中未引用的記憶體,並將其歸回空閒記憶體連結串列中。JVM使用此功能將不在使用的記憶體還給系統。當Java程式說明並例項化一個物件或陣列時,它僅僅做一個JVM請求,訪問其下面的系統記憶體(通常是通過主機作業系統)並分配記憶體,Java的垃圾收集系統通過記憶體收集物件,然後檢查它們的引用鏈。Java的垃圾收集系統的工作方式一般是搜尋記憶體中的物件,然後檢查它們的引用表。它計算程式中有多少變數當前正在引用每個物件。若物件的引用數目為零,它知道此物件不再在使用了,它的記憶體可以收回。其結果就是,不必像C語言那樣,要人工來釋放分配的記憶體。在C語言中,釋放記憶體是一個必要、耗時且易出錯的細節。Java自動而精確的處理此過程,去除了C/C++程式中那種常見的錯誤致因。

  優點6:網路實現方便

由於今天的.嵌入式系統通常都是面向網路的,採用內建網路支援的語言節約了在實現網路協議和通訊程式方面耗費的大量時間和努力。在Java中,網路類包括 TCP/IP流和使用TCP及UDP的資料報程式,用於HTTP和URL服務的操作方法,以及錯誤檢查程式碼和恢復功能。雖然實現網路也可能用其他語言,比如C語言,但那些語言要求特別的附件軟體包、DLL,或其他必須由作業系統或者第三方銷售提供的程式模組。特別附件通常要求有作業系統或第三方工具的知識,不像Java,有標準的、內建的網路支援。Java包括網路包是必要的,因為設計者不能對一個作為基礎的作業系統的網路設施做任何假定,它們必須包括整合網路程式庫,以確保Java程式能在所有平臺上工作。

  優點7:可以實現動態配置

動態配置是指系統啟動時的使用者制定配置或重新配置。需載入特殊的硬體配置、網路引數或在引導期間支援特定用途的一些實用程式的系統,常常使用動態配置。 Java以動態捆綁來支援動態配置。當組成一個程式的各個類檔案編譯成位元組碼時,在類檔案之間,或者對JVM包的類(如圖形、網路以及核心語言支援)引用,還沒有被解決。當JVM載入程式啟動時,它動態的載入並捆綁(即連結)程式引用的所有的類。因此,要改變系統配置,需要做的就是修正相應的類檔案。下一次啟動時,JVM自動捆綁新檔案到你的程式中,而新的配置將生效執行。

  優點8:可以輕鬆誘捕和處理錯誤

與許多作業系統和程式不同,對嵌入系統而言,重新啟動通常是無法接受的。這意味著嵌入式系統都必須足夠堅實,能夠以擷取錯誤來防止程式或整個裝置崩潰。

程式錯誤的致因很多。相對來說,很少是因為繼承邏輯錯誤,而大多數程式的崩潰是因為意外輸入,或者是因為程式不能呼叫系統資源來完成某個特定操作造成的。所以,必須能夠預料這些問題,並要能夠誘捕它們,以免引起更大的問題。雖然,能用幾乎任何程式設計語言來誘捕和處理錯誤,不過如果有內建的設施來做這類工作,比如像Java那樣,會有極大的幫助。

在Java中,由丟擲(產生)一個異常來提示錯誤。使用專門為異常處理而設計的語句(關鍵字try、catch、和finally),程式能將其錯誤處理程式碼安排到幾個集中區域中。try程式塊是程式執行的正常流程,當一個異常發生在 try塊(包括該巢狀塊中的各層子程式)中,控制就交給了catch塊。不管是否有異常發生,finally塊中的程式碼始終要被執行。未被處理的異常會由呼叫堆疊自下而上傳播JVM並終止程式。不再需要動手程式設計來將錯誤狀態通過幾層函式呼叫返回。而是,在錯誤發生由檢測錯誤的程式碼直接丟擲一個異常。這極大地簡化了應用程式中的錯誤處理程式碼,進而獲得更好地錯誤處理效果和更堅實可靠的程式碼。

  優點9:提供對執行緒管理的直線支援

大多數作業系統都給一個程序產生和管理多個執行緒的能力,這些執行緒彼此獨立地完成不同的任務。但是,很少由程式語言提供對執行緒管理的直線支援,通常都需要直接呼叫作業系統功能。Java卻相反,直接在語言中提供了產生、管理和協調同步執行緒的功能。與Java的其他特點一樣,該功能是必要的,因為設計者不敢確定底層的作業系統是否支援多執行緒。

開發者越來越多地在程式中使用執行緒,將其作為滿足一個程式不能完成的,通常相互無關的一些任務的一種手段。由於Java對執行緒有內建語言支援,以Java建立多執行緒較之與其他語言更簡單、更自然。

  優點10:圖形功能強大

JVM包括一個龐大的圖形及視窗支援程式包,稱為Abstract Windowing Toolkit(AWT)。用AWT,能在應用程式中快速而輕易地建立精緻而強大的圖形使用者介面。對於需要精細的使用者介面的嵌入系統來說,AWT能節省大量開發時間,從而使產品更快地走向市場。