Java語言的產生及其特點

來源:互聯網
上載者:User
Java產生的曆史與現狀 Java產生的曆史

          Java來自於Sun公司的一個叫Green的項目,其原先的目的是為家用消費電子產品開發一個分布式代碼系 統,這樣我們可以把E-mail發給電冰箱、電視機等家用電器,對它們進行控制,和它們進行資訊交流。開 始,準備採用C++,但C++太複雜,安全性差,最後基於C++開發一種新的語言Oak(Java的前身),Oak是一種 用於網路的精巧而安全的語言,Sun公司曾依此投標一個互動式電視項目,但結果是被SGI打敗。可憐的Oak幾乎無家可歸,恰巧這時Mark Ardreesen開發的Mosaic和Netscape啟發了Oak項目群組成員,他們用Java編製了HotJava瀏覽器,得到了Sun公司首席執行官Scott McNealy的支援,觸發了Java進軍Internet。Java的取名也有一趣聞,有一天,幾位Java成員組的會員正在討論給這個新的語言取什麼名字,當時他們正在咖啡館喝著Java(爪哇) 咖啡,有一個人靈機一動說就叫Java怎樣,得到了其他人的讚賞,於是,Java這個名字就這樣傳開了。

Java的現狀

          Java是Sun公司推出的新的一代物件導向程式設計語言,特別適合於Internet應用程式開發,它的平台無關性直接威脅到Wintel的壟斷地位。一時間,“ 連Internet,用Java編程”,成為技術人員的一種時尚。雖然新 聞界的報導有些言過其實,但Java作為軟體開發的一種革命性的技術,其地位已被確立,這表現在以下幾個方面:
1、電腦產業的許多大公司購買了Java的許可證,包括IBM,Apple,DEC,Adobe,Silicon Graphics,HP,Oracel,Toshiba, 以及最不情願的Microsoft。這一點說明,Java已得到了工業界的認可。
2、眾多的軟體開發商開始支援Java的軟體產品。例如:Borland公司正在開發的基於Java的快速應用程式開發環境Latte,預計產品會在1996年中期發布。Borland公司的這一舉措,推動了Java進入PC機軟體市場。Sun公司自己的Java開發環境Java Workshop已經發布。資料庫廠商如:Illustra,Sysbase,Versant,Oracle都在開發CGI介面,支援HTML和Java。今天是以網路為中心的計算時代,不支援HTML和Java,應用程式的應用範圍只能限於同質的環境(相同的硬體平台)。
3、Intranet正在成為公司資訊系統最佳的解決方案,而其中Java將發揮不可替代的作用。Intranet的目的是把Internet用於企業內部的資訊系統,它的優點表現在:便宜,便於使用和管理。使用者不管使用何種類型的機器和作業系統,介面是統一的Internet瀏覽器,而資料庫、Web頁面、 應用程式(用Java編的Applet)則存在WWW伺服器上,無論是開發人員,還是管理員,抑或是使用者都可以受益於該解 決方案。
        Java語言正在不斷髮展和完善,Sun公司是主要的發展推動者,較通用的編譯環境有JDK(Java Develop Kit)與JWS(Java Workshop)。還有很多其他公司正在開發Java語言的編譯器與Integration Environment,預計不久Java語言的正確性與效率都將會提高,使用者用Java編程和現在用C++編程一樣方便。

Java語言的特點

          Java到底是一種什麼樣的語言呢?Java是一種簡單的面象對象的分布式的解釋的健壯的安全的結構中立的可移植的效能很優異的多線程的動態語言。

簡單

          Java最初是為對家用電器進行整合控制而設計的一種語言,因此它必須簡單明了。Java語言的簡單性主要體現在以下三個方面:
         1、 Java的風格類似於C++,因而C++程式員是非常熟悉的。從某種意義上講,Java語言是C及C++語言的一個變種,因此,C++程式員可以很快就掌握Java編程技術。
         2、 Java摒棄了C++中容易引發程式錯誤的地方,如指標和記憶體管理。3、Java提供了豐富的類庫。

物件導向

          物件導向可以說是Java最重要的特性。Java語言的設計完全是物件導向的,它不支援類似C語言那樣的面向過程的程式設計技術。Java支援靜態和動態風格的代碼繼承及重用。單從物件導向的特性來看,Java類似於SmallTalk,但其它特性、尤其是適用於分散式運算環境的特性遠遠超越了SmallTalk。

