Notes 20180506 : Java程式設計語言概述

來源:互聯網
上載者:User

標籤:java7   枚舉類   正式版   cli   standard   ica   推出   blank   老師   

2.Java程式設計語言概述  

  如果對於開發語言的熱門排行榜有所關注的話,那麼會發現很長一段時間以來Java都是位居榜首的進階開發語言,作為一個Java開發人員,為此感到驕傲的同時也深感憂慮,驕傲的是自己接觸的開發語言是如此的強大,憂慮的是萬一哪一天Java市場佔有率不再,那我們何去何從呢(Oracle收購Sun後這種憂慮日深,Oracle起訴Google,更是對於開源的Java開源的一種憂慮)?不過這都是小程式員的我來說是杞人憂天了,在Java沒落之前我們應該先將Java搞清楚才對,然後由此深入瞭解電腦的世界,對於Java程式設計語言,我們主要通過幾方面來學習:語言的曆史,語言的基本構成,物件導向,字串與數字,常見的工具類,集合,IO,多線程等。

  今天的學習主要是介紹Java程式設計語言的概述,內容講解Java是怎麼產生的,有哪些優點。下面開始今天的學習;

前言

  Java是一門物件導向程式設計語言,是源於C++語言,它不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態物件導向程式設計語言的代表,極好地實現了物件導向理論,允許程式員以優雅的思維方式進行複雜的編程 。

  Java具有簡單性、物件導向、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點。Java可以編寫傳統型應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等 。

  上面是百度百科對於Java的解釋,有過開發經驗的人是很好理解的,但是對於一些初涉開發的程式原來說,未必能夠理解每個詞語背後的意思,下面我們就來從Java的產生說起;2.1 Java簡介

  Java是一種進階的物件導向的程式設計語言。使用Java語言編寫的程式是跨平台的,從PC機到手持電腦都有Java開發的程式和遊戲,Java程式可以在任何電腦、作業系統和支援Java的硬體裝置上運行。

2.1.1 Java語言的曆史

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

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

  由於在開發Oak語言時,尚且不存在運行位元組碼的硬體平台,所以為了在開發時可以對這種語言進行實驗研究,他們 就在已有的硬體和軟體平台基礎上,按照自己所指定的規範,用軟體建設了一個運行平台(這其實就是JVM的實質概念,它只是一個對軟體啟動並執行硬體環境的虛擬實現),整個系統除了比C++更加簡單之外,沒有什麼大的區別。1992年的夏天,當Oak語言開發成功後,研究者們向硬體生產商進行示範了Green作業系統、Oak的程式設計語言、類庫和其硬體,以說服他們使用Oak語言生產硬體晶片,但是,硬體生產商並未對此產生極大的熱情。因為他們認為,在所有人對Oak語言還一無所知的情況下,就生產硬體產品的風險實在太大了,所以Oak語言也就因為缺乏硬體的支援而無法進入市場,從而被擱置了下來。  1994年6、7月間,在經曆了一場曆時三天的討論之後,團隊決定再一次改變了努力的目標,這次他們決定將該技術應用於全球資訊網。他們認為隨著Mosaic瀏覽器的到來,網際網路正在向同樣的高度互動的遠景演變,而這一遠景正是他們在有線電視網中看到的。作為原型,帕特裡克·諾頓寫了一個小型全球資訊網瀏覽器WebRunner。  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、Netscap e和微軟等各大公司都紛紛停止了自己的相關開發項目,競相購買了Java使用許可證,並為自己的產品開發了相應的Java平台。  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的應用開始普及。(我們以往在書籍或其它子類中所見的J2EE等的2就來自於Java1.2版本)  1999年4月27日,HotSpot虛擬機器發布。 HotSpot虛擬機器發布時是作為JDK 1.2的附加程式提供的,後來它成為了JDK 1.3及之後所有版本的Sun JDK的預設虛擬機器。  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/O API、Regex、日誌與斷言。 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。  2006年11月13日,Java技術的發明者Sun公司宣布,將Java技術作為免費軟體對外發布。Sun公司正式發布的有關Java平台標準版的第一批原始碼,以及Java迷你版的可執行原始碼。從2007年3月起,全世界所有的開發人員均可對Java原始碼進行修改 。  2009年,甲骨文公司宣布收購Sun 。2010年,Java程式設計語言的共同創始人之一詹姆斯·高斯林從Oracle公司辭職。2011年,甲骨文公司舉行了全球性的活動,以慶祝Java7的推出,隨後Java7正式發布。2014年,甲骨文公司發布了Java8正式版。2.1.2 什麼是Java語言

  Java是於1995年由Sun公司推出的一種極富創造力的物件導向的程式設計語言,它是由有Java之父之稱的Sun研究院院士詹姆斯.戈士林博士親手設計而成的,並完成了Java技術的原始編譯器和虛擬機器。Java的最初名字是OAK,在1995年被重新命名為Java,正式發布。

  Java是一種通過解釋方式來執行的語言,其文法規則和C++類似。同時,Java也是一種跨平台的程式設計語言。用Java語言編寫的程式,可以運行在任何平台和裝置上,如跨越IBM個人電腦、MAC蘋果電腦、各種微處理器硬體平台,以及Windows、UNIX、OS/2、MAC OS 等系統平台,真正實現“一次編寫,到處運行”。Java非常適於商業網路和Internet環境,並且已成為Internet中最具影響力、最受歡迎的程式設計語言之一。

  與目前常用的C++相比,Java語言簡潔的多,而且提高了可靠性,除去了最大的程式錯誤根源,此外他還有較高的安全性,可以說它是有史以來最為卓越的程式設計語言。

  Java語言編寫的程式既是編譯型的,又是解釋型的。序代碼經過編譯之後轉換為一種稱為Java位元組碼的中繼語言,Java虛擬機器(JVM)將對位元組碼進行解釋和運行。編譯只進行一次,而解釋在每次運行程式時都會進行。編譯後的位元組碼採用一種針對JVM最佳化過的機器碼形式儲存,虛擬機器將位元組碼解釋為機器碼,然後在電腦上面運行。Java語言程式碼的編譯和運行過程1.1所示。

 

                              圖1.1   Java程式的編譯和運行過程

