當前位置:才華齋>計算機>java語言>

java相關解釋

java語言 閱讀(1.32W)

Java是一門面向物件程式語言,不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。相關內容,一起來看看!

java相關解釋

發展歷程

20世紀90年代,硬體領域出現了單片式計算機系統,這種價格低廉的系統一出現就立即引起了自動控制領域人員的注意,因為使用它可以大幅度提升消費類電子產品(如電視機頂盒、麵包烤箱、行動電話等)的智慧化程度。Sun公司為了搶佔市場先機,在1991年成立了一個稱為Green的專案小組,帕特里克、詹姆斯·高斯林、麥克·舍林丹和其他幾個工程師一起組成的工作小組在加利福尼亞州門洛帕克市沙丘路的一個小工作室裡面研究開發新技術,專攻計算機在家電產品上的嵌入式應用。

由於C++所具有的優勢,該專案組的研究人員首先考慮採用C++來編寫程式。但對於硬體資源極其匱乏的單片式系統來說,C++程式過於複雜和龐大。另外由於消費電子產品所採用的嵌入式處理器晶片的種類繁雜,如何讓編寫的程式跨平臺執行也是個難題。為了解決困難,他們首先著眼於語言的開發,假設了一種結構簡單、符合嵌入式應用需要的硬體平臺體系結構併為其制定了相應的規範,其中就定義了這種硬體平臺的二進位制機器碼指令系統(即後來成為“位元組碼”的指令系統),以待語言開發成功後,能有半導體晶片生產商開發和生產這種硬體平臺。對於新語言的設計,Sun公司研發人員並沒有開發一種全新的語言,而是根據嵌入式軟體的要求,對C++進行了改造,去除了留在C++的一些不太實用及影響安全的成分,並結合嵌入式系統的實時性要求,開發了一種稱為Oak的面嚮物件語言。

由於在開發Oak語言時,尚且不存在執行位元組碼的硬體平臺,所以為了在開發時可以對這種語言進行實驗研究,他們就在已有的硬體和軟體平臺基礎上,按照自己所指定的規範,用軟體建設了一個執行平臺,整個系統除了比C++更加簡單之外,沒有什麼大的區別。1992年的夏天,當Oak語言開發成功後,研究者們向硬體生產商進行演示了Green作業系統、Oak的程式設計語言、類庫和其硬體,以說服他們使用Oak語言生產硬體晶片,但是,硬體生產商並未對此產生極大的熱情。因為他們認為,在所有人對Oak語言還一無所知的情況下,就生產硬體產品的風險實在太大了,所以Oak語言也就因為缺乏硬體的支援而無法進入市場,從而被擱置了下來。

1994年6、7月間,在經歷了一場歷時三天的討論之後,團隊決定再一次改變了努力的目標,這次他們決定將該技術應用於全球資訊網。他們認為隨著Mosaic瀏覽器的到來,因特網正在向同樣的高度互動的遠景演變,而這一遠景正是他們在有線電視網中看到的。作為原型,帕特里克·諾頓寫了一個小型全球資訊網瀏覽器WebRunner。[4]

1995年,網際網路的蓬勃發展給了Oak機會。業界為了使死板、單調的靜態網頁能夠“靈活”起來,急需一種軟體技術來開發一種程式,這種程式可以通過網路傳播並且能夠跨平臺執行。於是,世界各大IT企業為此紛紛投入了大量的人力、物力和財力。這個時候,Sun公司想起了那個被擱置起來很久的Oak,並且重新審視了那個用軟體編寫的試驗平臺,由於它是按照嵌入式系統硬體平臺體系結構進行編寫的,所以非常小,特別適用於網路上的.傳輸系統,而Oak也是一種精簡的語言,程式非常小,適合在網路上傳輸。Sun公司首先推出了可以嵌入網頁並且可以隨同網頁在網路上傳輸的Applet(Applet是一種將小程式嵌入到網頁中進行執行的技術),並將Oak更名為Java(在申請註冊商標時,發現Oak已經被人使用了,再想了一系列名字之後,最終,使用了提議者在喝一杯Java咖啡時無意提到的Java詞語)。5月23日,Sun公司在Sun world會議上正式釋出Java和HotJava瀏覽器。IBM、Apple、DEC、Adobe、HP、Oracle、Netscape和微軟等各大公司都紛紛停止了自己的相關開發專案,競相購買了Java使用許可證,併為自己的產品開發了相應的Java平臺。[5-6]