分布式

          Java包括一個支援HTTP和FTP等基於TCP/IP協議的子庫。因此,Java應用程式可憑藉URL開啟並訪問網路上的對象,其訪問方式與訪問本地檔案系統幾乎完全相同。為分布環境尤其是Internet提供動態內容無疑是一項非常宏偉的任務,但Java的文法特性卻使我們很容易地實現這項目標。

健壯

          Java致力於檢查程式在編譯和運行時的錯誤。類型檢查協助檢查出許多開發早期出現的錯誤。Java自已操縱記憶體減少了記憶體出錯的可能性。Java還實現了真數組,避免了覆蓋資料的可能。這個功能特徵大大縮短了開發Java應用程式的周期。Java提供Null指標檢測數組邊界檢測異常出口位元組代碼校正。

結構中立

          另外,為了建立Java作為網路的一個整體,Java將它的程式編譯成一種結構中立的中間檔案格式。只要有Java運行系統的機器都能執行這種中間代碼。現在,Java運行系統有Solaris2.4(SPARC),Win32系統(Windows95和Windows NT)等。 Java來源程式被編譯成一種高層次的與機器無關的byte-code格式語言,這種語言被設計在虛擬機器上運行,由機器相關的運行調試器實現執行。

安全

          Java的安全性可從兩個方面得到保證。一方面,在Java語言裡,象指標和釋放記憶體等C++功能被刪除,避免了非法記憶體操作。另一方面,當Java用來建立瀏覽器時,語言功能和一個瀏覽器本身提供的功能結合起來,使它更安全。Java語言在你的機器上執行前,要經過很多次的測試。它經過代碼校正,檢查程式碼片段的格式,檢測指標操作,對象操作是否過分以及試圖改變一個對象的類型。

Byte-code校正

          如果byte-code通過代碼校正,沒有返回錯誤,我們可知道:代碼沒有堆棧上溢出和下溢出所有作業碼參數類型都是正確的沒有發生非法資料轉換,如將整數轉換成指標。訪問對象操作是合法的。

 類裝載

          Class Loader通過將本機類與網路資源類的名稱分開,來保持安全性。因為調入類時總要經過檢查,這樣避免了特洛伊木馬現象的出現。從網路上下載的類被調進一個與源相關的私人的名字域。當一個私人類訪問另一個類時,build-in(本機類)首先被檢查,然後檢查相關的類。這樣就避免了破壞本機類情況的出現。

可移植的

          同體繫結構無關的特性使得Java應用程式可以在配備了Java解譯器和運行環境的任何電腦系統上運行,這成為Java應用軟體便於移植的良好基礎。但僅僅如此還不夠。如果基礎資料型別 (Elementary Data Type)設計依賴於具體實現,也將為程式的移植帶來很大不便。例如在Windows 3.1中整數(Integer)為16bits,在Windows 95中整數為32bits,在DEC Alpha中整數為64bits,在Intel 486中為32bits。通過定義獨立於平台的基礎資料型別 (Elementary Data Type)及其運算,Java資料得以在任何硬體平台上保持一致。Java語言的基礎資料型別 (Elementary Data Type)及其表示方式如下:
byte 8-bit                                            二進位補碼
short 16-bit                                         二進位補碼
int 32-bit                                             二 進位補碼
long 64-bit                                          二 進位補碼
float 32-bit                                          IEEE 754浮點數
double 32-bit                                      IEEE 754浮點數
char 16-bit                                          Unicode字元

         在任何Java解譯器中,資料類型都是依據以上標準具體實現的。因為幾乎目前使用的所有CPU都能支援以上資料類型、8~64位整數格式的補碼運算和單/雙精確度浮點運 算。Java編譯器本身就是用Java語言編寫的。Java運算系統的編製依據POSIX方便移植的限制,用ANSI C語言寫成。Java語言規範中也沒有任何“同具體實現相關”的內容。

解釋的

          Java解譯器(運行系統)能直接運行目標代碼指令。連結程式通常比編譯器所需資源少,所以程式員可以在建立來源程式上花上更多的時間。

