溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java嵌入式開發(fā)的優(yōu)勢有哪些

發(fā)布時間:2022-11-21 09:27:58 來源:億速云 閱讀:92 作者:iii 欄目:開發(fā)技術

這篇文章主要介紹“Java嵌入式開發(fā)的優(yōu)勢有哪些”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Java嵌入式開發(fā)的優(yōu)勢有哪些”文章能幫助大家解決問題。

Java嵌入式開發(fā)的優(yōu)勢

優(yōu)點1:與處理器無關

Java的第一個優(yōu)點就是與處理器無關。傳統(tǒng)上,嵌入程序就是針對特定的微處理器設計并在其上運行的,而C語言程序的可移植性則可通過編譯或交叉編譯來保障。但是利用Java,一個程序可以存儲在一個系統(tǒng)上,而被下載并運行在完全不同的另一個系統(tǒng)上;設備可能從不同地方下載一些程序在一個處理器上運行,或者不同的處理器運行同一個程序,并通過網(wǎng)絡在相互間傳遞數(shù)據(jù)。使用Java,一個嵌入式系統(tǒng)就可能成為一個通用的通信設備,能下載并運行能完成特定任務的程序。

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

這是一個恰當?shù)脑O計和實施模型,首先它可以使開發(fā)平臺的選擇更加靈活,無需在與目標相同的平臺上開發(fā),也不用關心交叉編譯的問題,因為Java字節(jié)碼能在任何有JVM的操作系統(tǒng)中運行。其次,這種模型帶來的另一個優(yōu)點是幾乎所有的檢測和調試可以獨立于目標設備來進行。雖然由于個別JVM有時有兼容性的問題,應該在所有將用到該程序的平臺上測試它。但一般來說,并不要高級而昂貴的、配備有邏輯探針、 ICE以及其他調試工具的、針對目標平臺的開發(fā)環(huán)境。

優(yōu)點2:提高開發(fā)速度和可維護性

Java是一種純粹面向對象的語言。Java類被組織成一個等級層次,在層次結構中,一個子類能夠繼承其超類的行為,并可用子類所具備的一些特有功能來擴展其超類的功能。對象模型是能定義對應真實事物的數(shù)據(jù)結構,使得程序的任務和任務如何實現(xiàn)二者之間的轉換變得基本上透明。

面向對象的設計和編程的優(yōu)點在于其開發(fā)速度和代碼的可維護性,許多面向對象的開發(fā)都能通過利用和更改現(xiàn)存類庫來完成,而不是創(chuàng)造一個新的結構。這就使開發(fā)加快了, Sun‘s Java Workshop(一個完全用Java寫的IDE)的開發(fā)者能在幾個月內建立一個功能齊備的圖形IDE就是一個很好的證據(jù)。面向對象的方法還盡量使用自然的結構,使其有很高的可讀性,并且可輕易更改和加強。

優(yōu)點3:安全性高

由于有了JVM,一個Java應用程序與操作系統(tǒng)或硬件完全隔絕,因此計算機病毒或其他作祟的代碼就很難獲得對設備的控制。虛擬機是主機設備和那些可能難以確定其質量和可靠性的軟件之間的一個保護層。

另外,Java設計者從該語言中去掉了指針變量的概念。Java不能任意訪問內存,只能讀寫有Java內存分配管理系統(tǒng)創(chuàng)建的對象。由于Java編譯器所強制的嚴格的分類機制,從理論上來說,訪問那些未分配給程序的內存區(qū)域是不可能的。這個限制使得寫惡意代碼變得非常困難了。當然,這個保護并不完善,有人已經(jīng)在Java安全模型中找到漏洞,但是,JVM確實提供了一定的保護,使得幾乎不可能直接在硬件上運行代碼。

對Java applet施加的限制就更加嚴格了。由于Java applet被設計成從Internet上下載,因而被視為不可信任的代碼,除非它包括用戶已認定為可信任的主機的數(shù)字指紋。JVM在內存的一個稱之為 sandbox的區(qū)域運行諸如applet這種不可信任的代碼。它給每個applet分配資源和特權,并將其限定在這些分配區(qū)域范圍中。除了這些限制, sandbox模型還施加如下限制:禁止讀寫當?shù)赜嬎銠C文件系統(tǒng);網(wǎng)絡操作被限止,禁止不被信任的代碼建立與任何計算機的網(wǎng)絡連接,它也不能在任何小于1024的端口號上監(jiān)聽和接受連接;在運行不被信任代碼的線程組以外,禁止訪問或創(chuàng)建線程。

優(yōu)點4:內存管理簡單

Java的內存管理遠比其他語言簡單,因為它不使用指針。當對象被實例化時,內存被動態(tài)分配。正如我們前面分析的,對個別內存地址的訪問被Java的設計者視為一個對安全的潛在危險,因此,訪問也被禁止。去掉指針的結果不僅提高了安全性,還簡化了編程,錯誤也減少了。

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

在Java中,由值和引用來存儲是無縫的,尤其因為其符號都一樣。兩者間惟一不同在于數(shù)據(jù)類型本身:所有原始數(shù)據(jù)類型始終由值的方式存取;所有對象,包括字串、數(shù)組以及文件流,始終由引用方式訪問。聲明為原始數(shù)據(jù)變量類型包含該變量的值,聲明為對象的變量則包含對該對象(即該對象的地址)的一個引用,而非對象自身的引用。僅僅聲明一個對象變量并不給對象分配內存,必須用“new”關鍵字來分配內存和創(chuàng)建對象。

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

優(yōu)點5:具有垃圾收集功能