1996年1月,Sun公司釋出了Java的第一個開發工具包(JDK 1.0),這是Java發展歷程中的重要里程碑,標誌著Java成為一種獨立的開發工具。9月,約8.3萬個網頁應用了Java技術來製作。10月,Sun公司釋出了Java平臺的第一個即時(JIT)編譯器。

1997年2月,JDK 1.1面世,在隨後的3周時間裡,達到了22萬次的下載量。4月2日,Java One會議召開,參會者逾一萬人,創當時全球同類會議規模之紀錄。9月,Java Developer Connection社群成員超過10萬。

1998年12月8日,第二代Java平臺的企業版J2EE釋出。1999年6月,Sun公司釋出了第二代Java平臺(簡稱為Java2)的3個版本:J2ME(Java2 Micro Edition,Java2平臺的微型版),應用於移動、無線及有限資源的環境;J2SE(Java 2 Standard Edition,Java 2平臺的標準版),應用於桌面環境;J2EE(Java 2Enterprise Edition,Java 2平臺的企業版),應用於基於Java的應用伺服器。Java 2平臺的釋出,是Java發展過程中最重要的一個里程碑,標誌著Java的應用開始普及。

1999年4月27日,HotSpot虛擬機發布。HotSpot虛擬機發布時是作為JDK 1.2的附加程式提供的,後來它成為了JDK 1.3及之後所有版本的Sun JDK的預設虛擬機器[7] 。

2000年5月,JDK1.3、JDK1.4和J2SE1.3相繼釋出,幾周後其獲得了Apple公司Mac OS X的工業標準的支援。2001年9月24日,J2EE1.3釋出。2002年2月26日,J2SE1.4釋出。自此Java的計算能力有了大幅提升,與J2SE1.3相比,其多了近62%的類和介面。在這些新特性當中,還提供了廣泛的XML支援、安全套接字(Socket)支援(通過SSL與TLS協議)、全新的I/OAPI、正則表示式、日誌與斷言。2004年9月30日,J2SE1.5釋出,成為Java語言發展史上的又一里程碑。為了表示該版本的重要性,J2SE 1.5更名為Java SE 5.0(內部版本號1.5.0),代號為“Tiger”,Tiger包含了從1996年釋出1.0版本以來的最重大的更新,其中包括泛型支援、基本型別的自動裝箱、改進的迴圈、列舉型別、格式化I/O及可變引數。

2005年6月,在Java One大會上,Sun公司釋出了Java SE 6。此時,Java的各種版本已經更名,已取消其中的數字2,如J2EE更名為JavaEE,J2SE更名為JavaSE,J2ME更名為JavaME。[8]

2006年11月13日,Java技術的發明者Sun公司宣佈,將Java技術作為免費軟體對外發布。Sun公司正式釋出的有關Java平臺標準版的第一批原始碼,以及Java迷你版的可執行原始碼。從2007年3月起,全世界所有的開發人員均可對Java原始碼進行修改[9] 。

2009年,甲骨文公司宣佈收購Sun[10] 。2010年,Java程式語言的共同創始人之一詹姆斯·高斯林從Oracle公司辭職。2011年,甲骨文公司舉行了全球性的活動,以慶祝Java7的推出,隨後Java7正式釋出。2014年,甲骨文公司釋出了Java8正式版。

程式設計開發

程式設計環境

