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

2.Java程序設計語言概述  

  若是對於開發語言的排行榜有所關注的話,那麼會發現很長一段時間以來Java都是位居榜首的高級開發語言,做爲一個Java開發者,爲此感到驕傲的同時也深感憂慮,驕傲的是本身接觸的開發語言是如此的強大,憂慮的是萬一哪一天Java市場佔有率再也不,那咱們何去何從呢(Oracle收購Sun後這種憂慮日深,Oracle起訴谷歌,更是對於開源的Java開源的一種憂慮)?不過這都是小程序員的我來講是杞人憂天了,在Java沒落以前咱們應該先將Java搞清楚纔對,而後由此深刻了解計算機的世界,對於Java程序設計語言,咱們主要經過幾方面來學習:語言的歷史,語言的基本構成,面向對象,字符串與數字,常見的工具類,集合,IO,多線程等。html

  今天的學習主要是介紹Java程序設計語言的概述,內容講解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年六、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、Netscape和微軟等各大公司都紛紛中止了本身的相關開發項目,競相購買了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.三、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、正則表達式、日誌與斷言。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/二、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,即應用程序編程接口。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跨平臺。

相關文章
相關標籤/搜索