高效能

          如果解譯器速度不慢,Java可以在運行時直接將目標代碼翻譯成機器指令。Sun用直接解譯器一秒鐘內可調用300,000個過程。翻譯目標代碼的速度與C/C++的效能沒什麼區別。

多線程

         Java提供的多線程功能使得在一個程式裡可同時執行多個小任務。線程——有時也稱小進程——是一個大進程裡分出來的小的獨立的進程。因為Java實現的多線程技術,所以比C和C++更鍵壯。多線程帶來的更大的好處是更好的互動效能和即時控制效能。當然即時控制效能還取決於系統本身(UNIX,Windows,Macintosh等),在開發難易程度和效能上都比單線程要好。任何用過當前瀏覽器的人,都感覺為調一副圖片而等待是一件很煩惱的事情。在Java裡,你可用一個單線程來調一副圖片,而你可以訪問HTML裡的其它資訊而不必等它。

動態

          Java的動態特性是其物件導向設計方法的擴充。它允許程式動態地裝入運行過程中所需要的類,這是C++語言進行物件導向程式設計所無法實現的。在C++程式設計過程中,每當在類中增加一個執行個體變數或一種成員函數後,引用該類的所有子類都必須重新編譯,否則將導致程式崩潰。Java從如下幾方面採取措施來解決這個問題。Java編譯器不是將對執行個體變數和成員函數的引用編譯為數值引用,而是將符號引用資訊在位元組碼中儲存下傳遞給解譯器,再由解譯器在完成動態串連類後,將符號引用資訊轉換為數值位移量。這樣,一個在儲存空間產生的對象不在編譯過程中決定,而是延遲到運行時由解譯器確定的。這樣,對類中的變數和方法進行更新時就不至於影響現存的代碼。解釋執行位元組碼時,這種符號資訊的尋找和轉換過程僅在一個新的名字出現時才進行一次,隨後代碼便可以全速執行。在運行時確定引用的好處是可以使用已被更新的類,而不必擔心會影響原有的代碼。如果程式串連了網路中另一系統中的某一類,該類的所有者也可以自由地對該類進行更新,而不會使任何引用該類的程式崩潰。Java還簡化了使用一個升級的或全新的協議的方法。如果你的系統運行Java程式時遇到了不知怎樣處理的程式,沒關係,Java能自動下載你所需要的功能程式。

與C和C++語言的異同

          Java提供了一個功能強大語言的所有功能,但幾乎沒有一點含混特徵。C++安全性不好,但C和C++還是被大家所接受,所以Java設計成C++形式,讓大家很容易學習。Java去掉了C++語言的許多功能,讓Java的語言功能很精鍊,並增加了一些很有用的功能,Java去掉了以下幾個C和C++功能和特徵:指標運算結構、typedefs、 #define、 需要釋放記憶體全域變數的定義,這些功能都是很容易引起錯誤的地方。

Java的應用簡介Web瀏覽

          Web瀏覽是現在國際網甚至區域網路的主要使用方式。文檔能很容易地顯示文本和各種圖片,他還能提供超文本連結。這些瀏覽器調用HTML語言寫的文檔,HTML/WWW瀏覽器技術只限於文本和圖象。如果你想播放一種聲音或運行一個示範程式,你不得不下載那個檔案並用你本機上的能理解和運行那個檔案格式的程式來播放它。Java程式和它的瀏覽器HotJava,提供了可讓你的瀏覽器運行程式的方法。你能從你的瀏覽器裡直接播放聲音。你還能播放頁面裡的動畫。Java還能告訴你的瀏覽器怎樣處理新的類型檔案。當我們能在2400 baud線上傳輸視頻圖象時,HotJava將能顯示這些視 頻。

網路應用系統

          Java是一種與平台無關的語言,因此用Java開發的網路應用系統可以在各種平台上運行,大大增加了開發效率,減少重複勞動。而且,Java整合的網路功能充分有利於開發網路應用系統。

小 結:

1、Java的產生與流行是當今Internet發展的客觀要求
2、Java是一門各方面效能都很好的程式設計語言,它的基本特點是簡單、面象對象、分布式、解釋的、健壯的、安全的、結構中立的、可移植的、效能很優異的、多線程的、動態。十分適合在Internet環境上開發應用系統。
3、Java可以製作大部分網路應用程式系統,而且與當今流行的WWW瀏覽器結合得很好。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.