JDK(Java Development Kit)稱為Java開發包或Java開發工具,是一個編寫Java的Applet小程式和應用程式的程式開發環境。JDK是整個Java的核心,包括了Java執行環境(Java Runtime Envirnment),一些Java工具和Java的核心類庫(Java API)。不論什麼Java應用伺服器實質都是內建了某個版本的JDK。主流的JDK是Sun公司釋出的JDK,除了Sun之外,還有很多公司和組織都開發了自己的JDK,例如,IBM公司開發的JDK,BEA公司的Jrocket,還有GNU組織開發的JDK[13] 。

另外,可以把Java API類庫中的Java SE API子集和Java虛擬機器這兩部分統稱為JRE(JAVA Runtime Environment),JRE是支援Java程式執行的標準環境[14] 。

JRE是個執行環境,JDK是個開發環境。因此寫Java程式的時候需要JDK,而執行Java程式的時候就需要JRE。而JDK裡面已經包含了JRE,因此只要安裝了JDK,就可以Java程式,也可以正常執行Java程式。但由於JDK包含了許多與執行無關的內容,佔用的空間較大,因此執行普通的Java程式無須安裝JDK,而只需要安裝JRE即可[15] 。

程式設計工具

Eclipse:一個開放原始碼的、基於Java的可擴充套件開發平臺[16] 。

NetBeans:開放原始碼的Java整合開發環境,適用於各種客戶機和Web應用。

IntelliJ IDEA:在程式碼自動提示、程式碼分析等方面的具有很好的功能。[17]

MyEclipse:由Genuitec公司開發的一款商業化軟體,是應用比較廣泛的Java應用程式整合開發環境[18] 。

EditPlus:如果正確配置Java的編譯器“Javac”以及直譯器“Java”後,可直接使用EditPlus編譯執行Java程式[19] 。

語言特點

1.簡單性

Java看起來設計得很像C++,但是為了使語言小和容易熟悉,設計者們把C++語言中許多可用的特徵去掉了,這些特徵是一般程式設計師很少使用的。例如,Java不支援go to語句,代之以提供break和continue語句以及異常處理。Java還剔除了C++的操作符過載(overload)和多繼承特徵,並且不使用主檔案,免去了預處理程式。因為Java沒有結構,陣列和串都是物件,所以不需要指標。Java能夠自動處理物件的引用和間接引用,實現自動的無用單元收集,使使用者不必為儲存管理問題煩惱,能更多的時間和精力花在研發上。

2.面向物件

Java是一個面向物件的語言。對程式設計師來說,這意味著要注意應中的資料和操縱資料的方法(method),而不是嚴格地用過程來思考。在一個面向物件的系統中,類(class)是資料和操作資料的方法的集合。資料和方法一起描述物件(object)的狀態和行為。每一物件是其狀態和行為的封裝。類是按一定體系和層次安排的,使得子類可以從超類繼承行為。在這個類層次體系中有一個根類,它是具有一般行為的類。Java程式是用類來組織的。

Java還包括一個類的擴充套件集合,分別組成各種程式包(Package),使用者可以在自己的程式中使用。例如,Java提供產生圖形使用者介面部件的類(包),這裡awt是抽象視窗工具集(abstract windowing toolkit)的縮寫,處理輸入輸出的類(包)和支援網路功能的類(包)。

3.分佈性

Java設計成支援在網路上應用,它是分散式語言。Java既支援各種層次的網路連線,又以Socket類支援可靠的流(stream)網路連線,所以使用者可以產生分散式的客戶機和伺服器。

網路變成軟體應用的分佈運載工具。Java程式只要編寫一次,就可到處執行。

4.編譯和解釋性

Java編譯程式生成位元組碼(byte-code),而不是通常的機器碼。Java位元組碼提供對體系結構中性的目標檔案格式,程式碼設計成可有效地傳送程式到多個平臺。Java程式可以在任何實現了Java解釋程式和執行系統(run-time system)的系統上執行。

