若是對於開發語言的排行榜有所關注的話,那麼會發現很長一段時間以來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語言編寫的程序是跨平臺的,從PC機到手持電腦都有Java開發的程序和遊戲,Java程序能夠在任何計算機、操做系統和支持Java的硬件設備上運行。數據庫
20世紀90年代,硬件領域出現了單片式計算機系統,這種價格低廉的系統一出現就當即引發了自動控制領域人員的注意,由於使用它能夠大幅度提高消費類電子產品(如電視機頂盒、麪包烤箱、移動電話等)的智能化程度。Sun公司爲了搶佔市場先機,在1991年成立了一個稱爲Green的項目小組,帕特里克、詹姆斯·高斯林、麥克·舍林丹和其餘幾個工程師一塊兒組成的工做小組在加利福尼亞州門洛帕克市沙丘路的一個小工做室裏面研究開發新技術,專攻計算機在家電產品上的嵌入式應用。編程
因爲C++所具備的優點,該項目組的研究人員首先考慮採用C++來編寫程序。但對於硬件資源極其匱乏的單片式系統來講,C++程序過於複雜和龐大。另外因爲消費電子產品所採用的嵌入式處理器芯片的種類繁雜,如何讓編寫的程序跨平臺運行也是個難題。爲了解決困難,他們首先着眼於語言的開發,假設了一種結構簡單、符合嵌入式應用須要的硬件平臺體系結構併爲其制定了相應的規範,其中就定義了這種硬件平臺的二進制機器碼指令系統(即後來成爲「字節碼」的指令系統),以待語言開發成功後,能有半導體芯片生產商開發和生產這種硬件平臺(這其實也是Java跨平臺設計的由來)。對於新語言的設計,Sun公司研發人員並無開發一種全新的語言,而是根據嵌入式軟件的要求,對C++進行了改造,去除了留在C++的一些不太實用及影響安全的成分,並結合嵌入式系統的實時性要求,開發了一種稱爲Oak的面嚮對象語言。(OaK就是Java語言的前身),這個名字源於James Gosling 辦公室窗外的一顆橡樹(OaK)。小程序
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程序的編譯和運行過程
藉助Java,程序開發人員能夠自由地使用現有的硬件和軟件系統平臺。這是由於Java是獨立於平臺的,它還能夠應用於計算機以外的領域,Java程序能夠在便攜式計算機、電視、電話、手機和其餘的大量電子設備上運行。Java的用途不勝枚舉,他擁有無可比擬的能力,其節省的時間和費用也十分可觀。Java的應用領域主要有如下方面:
Java無處不在,它已經擁有幾百萬個用戶,其發展速度要快於在它以前的任何一種計算機語言。Java可以給企業和最終用戶帶來數不盡的好處。Oracle公司董事長和首席執行官Larru Ellison說過:「Java正在進入企業、家庭、和學校。它正在像Internet自己同樣成爲廣泛存在的技術。」
若是仔細觀察,就會發現Java就在咱們身邊,如咱們常用的Java開發工具Eclipse、NetBeans、JBuilder等,另外還有RSSOwl、Limewire、Azureus、CyberDuck、OpenOffice等優秀軟件都是使用Java編寫的。此外,各手機廠商都爲本身的產品提供了Java技術的支持,各類手機上的Java程序和遊戲已經數不勝數。
自從Sun公司推出Java以來,就力圖使之無所不能。Java發展至今,按應用範圍分爲三個版本,即Java SE、Java EE、Java ME,也就是Java ONE(Open Net Environment)體系。本節將分別介紹這3個Java版本。
Java SE是Java的標準版,主要用於桌面應用程序的開發,同時也是Java的基礎,它包含Java語言基礎、JDBC(Java數據庫鏈接性操做)、I/O(輸入輸出)、網絡通訊、多線程等技術。Java SE的結構如圖1.2所示。
圖1.2 Java SE的結構
Java EE是Java的企業版,主要用於開發企業級分佈式的網絡程序,如電子商務網站和ERP(企業資源規劃)系統,其核心爲EJB(企業Java組件模型)。Java EE的結構如圖1.3所示。
圖1.3 Java EE的結構
Java ME主要應用於嵌入式系統開發,如掌上電腦、手機等移動通訊電子設備,如今大部分手機廠商所生產的手機都支持Java技術。Java ME的結構圖如圖1.4所示。
圖 1.4 Java ME的結構
如何學好Java語言,是全部初學者須要共同面對的問題,其實每種語言的學習方法都大同小異,初學者須要注意的主要有如下幾點:
API的全稱是 Application Programming Interface,即應用程序編程接口。Java API文檔是Java程序開發不可缺乏的編程詞典,並記錄了Java語言中海量的API,主要包括類的繼承結構、成員變量和成員方法、構造方法、靜態成員的詳細說明和描述信息。能夠在Java網站http://java.sun.com中找到最新版本的JDK文檔(即API文檔),Java API文檔的頁面效果如圖1.5所示。
圖1.5 Java API文檔頁面
Java 由四方面組成:
●Java編程語言,即語法。
●Java文件格式,即各類文件夾、文件的後綴。
●Java虛擬機(JVM),即處理*.class文件的解釋器。
●Java應用程序接口(Java API)。
Java語言的做者們編寫了具備普遍影響的Java白皮書,裏面詳盡地介紹了他們的設計目標以及實現成果,還用簡短的篇幅介紹了Java語言的特性。下面將對這些特性進行扼要的介紹。
Java語言的語法簡單明瞭,容易掌握,而且是純面向對象的語言。Java語言的簡單性主要體如今如下幾個方面:
面向對象是Java語言的基礎,也是Java語言的重要特性,它自己就是一種純面向對象的程序設計語言。Java提倡萬物皆對象,語法中不能在類外面定義單獨的數據和函數,也就是說,Java語言最外部的數據類型是對象,全部的元素都要經過類和對象來訪問。
面向對象也能夠對比與面向過程來理解:面向對象是相對於面向過程而言的,面向過程着重於功能的實現過程,而面向對象則是將相同功能的實現封裝進一個對象,而後經過調用這個對象來側重於功能,着重於可以實現功能的對象。
Java的分佈性包括操做分佈(服務分佈式)和數據分佈(數據分佈式),其中操做分佈是指在多個不一樣的主機上佈置相關操做,而數據分佈是將數據分別存放在多個不一樣的主機上,這些主機是網絡中的不一樣成員。Java能夠憑藉URL(統一資源定位符)對象訪問網絡對象,訪問方式與訪問本地系統相同。
Java程序具備與體系結構無關的特性,能夠方便的移植到網絡上的不一樣計算機中。同時,Java的類庫中也實現了針對不一樣平臺的接口,使這些類庫能夠移植。舉例來講C++的數據類型中int類型並非固定的長度大小,而是根據環境或編譯器指定的,而在Java中數據長度是固定的,這就使得Java在移植時不用考慮數據是否會存在溢出的狀況,再好比,在針對本地方法調用時Java作了很好的處理,使得無論在Windows或Unix中都可以很好的運行。
運行Java程序須要解釋器。任何移植了Java解釋器的計算機或其餘設備均可以用Java字節碼進行解釋執行。字節碼獨立於平臺,它自己攜帶了許多編譯時的信息,使得鏈接過程更加簡單,開發過程更加迅速,更具探索性。
Java語言刪除了相似C語言中的指針和內存釋放等語法,有效的避免了非法操做內存。Java程序代碼要通過代碼校驗、指針校驗等不少測試步驟纔可以運行,因此未通過容許的Java程序不可能出現損害系統平臺的行爲,並且使用Java能夠編寫防病毒和防修改的系統。
Java程序的設計目標之一,是編寫多方面的、可靠的應用程序,Java將檢查程序在編譯和運行時的錯誤,並消除錯誤。類型檢查能幫助用戶檢查出不少在開發早期出現的錯誤。集成開發工具(如Eclipse、NetBeans)的出現也使編譯和運行Java程序更加容易。
多線程機制可以使應用程序在同一時間並行執行多項任務,並且相應的同步機制能夠保證不一樣線程可以正確地共享數據。使用多線程,能夠帶來更好的交互能力和實時行爲。Java提供了很好的多線程機制。
Java編譯後的字節碼是在解釋器中運行的,因此它的速度較多數交互式【交互的意思就是你和程序對話.例如你點擊一個按鈕,而後程序彈出一個窗口"您真的要退出嗎?"這樣你就能夠選擇了.這個就叫交互.目前大部分的程序都是交互程序。】應用程序提升了不少。另外,字節碼能夠在程序運行時被翻譯成特定平臺的機器指令,從而進一步提升運行速度。
Java在不少方面比C和C++更能適應發展的環境,能夠動態調整庫中方法和增長變量,而客戶端卻不須要任何更改。在Java中進行動態調整是很是簡單和直接的。
Java編寫的程序通過編譯生成字節碼。這個字節碼不只能夠很容易地在任何機器上執行,並且還能夠動態地翻譯成本地機器代碼。這是Java體系結構中立的體現,但這仍是依賴於JVM實現的。
得益於Java的跨平臺和豐富的工具包支持,Java在現在的互聯網時代已經成爲一門重要的開發語言了;雖然如今計算機技術日益進步,可是選擇Java仍不失爲明智自居。
每次談到Java的跨平臺,都有意猶未盡的意思,這也是爲何這章,我花了很大的篇幅在Java的歷史上面的緣由,爲此,咱們單獨做爲一個問題,在另外一篇文章中進行了探討,想要了解的能夠參見深究Java跨平臺。