1. gzyueqian
      13352868059

      Java適用于嵌入式系統的優點有哪些?學習Java怎么樣?

      更新時間: 2018-11-28 14:28:03來源: Java培訓瀏覽量:6333

          Java語言的優點在于:它初是由理解和信奉網絡計算夢想的一個小巧而專注的開發組設計的,雖然該語言初的實施方案有點缺陷,但為了這個夢想,他們很少在技術上妥協,結果誕生了一種專為以相互通信為主要目的的設備而設計的語言。有許多技術上的優點都可能會引導嵌入系統開發者選擇Java。下面廣州粵嵌的老師就和大家具體說明一下。
          1.與處理器無關
          Java的個優點就是與處理器無關,這個優點似乎與嵌入式系統沒什么相干。傳統上,嵌入程序就是針對特定的微處理器設計并在其上運行的,而C語言程序的可移植性則可通過編譯或交叉編譯來保障。
          但是在Sun公司的模型中,一個程序可能是存儲在一個系統上,而被下載并運行在另一個完全不同的系統上;設備可能從不同地方下載一些程序來在一個處理器上運行,或者不同的處理器運行一個程序,通過網絡在相互間傳遞數據。使用Java,一個嵌入式系統就可能成為一個通用的通信設備,能下載并運行能完成特定任務的程序。

          對嵌入式系統,這是一個新的模型,已經有一些開發者正在向它靠攏。例如,電視機頂盒的供應商已宣布并入JVM,以使用戶能通過Javaapplets在他們觀看電視的同時接收到的支持該電視節目的一些內容。這樣你在觀看足球比賽時,看到的支持內容就可以是對球員的技術統計,若你在看電影,看到的支持內容就可以是演員的背景資料。JVM還被移植到移動電話中,這樣用戶可接收股票報價信息、比賽分數及其他即時信息。


          這是一個恰當的設計和實施模型,首先它可以使開發平臺的選擇更加靈活,無需在與目標相同的平臺上開發,也不用關心交叉編譯的問題,因為Java字節碼能在任何有JVM的操作系統中運行。其次,這種模型帶來的另一個優點是幾乎所有的檢測和調試可以獨立于目標設備來進行。但是,一些數據輸入和硬件交互要求在目標(或是很好的仿真系統)上測試。由于個別JVM有時有兼容性的問題,你應該在所有將用到該程序的平臺上測試它。但一般來說,你并不要而昂貴的、配備有邏輯探針、ICE以及其它調試工具的、針對目標平臺的開發環境。
          2.面向對象提高開發速度和可維護性
          Java是一種純粹面向對象的語言。所有代碼和數據都是某個類的一部分,沒有全局變量或是獨立于類存在的代碼,一個對象是一個類的實例,對象是通過調用操作方法,或者說函數來操作的,而這些方法或函數也是類的一部分,對象的方法就對象的數據進行操作。Java類被組織成一個等級層次,在層次結構中,一個子類能夠繼承其超類的行為,并可用子類所具備的一些特有功能來擴展其超類的功能。對象模型是你能定義對應真實事物的數據結構,使得程序的任務和任務如何實現者二者之間的轉換變得基本上透明。
          Java類層次有六個主要的類(共有二十三個類)成為類包(packages)。要應用任何包中的任何對象,你只需要申明那個包。你也擁有類層次中的全繼承性,任何層次深部的對象都可取用層次中較高處定義的所有方法。
          面向對象的設計和編程的優點在于其開發速度和代碼的可維護性,許多面向對象的開發都能通過利用和更改現存類庫來完成,而不是創造一個新的結構。這就使開發加快了,Sun’sJavaWorkshop(一個完全用Java寫的IDE)的開發者能在幾個月內建立一個功能齊備的圖形IDE就是一個很好的證據。面向對象的方法還盡量使用自然的結構,使其有很高的可讀性,且可輕易更改和加強。
          3.安全高
          由于有了JVM,一個Java應用程序與操作系統或硬件完全隔絕,因此計算機病毒或其他作祟的代碼就很難獲得對設備的控制。虛擬機是主機設備和那些可能難以確定其質量和可靠性的軟件之間的一個保護層。
          另外,Java設計者從該語言中去掉了指針變量的概念。Java不能任意訪問內存,只能讀寫有Java內存分配管理系統創建的對象。由于Java編譯器所強制的嚴格的分類機制,從理論上來說,訪問那些未分配給程序的內存區域是不可能的。這個限制使得要寫惡意代碼的程序變得非常困難了。當然,這個保護并不完善,有人已經在Java安全模型中找到漏洞,其中一些被Sun公司處理掉了。一些有天分但肆無忌憚的編程人員可能會寫些程序,有意但不直接地更改內存的內容,或從主機獲取密碼或其他信息。但是,JVM確實提供了一定的保護,使得幾乎不可能直接在硬件上運行代碼。
          對Javaapplet施加的限制就更加嚴格了。由于Javaapplet被設計成從Internet上下載,因而被視為不可信任的代碼,除非它包括你已認定為可信任的主機的數字指紋。JVM在內存的一個稱之為sandbox的區域運行諸如applet這種不可信任的代碼。它給每個applet分配資源和特權,并將其限定在這些分配區域范圍中。除了這些限制,sandbox模型還施加如下限制:禁止讀寫當地計算機文件系統;網絡操作被限止,禁止不被信任的代碼建立與任何計算機的網絡連接,從其下載的那臺計算機除外,它也不能在任何小于1024的端口號(為標準網絡協議使用那些的端口所保留的端口范圍)上監聽和接受連接;在運行不被信任代碼的線程組以外,禁止訪問或創建線程。
          4.內存管理簡單
          Java的內存管理遠比其他語言簡單,因為它不使用指針。當對象被實例化時,內存被動態分配。正如我們前面分析的,對個別內存地址的訪問被Java的設計者視為一個對安全的潛在危險,因此,訪問也被禁止。而且,Sun的網絡模型已假定你也許不知道目標處理器,而引用專用內存地址變得沒有必要。去掉指針的結果不僅提高了安全性,還簡化了編程,錯誤也減少了。
          為了理解Java怎樣分配內存,我們來與C語言比較一下。在C語言中,可以用值或引用的方式來訪問數據。事實上,出于靈活性和控制考慮,非原始數據類型都由引用方式來存取,即通過指針訪問。因此,值和引用的不同變得非常清楚,特別是:因為你不得不使用不同的符號(*和&)來存取數據。要用這兩種不同的訪問方式,你必須清楚理解它們是什么以及你為什么應該使用這一個,而不使用那一個。
          在Java中,由值和引用來存儲是無縫的,尤其因為其符號都一樣。兩者間不同在于數據類型本身:所有原始數據類型始終由值的方式存取;所有對象,包括字串、數組以及文件流,始終由引用方式訪問。聲明為原始數據變量類型包含該變量的值,聲明為對象的變量則包含對該對象(即該對象的地址)的一個引用,而非對象自身的引用。僅僅聲明一個對象變量并不給對象分配內存,你必須用“new”關鍵字來分配內存和創建對象。
          這兩種方法根本的不同在于:不可能象在C中那樣就Java內存地址做指針算術或其他操作。Java中對象的地址是相對的(或虛擬的),它由虛擬機任意分配,因此你沒有理由還想要指針地址。
          5.具有垃圾收集功能
          垃圾收集自動收集內存中未引用的內存,并將其歸回空閑內存鏈表中。JVM使用此功能將不在使用的內存還給系統。當Java程序說明并實例化一個對象或數組時,它僅僅做一個JVM請求,訪問其下面的系統內存(通常是通過主機操作系統)并分配內存,Java的垃圾收集系統通過內存收集對象,然后檢查它們的引用鏈。Java的垃圾收集系統的工作方式一般是搜索內存中的對象,然后檢查它們的引用表。它計算程序中有多少變量當前正在引用每個對象。若對象的引用數目為零,它知道此對象不再在使用了,它的內存可以收回。其結果就是,不必像你在C語言所作的那樣,要人工來釋放分配的內存。在C中,釋放內存是一個必要、耗時且易出錯的細節。Java自動而精確的處理此過程,去除了C/C++程序中那種常見的錯誤致因。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 一区二区三区精品aⅴ专区 久久综合香蕉久久久久久久 | 欧美日韩国产一区二区三区地区 | 亚洲se频在线观看 | 日本乱妇AⅤ在线观看 | 日韩精品亚洲人成在线观看 | 最新国产成年人小视频 |