2.1.3 Java的應用領域

  藉助Java,程式開發人員可以自由地使用現有的硬體和軟體系統平台。這是因為Java是獨立於平台的,它還可以應用於電腦之外的領域,Java程式可以在攜帶型電腦、電視、電話、手機和其他的大量電子裝置上運行。Java的用途不勝枚舉,他擁有無可比擬的能力,其節省的時間和費用也十分可觀。Java的應用領域主要有以下方面:

  • 案頭應用系統開發。
  • 嵌入式系統開發。
  • 電子商務應用。
  • 企業級應用開發。
  • 互動式系統開發。
  • 多媒體系統開發。
  • 分布式系統開發。
  • Web應用系統開發。

  Java無處不在,它已經擁有幾百萬個使用者,其發展速度要快於在它之前的任何一種電腦語言。Java能夠給企業和終端使用者帶來數不盡的好處。Oracle公司董事長和首席執行官Larru Ellison說過:“Java正在進入企業、家庭、和學校。它正在像Internet本身一樣成為普遍存在的技術。”

  如果仔細觀察,就會發現Java就在我們身邊,如我們經常使用的Java開發工具Eclipse、NetBeans、JBuilder等,另外還有RSSOwl、Limewire、Azureus、CyberDuck、OpenOffice等優秀軟體都是使用Java編寫的。此外,各手機廠商都為自己的產品提供了Java技術的支援,各種手機上的Java程式和遊戲已經數不勝數。

2.1.4 Java的版本

  自從Sun公司推出Java以來,就力圖使之無所不能。Java發展至今,按應用範圍分為三個版本,即Java SE、Java EE、Java ME,也就是Java ONE(Open Net Environment)體系。本節將分別介紹這3個Java版本。

1.Java SE

  Java SE是Java的標準版,主要用於傳統型應用程式的開發,同時也是Java的基礎,它包含Java語言基礎、JDBC(Java資料庫連接性操作)、I/O(輸入輸出)、網路通訊、多線程等技術。Java SE的結構1.2所示。

 

圖1.2   Java SE的結構

2.Java EE

  Java EE是Java的企業版,主要用於開發企業級分布式的網路程式,如電子商務網站和ERP(企業資源規劃)系統,其核心為EJB(企業Java組件模型)。Java EE的結構1.3所示。

       

圖1.3   Java EE的結構

