學習Java有一段時間了,可是一直缺乏一個系統的思想,如今從新經過書籍中、網上的文章,視頻等資料,整理與回顧Java的知識點。java
言歸正傳,讓咱們先從瞭解Java語言開始。程序員
Java是由Sun Microsystems公司推出的Java面向對象程序設計語言(如下簡稱Java語言)和Java平臺的總稱。由James Gosling和同事們共同研發,並在1995年正式推出。Java最初被稱爲Oak,是1991年爲消費類電子產品的嵌入式芯片而設計的。1995年改名爲Java,並從新設計用於開發Internet應用程序。用Java實現的HotJava瀏覽器(支持Java applet)顯示了Java的魅力:跨平臺、動態Web、Internet計算。今後,Java被普遍接受並推進了Web的迅速發展,經常使用的瀏覽器均支持Javaapplet。另外一方面,Java技術也不斷更新。Java自面世後就很是流行,發展迅速,對C++語言造成有力衝擊。在全球雲計算和移動互聯網的產業環境下,Java更具有了顯著優點和廣闊前景。[引用自百度百科]spring
一、簡單。編程
Java語言的語法與C語言和C++語言很接近,使得大多數程序員很容易學習和使用Java。另外一方面,Java丟棄了C++中不多使用的、很難理解的、使人迷惑的那些特性。去掉了C和C++中許多複雜功能,如指針、操做符重載、多繼承、自動的強制類型轉換,沒有goto語句,沒有struct和union等。特別地,Java語言不使用指針,並提供了自動的廢料收集,使得程序員沒必要爲內存管理而擔心。瀏覽器
二、面向對象。安全
面向對象能夠說是Java最基本的特性。Java語言的設計徹底是面向對象的,它不支持相似C語言那樣的面向過程的程序設計技術。全部的Java程序和applet均是對象,Java支持靜態和動態風格的代碼繼承及重用。它比C++更完全,純度更高。Java語言提供類、接口和繼承等原語,爲了簡單起見,只支持類之間的單繼承,但支持接口之間的多繼承,並支持類與接口之間的實現機制(關鍵字爲implements)。網絡
三、跨平臺性。多線程
與平臺無關是 Java 語言最大的優點。其它語言編寫的程序面臨的一個主要問題是 操做系統的變化,處理器升級以及核心系統資源的變化,均可能致使程序出現錯誤或沒法運行。Java的虛擬機成功地解決了這個問題,Java編寫的程序能夠在任何安裝了 Java虛擬機 JVM 的計算機上正確的運行,Sun公司實現了本身的目標 「一次寫成,到處運行」app
具體表現爲:框架
四、健壯的。
Java的強類型機制、異常處理、廢料的自動收集等是Java程序健壯性的重要保證。對指針的丟棄是Java的明智選擇。Java的安全檢查機制使得Java更具健壯性。
五、安全性。
做爲網絡語言,安全是很是重要的。Java的安全性可從兩個方面獲得保證。一方面,在Java語言裏,像指針和釋放內存等C++功能被刪除,避免了非法內存操做。另外一方面,當Java用來建立瀏覽器時,語言功能和一類瀏覽器自己提供的功能結合起來,使它更安全。Java語言在你的機器上執行前,要通過不少次的測試。它通過代碼校驗,檢查代碼段的格式,檢測指針操做,對象操做是否過度以及試圖改變一個對象的類型。另外,Java擁有多個層次的互鎖保護措施,能有效地防止病毒的入侵和破壞行爲的發生。
六、多線程。
在Java語言中,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來建立。一般有兩種方法來建立線程:其一,使用型構爲Thread(Runnable)的構造子將一個實現了Runnable接口的對象包裝成一個線程,其二,從Thread類派生出子類並重寫run方法,使用該子類建立的對象即爲線程。值得注意的是Thread類已經實現了Runnable接口,所以,任何一個線程均有它的run方法,而run方法中包含了線程所要運行的代碼。線程的活動由一組方法來控制。Java語言支持多個線程的同時執行,並提供多線程之間的同步機制(關鍵字爲synchronized)。
七、動態的。
Java語言的設計目標之一是適應於動態變化的環境。Java程序須要的類可以動態地被載入到運行環境,也能夠經過網絡來載入所須要的類。這也有利於軟件的升級。另外,Java中的類有一個運行時刻的表示,能進行運行時刻的類型檢查。
固然,全部的事情都不多是完美的,有優勢必然會有缺點。
一、效率:由於要先通過編譯和垃圾回收機制等,因此速度比較慢!不適合大型的程序,網絡遊戲等的編程!
二、複雜性,正由於它的功能強大,所以也增長了其複雜性,像當今流行的框架有不少,什麼struts,spring,jQuery等等,無疑增長了java的複雜性。
計算機高級語言按照程序執行方式能夠分爲編譯型和解釋型。
編譯型語言是指在程序執行以前,首先會有一個單獨的編譯過程,針對特定的平臺(操做系統),將高級語言翻譯成機器語言,之後執行這個程序的時候,即可以直接運行,這樣編譯後能夠脫離開發環境獨立運行,效率也能夠高一些。但也有一個缺點,那就是編譯語言被編譯成特定平臺上的機器碼,一般沒法直接轉移到其餘平臺運行,若是有需求,須要從新將源代碼轉移到特定平臺,針對部分平臺進行修改以後,從新編譯。C/C++ 等都是編譯型語言。
解釋型語言是指在運行時纔將程序翻譯成機器語言,跨平臺性較好,但不足之處就是每次執行都須要進行一次編譯。至關於把編譯型語言中的編譯和解釋的過程混合到一塊兒同時完成。Ruby,Python等都是解釋型語言。
Java語言比較特殊,Java語言編寫的程序也須要通過編譯步驟,只不過它並非編譯成特定語言的機器碼,而是生產與機器無關的字節碼(*.class文件)。這種字節碼不能直接運行,須要通過Java解釋器(JVM Java虛擬機)來運行。所以,Java語言是先編譯,後解釋,將這兩個步驟分開。
上面介紹到,Java程序將字節碼運行須要JVM虛擬機,下面咱們來認識一下它。
Java虛擬機,即JVM(Java Virtual Machine)。當Java編譯器編譯Java代碼的時候,生成的是面向JVM的字節碼,再由JVM面向各操做系統,所以使用Java語言編寫的程序,其實是運行在JVM之上,而不是運行在操做系統上。
它有一個解釋器組件,能夠實現Java字節碼和計算機操做系統之間的通訊。
JVM相似於一個抽象的計算機,和實際的計算機同樣,它具備指令集並使用不一樣的存儲區域。複雜執行指令,管理數據、內存和寄存器。
JDK是JAVA開發工具包的簡稱,是Sun提供的一套用於開發Java程序的開發包。它提供了編譯,運行Java程序所需的各類工具和資源。包含Java編譯器,Java運行時環境,經常使用Java類庫等。
Jre是運行Java程序的必備條件,Jre包含JVM,JVM是運行Java程序的核心虛擬機,而運行Java程序不只須要核心虛擬機,還須要類加載器,字節碼校驗器以及大量基礎類庫,而JDK還包含了開發工具,所以若是隻須要運行Java程序,只須要安裝Jre便可。
Sun把Java分爲Java SE、Java EE、Java ME。