在一個解釋性的環境中,程式開發的標準“連結”階段大大消失了。如果說Java還有一個連結階段,它只是把新類裝進環境的過程,它是增量式的、輕量級的過程。因此,Java支援快速原型和容易試驗,它將導致快速程式開發。這是一個與傳統的、耗時的“編譯、連結和測試”形成鮮明對比的精巧的開發過程。

5.穩健性

Java原來是用作編寫消費類家用電子產品軟體的語言,所以它是被設計成寫高可靠和穩健軟體的。Java消除了某些程式設計錯誤,使得用它寫可靠軟體相當容易。

Java是一個強型別語言,它允許擴充套件編譯時檢查潛在型別不匹配問題的功能。Java要求顯式的方法宣告,它不支援C風格的隱式宣告。這些嚴格的要求保證編譯程式能捕捉呼叫錯誤,這就導致更可靠的程式。

可靠性方面最重要的增強之一是Java的儲存模型。Java不支援指標,它消除重寫儲存和訛誤資料的可能性。類似地,Java自動的“無用單元收集”預防儲存漏洩和其它有關動態儲存分配和解除分配的有害錯誤。Java解釋程式也執行許多執行時的檢查,諸如驗證所有陣列和串訪問是否在界限之內。

異常處理是Java中使得程式更穩健的另一個特徵。異常是某種類似於錯誤的異常條件出現的訊號。使用try/catch/finally語句,程式設計師可以找到出錯的處理程式碼,這就簡化了出錯處理和恢復的任務。

6.安全性

Java的儲存分配模型是它防禦惡意程式碼的主要方法之一。Java沒有指標,所以程式設計師不能得到隱蔽起來的內幕和偽造指標去指向儲存器。更重要的是,Java編譯程式不處理儲存安排決策,所以程式設計師不能通過檢視宣告去猜測類的實際儲存安排。編譯的Java程式碼中的儲存引用在執行時由Java解釋程式決定實際儲存地址。

Java執行系統使用位元組碼驗證過程來保證裝載到網路上的程式碼不違背任何Java語言限制。這個安全機制部分包括類如何從網上裝載。例如,裝載的類是放在分開的名字空間而不是區域性類,預防惡意的小應用程式用它自己的版本來代替標準Java類。

  7.可移植性

Java使得語言宣告不依賴於實現的方面。例如,Java顯式說明每個基本資料型別的大小和它的運算行為(這些資料型別由Java語法描述)。

Java環境本身對新的硬體平臺和作業系統是可移植的。Java編譯程式也用Java編寫,而Java執行系統用ANSIC語言編寫。

  8.高效能

Java是一種先編譯後解釋的語言,所以它不如全編譯性語言快。但是有些情況下效能是很要緊的,為了支援這些情況,Java設計者製作了“及時”編譯程式,它能在執行時把Java位元組碼翻譯成特定CPU(中央處理器)的機器程式碼,也就是實現全編譯了。

Java位元組碼格式設計時考慮到這些“及時”編譯程式的需要,所以生成機器程式碼的過程相當簡單,它能產生相當好的程式碼。

  9.多線索性

Java是多線索語言,它提供支援多線索的執行(也稱為輕便過程),能處理不同任務,使具有線索的程式設計很容易。Java的lang包提供一個Thread類,它支援開始線索、執行線索、停止線索和檢查線索狀態的方法。

Java的線索支援也包括一組同步原語。這些原語是基於監督程式和條件變數風範,由e開發的廣泛使用的同步化方案。用關鍵詞synchronized,程式設計師可以說明某些方法在一個類中不能併發地執行。這些方法在監督程式控制之下,確保變數維持在一個一致的狀態。

  10.動態性

Java語言設計成適應於變化的環境,它是一個動態的語言。例如,Java中的類是根據需要載入的,甚至有些是通過網路獲取的。