3.Java ME

  Java ME主要應用於嵌入式系統開發,如掌上型電腦、手機等移動通訊電子裝置,現在大部分手機廠商所生產的手機都支援Java技術。Java ME的結構圖1.4所示。

圖 1.4   Java ME的結構

2.1.5 怎麼學好Java

  如何學好Java語言,是所有初學者需要共同面對的問題,其實每種語言的學習方法都大同小異,初學者需要注意的主要有以下幾點:

  • 明確自己的學習目標和大的方向,選擇並鎖定一門語言,按照自己的學習方向努力學習,認真研究。
  • 初學者不要看太多的書,先找本相對基礎的書系統的學習。很多程式開發人員工作了很久也只是熟悉部分基礎而已,並沒有系統地學習Java語言。
  • 瞭解設計模式。開發程式必須編寫程式碼,這些代碼必須具有高度的可讀性,這樣編寫的程式才能調試、維護和升級的價值。學習一些設計模式,能夠更好的把握項目的整體結構。
  • 不要死記文法。在剛接觸一門語言,特別是Java語言時,掌握好基本文法,並大概瞭解一些功能即可。藉助開發工具(如Eclipse或NetBeans)的代碼協助工具功能,完成代碼的錄入,這樣可以快速進入學習狀態。
  • 多實踐,多思考,多請教。僅讀懂書本中的內容和技術是不行的,必須動手編寫程式碼,並運行程式、分析運行結構,從而對學習內容有個整體的認識和肯定。用自己的方式思考問題、編寫代碼來提高編程思想。平時多請教老師或經理,和其他人多溝通技術問題,提高自己的技術和見識。
  • 不要急躁。遇到技術問題,必須冷靜對待,不要讓自己思維混亂,保持清醒的頭腦才能分析和解決各種問題。可以嘗試用歌和散步等方式來放鬆自己。
  • 遇到問題,首先嘗試自己解決,這樣可以提高自己的程式調試能力,並對常見問題有一定的瞭解,明白出錯的原因,甚至舉一反三,解決其他關聯的錯誤問題。
  • 多查閱資料。可以經常到Internet上搜尋相關資料或解決問題的方法,網路上已經摘錄了很多人遇到的問題和不同的解決方案,分析這些解決問題的方法,找到最適合自己的方法。
  • 多閱讀別人的原始碼。不但要看懂別人的程式碼,還要分析編程者的編程思想和設計模式,並融為己用。
2.1.6 Java API文檔

  API的全稱是 Application Programming Interface,即API。Java API文檔是Java程式開發不可缺少的編程詞典,並記錄了Java語言中海量的API,主要包括類的繼承結構、成員變數和成員方法、構造方法、靜態成員的詳細說明和描述資訊。可以在Java網站http://java.sun.com中找到最新版本的JDK文檔(即API文檔),Java API文檔的頁面效果1.5所示。

圖1.5   Java API文檔頁面

2.1.7 Java語言群組成

Java 由四方面組成:

●Java程式設計語言,即文法。

●Java檔案格式,即各種檔案夾、檔案的尾碼。

●Java虛擬機器(JVM),即處理*.class檔案的解譯器。

●Java應用程式介面(Java API)。

2.2 Java語言的特性

  Java語言的作者們編寫了具有廣泛影響的Java白皮書,裡面詳盡地介紹了他們的設計目標以及實現成果,還用簡短的篇幅介紹了Java語言的特性。下面將對這些特性進行扼要的介紹。

2.2.0 簡單

  Java語言的文法簡單明了,容易掌握,並且是純物件導向的語言。Java語言的簡單性主要體現在以下幾個方面:

  • 文法規則和C++類似。從某種意義上講,Java語言是由C和C++語言演變而來的,所以C程式設計人員可以很容易地掌握Java語言的文法。
  • Java語言對C++進行了簡化和提高。例如,Java使用介面取代了多重繼承,並取消了指標,因為指標和多重繼承通常使程式變得複雜。Java語言還通過實現垃圾自動收集,大大簡化了程式設計人員的資源釋放管理工作。
  • Java提供了豐富的類庫和API文檔以及第三方開發包,另外還有大量的基於Java的開源項目,JDK(Java開發人員工具箱)已經開放原始碼,讀者可以通過分析項目的原始碼,從而提高自己的編程水平。