垃圾收集功能自動收集內存中未引用的內存,并將其歸回空閑內存鏈表中。JVM使用此功能將不在使用的內存還給系統(tǒng)。當Java程序說明并實例化一個對象或數(shù)組時,它僅僅做一個JVM請求,訪問其下面的系統(tǒng)內存(通常是通過主機操作系統(tǒng))并分配內存,Java的垃圾收集系統(tǒng)通過內存收集對象,然后檢查它們的引用鏈。Java的垃圾收集系統(tǒng)的工作方式一般是搜索內存中的對象,然后檢查它們的引用表。它計算程序中有多少變量當前正在引用每個對象。若對象的引用數(shù)目為零,它知道此對象不再在使用了,它的內存可以收回。其結果就是,不必像C語言那樣,要人工來釋放分配的內存。在C語言中,釋放內存是一個必要、耗時且易出錯的細節(jié)。Java自動而精確的處理此過程,去除了C/C++程序中那種常見的錯誤致因。

優(yōu)點6:網(wǎng)絡實現(xiàn)方便

由于今天的嵌入式系統(tǒng)通常都是面向網(wǎng)絡的,采用內置網(wǎng)絡支持的語言節(jié)約了在實現(xiàn)網(wǎng)絡協(xié)議和通信程序方面耗費的大量時間和努力。在Java中,網(wǎng)絡類包括 TCP/IP流和使用TCP及UDP的數(shù)據(jù)報程序,用于HTTP和URL服務的操作方法,以及錯誤檢查代碼和恢復功能。雖然實現(xiàn)網(wǎng)絡也可能用其他語言,比如C語言,但那些語言要求特別的附件軟件包、DLL,或其他必須由操作系統(tǒng)或者第三方銷售提供的程序模塊。特別附件通常要求有操作系統(tǒng)或第三方工具的知識,不像Java,有標準的、內置的網(wǎng)絡支持。Java包括網(wǎng)絡包是必要的,因為設計者不能對一個作為基礎的操作系統(tǒng)的網(wǎng)絡設施做任何假定,它們必須包括集成網(wǎng)絡程序庫,以確保Java程序能在所有平臺上工作。

優(yōu)點7:可以實現(xiàn)動態(tài)配置

動態(tài)配置是指系統(tǒng)啟動時的用戶制定配置或重新配置。需載入特殊的硬件配置、網(wǎng)絡參數(shù)或在引導期間支持特定用途的一些實用程序的系統(tǒng),常常使用動態(tài)配置。Java以動態(tài)捆綁來支持動態(tài)配置。當組成一個程序的各個類文件編譯成字節(jié)碼時,在類文件之間,或者對JVM包的類(如圖形、網(wǎng)絡以及核心語言支持)引用,還沒有被解決。當JVM載入程序啟動時,它動態(tài)的載入并捆綁(即鏈接)程序引用的所有的類。因此,要改變系統(tǒng)配置,需要做的就是修正相應的類文件。下一次啟動時,JVM自動捆綁新文件到你的程序中,而新的配置將生效執(zhí)行。

優(yōu)點8:可以輕松誘捕和處理錯誤

與許多操作系統(tǒng)和程序不同,對嵌入系統(tǒng)而言,重新啟動通常是無法接受的。這意味著嵌入式系統(tǒng)都必須足夠堅實,能夠以截取錯誤來防止程序或整個設備崩潰。

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

在Java中,由拋出(產(chǎn)生)一個異常來提示錯誤。使用專門為異常處理而設計的語句(關鍵字try、catch、和finally),程序能將其錯誤處理代碼安排到幾個集中區(qū)域中。try程序塊是程序執(zhí)行的正常流程,當一個異常發(fā)生在 try塊(包括該嵌套塊中的各層子程序)中,控制就交給了catch塊。不管是否有異常發(fā)生,finally塊中的代碼始終要被執(zhí)行。未被處理的異常會由調用堆棧自下而上傳播JVM并終止程序。不再需要動手編程來將錯誤狀態(tài)通過幾層函數(shù)調用返回。而是,在錯誤發(fā)生由檢測錯誤的代碼直接拋出一個異常。這極大地簡化了應用程序中的錯誤處理代碼,進而獲得更好地錯誤處理效果和更堅實可靠的代碼。

優(yōu)點9:提供對線程管理的直線支持

大多數(shù)操作系統(tǒng)都給一個進程產(chǎn)生和管理多個線程的能力,這些線程彼此獨立地完成不同的任務。但是,很少由程序語言提供對線程管理的直線支持,通常都需要直接調用操作系統(tǒng)功能。Java卻相反,直接在語言中提供了產(chǎn)生、管理和協(xié)調同步線程的功能。與Java的其他特點一樣,該功能是必要的,因為設計者不敢確定底層的操作系統(tǒng)是否支持多線程。

開發(fā)者越來越多地在程序中使用線程,將其作為滿足一個程序不能完成的,通常相互無關的一些任務的一種手段。由于Java對線程有內置語言支持,以創(chuàng)建Java多線程較之與其他語言更簡單、更自然。

優(yōu)點10:圖形功能強大

JVM包括一個龐大的圖形及窗口支持程序包,稱為Abstract Windowing Toolkit(AWT)。用AWT,能在應用程序中快速而輕易地創(chuàng)建精致而強大的圖形用戶界面。對于需要精細的用戶界面的嵌入系統(tǒng)來說,AWT能節(jié)省大量開發(fā)時間,從而使產(chǎn)品更快地走向市場。

關于“Java嵌入式開發(fā)的優(yōu)勢有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識,可以關注億速云行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI