學(xué)習(xí)java有一段時(shí)間了,但是一直缺少一個(gè)系統(tǒng)的思想,現(xiàn)在重新通過書籍中、網(wǎng)上的文章,視頻等資料,整理與回顧Java的知識(shí)點(diǎn)。
言歸正傳,讓我們先從了解Java語言開始。
Java是由Sun Microsystems公司推出的Java面向?qū)ο蟪绦蛟O(shè)計(jì)語言(以下簡(jiǎn)稱Java語言)和Java平臺(tái)的總稱。由James Gosling和同事們共同研發(fā),并在1995年正式推出。Java最初被稱為Oak,是1991年為消費(fèi)類電子產(chǎn)品的嵌入式芯片而設(shè)計(jì)的。1995年更名為Java,并重新設(shè)計(jì)用于開發(fā)Internet應(yīng)用程序。用Java實(shí)現(xiàn)的HotJava瀏覽器(支持Java applet)顯示了Java的魅力:跨平臺(tái)、動(dòng)態(tài)Web、Internet計(jì)算。從此,Java被廣泛接受并推動(dòng)了Web的迅速發(fā)展,常用的瀏覽器均支持Javaapplet。另一方面,Java技術(shù)也不斷更新。Java自面世后就非常流行,發(fā)展迅速,對(duì)C++語言形成有力沖擊。在全球云計(jì)算和移動(dòng)互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢(shì)和廣闊前景。[引用自百度百科]
1、簡(jiǎn)單。
Java語言的語法與C語言和C++語言很接近,使得大多數(shù)程序員很容易學(xué)習(xí)和使用Java。另一方面,Java丟棄了C++中很少使用的、很難理解的、令人迷惑的那些特性。去掉了C和C++中許多復(fù)雜功能,如指針、操作符重載、多繼承、自動(dòng)的強(qiáng)制類型轉(zhuǎn)換,沒有g(shù)oto語句,沒有struct和union等。特別地,Java語言不使用指針,并提供了自動(dòng)的廢料收集,使得程序員不必為內(nèi)存管理而擔(dān)憂。
2、面向?qū)ο蟆?/p>
面向?qū)ο罂梢哉f是Java最基本的特性。Java語言的設(shè)計(jì)完全是面向?qū)ο蟮模恢С诸愃艭語言那樣的面向過程的程序設(shè)計(jì)技術(shù)。所有的Java程序和applet均是對(duì)象,Java支持靜態(tài)和動(dòng)態(tài)風(fēng)格的代碼繼承及重用。它比C++更徹底,純度更高。Java語言提供類、接口和繼承等原語,為了簡(jiǎn)單起見,只支持類之間的單繼承,但支持接口之間的多繼承,并支持類與接口之間的實(shí)現(xiàn)機(jī)制(關(guān)鍵字為implements)。
3、跨平臺(tái)性。
與平臺(tái)無關(guān)是 Java 語言最大的優(yōu)勢(shì)。其它語言編寫的程序面臨的一個(gè)主要問題是 操作系統(tǒng)的變化,處理器升級(jí)以及核心系統(tǒng)資源的變化,都可能導(dǎo)致程序出現(xiàn)錯(cuò)誤或無法運(yùn)行。Java的虛擬機(jī)成功地解決了這個(gè)問題,Java編寫的程序可以在任何安裝了 Java虛擬機(jī) JVM 的計(jì)算機(jī)上正確的運(yùn)行,Sun公司實(shí)現(xiàn)了自己的目標(biāo) “一次寫成,處處運(yùn)行”
具體表現(xiàn)為:
4、健壯的。
Java的強(qiáng)類型機(jī)制、異常處理、廢料的自動(dòng)收集等是Java程序健壯性的重要保證。對(duì)指針的丟棄是Java的明智選擇。Java的安全檢查機(jī)制使得Java更具健壯性。
5、安全性。
作為網(wǎng)絡(luò)語言,安全是非常重要的。Java的安全性可從兩個(gè)方面得到保證。一方面,在Java語言里,像指針和釋放內(nèi)存等C++功能被刪除,避免了非法內(nèi)存操作。另一方面,當(dāng)Java用來創(chuàng)建瀏覽器時(shí),語言功能和一類瀏覽器本身提供的功能結(jié)合起來,使它更安全。Java語言在你的機(jī)器上執(zhí)行前,要經(jīng)過很多次的測(cè)試。它經(jīng)過代碼校驗(yàn),檢查代碼段的格式,檢測(cè)指針操作,對(duì)象操作是否過分以及試圖改變一個(gè)對(duì)象的類型。另外,Java擁有多個(gè)層次的互鎖保護(hù)措施,能有效地防止病毒的入侵和破壞行為的發(fā)生。
6、多線程。
在Java語言中,線程是一種特殊的對(duì)象,它必須由Thread類或其子(孫)類來創(chuàng)建。通常有兩種方法來創(chuàng)建線程:其一,使用型構(gòu)為Thread(Runnable)的構(gòu)造子將一個(gè)實(shí)現(xiàn)了Runnable接口的對(duì)象包裝成一個(gè)線程,其二,從Thread類派生出子類并重寫run方法,使用該子類創(chuàng)建的對(duì)象即為線程。值得注意的是Thread類已經(jīng)實(shí)現(xiàn)了Runnable接口,因此,任何一個(gè)線程均有它的run方法,而run方法中包含了線程所要運(yùn)行的代碼。線程的活動(dòng)由一組方法來控制。Java語言支持多個(gè)線程的同時(shí)執(zhí)行,并提供多線程之間的同步機(jī)制(關(guān)鍵字為synchronized)。
7、動(dòng)態(tài)的。
Java語言的設(shè)計(jì)目標(biāo)之一是適應(yīng)于動(dòng)態(tài)變化的環(huán)境。Java程序需要的類能夠動(dòng)態(tài)地被載入到運(yùn)行環(huán)境,也可以通過網(wǎng)絡(luò)來載入所需要的類。這也有利于軟件的升級(jí)。另外,Java中的類有一個(gè)運(yùn)行時(shí)刻的表示,能進(jìn)行運(yùn)行時(shí)刻的類型檢查。
當(dāng)然,所有的事情都不可能是完美的,有優(yōu)點(diǎn)必然會(huì)有缺點(diǎn)。
1、效率:因?yàn)橐冉?jīng)過編譯和垃圾回收機(jī)制等,所以速度比較慢!不適合大型的程序,網(wǎng)絡(luò)游戲等的編程!
2、復(fù)雜性,正因?yàn)樗墓δ軓?qiáng)大,因此也增加了其復(fù)雜性,像當(dāng)今流行的框架有很多,什么struts,sPRing,jQuery等等,無疑增加了java的復(fù)雜性。
計(jì)算機(jī)高級(jí)語言按照程序執(zhí)行方式可以分為編譯型和解釋型。
編譯型語言是指在程序執(zhí)行之前,首先會(huì)有一個(gè)單獨(dú)的編譯過程,針對(duì)特定的平臺(tái)(操作系統(tǒng)),將高級(jí)語言翻譯成機(jī)器語言,以后執(zhí)行這個(gè)程序的時(shí)候,便可以直接運(yùn)行,這樣編譯后可以脫離開發(fā)環(huán)境獨(dú)立運(yùn)行,效率也可以高一些。但也有一個(gè)缺點(diǎn),那就是編譯語言被編譯成特定平臺(tái)上的機(jī)器碼,通常無法直接轉(zhuǎn)移到其他平臺(tái)運(yùn)行,如果有需求,需要重新將源代碼轉(zhuǎn)移到特定平臺(tái),針對(duì)部分平臺(tái)進(jìn)行修改之后,重新編譯。C/C++ 等都是編譯型語言。
解釋型語言是指在運(yùn)行時(shí)才將程序翻譯成機(jī)器語言,跨平臺(tái)性較好,但不足之處就是每次執(zhí)行都需要進(jìn)行一次編譯。相當(dāng)于把編譯型語言中的編譯和解釋的過程混合到一起同時(shí)完成。Ruby,Python等都是解釋型語言。
Java語言比較特殊,Java語言編寫的程序也需要經(jīng)過編譯步驟,只不過它并不是編譯成特定語言的機(jī)器碼,而是生產(chǎn)與機(jī)器無關(guān)的字節(jié)碼(*.class文件)。這種字節(jié)碼不能直接運(yùn)行,需要經(jīng)過Java解釋器(JVM Java虛擬機(jī))來運(yùn)行。因此,Java語言是先編譯,后解釋,將這兩個(gè)步驟分開。
上面介紹到,Java程序?qū)⒆止?jié)碼運(yùn)行需要JVM虛擬機(jī),下面我們來認(rèn)識(shí)一下它。
Java虛擬機(jī),即JVM(Java%20Virtual%20Machine)。當(dāng)Java編譯器編譯Java代碼的時(shí)候,生成的是面向JVM的字節(jié)碼,再由JVM面向各操作系統(tǒng),因此使用Java語言編寫的程序,實(shí)際上是運(yùn)行在JVM之上,而不是運(yùn)行在操作系統(tǒng)上。
它有一個(gè)解釋器組件,可以實(shí)現(xiàn)Java字節(jié)碼和計(jì)算機(jī)操作系統(tǒng)之間的通信。
JVM類似于一個(gè)抽象的計(jì)算機(jī),和實(shí)際的計(jì)算機(jī)一樣,它具有指令集并使用不同的存儲(chǔ)區(qū)域。復(fù)雜執(zhí)行指令,管理數(shù)據(jù)、內(nèi)存和寄存器。
JDK是JAVA開發(fā)工具包的簡(jiǎn)稱,是Sun提供的一套用于開發(fā)Java程序的開發(fā)包。它提供了編譯,運(yùn)行Java程序所需的各種工具和資源。包含Java編譯器,Java運(yùn)行時(shí)環(huán)境,常用Java類庫等。
Jre是運(yùn)行Java程序的必備條件,Jre包含JVM,JVM是運(yùn)行Java程序的核心虛擬機(jī),而運(yùn)行Java程序不僅需要核心虛擬機(jī),還需要類加載器,字節(jié)碼校驗(yàn)器以及大量基礎(chǔ)類庫,而JDK還包含了開發(fā)工具,因此如果只需要運(yùn)行Java程序,只需要安裝Jre即可。
Sun把Java分為Java SE、Java EE、Java ME。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注