2.2.1 物件導向

  物件導向是Java語言的基礎,也是Java語言的重要特性,它本身就是一種純物件導向的程式設計語言。Java提倡萬物皆對象,文法中不能在類外面定義單獨的資料和函數,也就是說,Java語言最外部的資料類型是對象,所有的元素都要通過類和對象來訪問。

  物件導向也可以對比與面向過程來理解:物件導向是相對於面向過程而言的,面向過程著重於功能的實現過程,而物件導向則是將相同功能的實現封裝進一個對象,然後通過調用這個對象來側重於功能,著重於能夠實現功能的對象。

2.2.2 分布性

  Java的分布性包括操作分布(服務分布式)和資料分布(資料分布式),其中操作分布是指在多個不同的主機上布置相關操作,而資料分布是將資料分別存放在多個不同的主機上,這些主機是網路中的不同成員。Java可以憑藉URL(統一資源定位器)對象訪問網路對象,訪問方式與訪問本地系統相同。

2.2.3 可移植性

  Java程式具有與體繫結構無關的特性,可以方便的移植到網路上的不同電腦中。同時,Java的類庫中也實現了針對不同平台的介面,使這些類庫可以移植。舉例來說C++的資料類型中int類型並不是固定的長度大小,而是根據環境或編譯器指定的,而在Java中資料長度是固定的,這就使得Java在移植時不用考慮資料是否會存在溢出的情況,再比如,在針對本地方法調用時Java做了很好的處理,使得不管在Windows或Unix中都能夠很好的運行。

2.2.4 解釋型

  運行Java程式需要解譯器。任何移植了Java解譯器的電腦或其他裝置都可以用Java位元組碼進行解釋執行。位元組碼獨立於平台,它本身攜帶了許多編譯時間的資訊,使得串連過程更加簡單,開發過程更加迅速,更具探索性。

2.2.5 安全性

  Java語言刪除了類似C語言中的指標和記憶體釋放等文法,有效避免了非法操作記憶體。Java程式碼要經過代碼校正、指標校正等很多測試步驟才能夠運行,所以未經過允許的Java程式不可能出現損害系統平台的行為,而且使用Java可以編寫防病毒和防修改的系統。

2.2.6 健壯性

  Java程式的設計目標之一,是編寫多方面的、可靠的應用程式,Java將檢查程式在編譯和運行時的錯誤,並消除錯誤。類型檢查能協助使用者檢查出很多在開發早期出現的錯誤。整合開發工具(如Eclipse、NetBeans)的出現也使編譯和運行Java程式更加容易。

2.2.7 多線程

  多線程機制能夠使應用程式在同一時間並存執行多項任務,而且相應的同步機制可以保證不同線程能夠正確地共用資料。使用多線程,可以帶來更好的互動能力和即時行為。Java提供了很好的多線程機制。

2.2.8 高效能

  Java編譯後的位元組碼是在解譯器中啟動並執行,所以它的速度較多數互動式【互動的意思就是你和程式對話.例如你點擊一個按鈕,然後程式彈出一個視窗"您真的要退出嗎?"這樣你就可以選擇了.這個就叫互動.目前大部分的程式都是互動程式。】應用程式提高了很多。另外,位元組碼可以在程式運行時被翻譯成特定平台的機器指令,從而進一步提高運行速度。

2.2.9 動態

  Java在很多方面比C和C++更能適應發展的環境,可以動態調整庫中方法和增加變數,而用戶端卻不需要任何更改。在Java中進行動態調整是非常簡單和直接的。

2.2.10  體繫結構中立

  Java編寫的程式經過編譯產生位元組碼。這個位元組碼不僅可以很容易地在任何機器上執行,而且還可以動態地翻譯成本地機器代碼。這是Java體繫結構中立的體現,但這還是依賴於JVM實現的。

總結

  得益於Java的跨平台和豐富的工具包支援,Java在如今的互連網時代已經成為一門重要的開發語言了;雖然現在電腦技術日益進步,但是選擇Java仍不失為明智自居。

深究:Java跨平台

  每次談到Java的跨平台,都有意猶未盡的意思,這也是為什麼這章,我花了很大的篇幅在Java的曆史上面的原因,為此,我們單獨作為一個問題,在另一篇文章中進行了探討,想要瞭解的可以參見深究Java跨平台。

Notes 20180506 : Java程式設計語言概述

聯繫我們

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