Java Web入門之java--第一節(jié) java 簡(jiǎn)介及開發(fā)環(huán)境安裝

本篇博客是Java web入門的第一篇博客撩鹿,這篇博客主要講述java語(yǔ)言的一些簡(jiǎn)介浪读。

? 一)先從Java語(yǔ)言的誕生說(shuō)起流译。

? 1991年封字,Sun公司在一個(gè)叫做James Gosling的人的帶領(lǐng)下黔州,成立了一個(gè)項(xiàng)目組,名字叫做“Green”阔籽。當(dāng)時(shí)這個(gè)項(xiàng)目組成立的時(shí)候流妻,是計(jì)劃開發(fā)一種能夠運(yùn)行在消費(fèi)性電子設(shè)備上的編程語(yǔ)言。這種設(shè)備的特點(diǎn)是:1笆制、運(yùn)算能力和運(yùn)算空間非常有限绅这;2、不同的廠商設(shè)計(jì)產(chǎn)品時(shí)會(huì)使用完全不同的CPU在辆,因此會(huì)有完全不同的架構(gòu)证薇。為了解決這個(gè)問(wèn)題,當(dāng)時(shí)Green希望設(shè)計(jì)出一種具有非常優(yōu)秀的“跨平臺(tái)”特性的語(yǔ)言匆篓。1992年浑度,Green項(xiàng)目組最初的產(chǎn)品誕生。這個(gè)產(chǎn)品一開始被稱之為“Oak”鸦概,但是后來(lái)發(fā)現(xiàn)箩张,Oak已經(jīng)是另外一種計(jì)算機(jī)語(yǔ)言的名字。于是窗市,Oak語(yǔ)言更名為Java語(yǔ)言先慷。

? ?1996年,Java語(yǔ)言發(fā)布了第一個(gè)正式版本:1.0版本谨设。這時(shí)熟掂,Java語(yǔ)言能夠編寫的程序稱之為Applet。這種Applet只能在集成了Java環(huán)境的瀏覽器中運(yùn)行扎拣,當(dāng)時(shí)主要為瀏覽器來(lái)增加各種動(dòng)態(tài)效果赴肚,用來(lái)美化頁(yè)面和增強(qiáng)用戶與瀏覽器的交互素跺。很快的,1.1版本發(fā)布誉券。這個(gè)版本修正了1.0版本中大量的bug指厌, 并完善了1.0版本中的很多缺失的部分。1998年12月踊跟,Java1.2版本發(fā)布踩验。為了表明這是一個(gè)非常重大的更新,Sun公司把Java1.2版本商玫,也稱之為Java 2 Platform箕憾,來(lái)表示這是一個(gè)全新的Java平臺(tái)。對(duì)1.0和1.1擴(kuò)展之后得到的部分稱之為“標(biāo)準(zhǔn)版”拳昌,也就是所謂的“Java 2 Standard Edition”袭异,簡(jiǎn)稱“J2SE”。標(biāo)準(zhǔn)版可以用來(lái)寫Applet炬藤,也可以用來(lái)編寫脫離瀏覽器御铃,獨(dú)立運(yùn)行的程序(Application)。除了標(biāo)準(zhǔn)版之外沈矿,Java 2還包括“企業(yè)版”(J2EE)和“微型版”(J2ME)上真。企業(yè)版主要提供了服務(wù)器端編程的功能,而微型版主要提供了在一些資源受限制的平臺(tái)上(例如手機(jī))運(yùn)行Java的功能羹膳。之后睡互,Java語(yǔ)言發(fā)布了1.3和1.4版本。這兩個(gè)版本主要修正了bug溜徙,完善了Java的類庫(kù)湃缎。2004年,Java推出了一個(gè)新版本蠢壹。這個(gè)版本是 1.1之后,Java第一次對(duì)語(yǔ)言的基礎(chǔ)類庫(kù)做出重大改進(jìn)的版本九巡。Sun公司把這個(gè)版本稱之為5.0图贸。這也就意味著,這個(gè)版本與原來(lái)的Java 2平臺(tái)相比有著很多不同的地方冕广,而原來(lái)的三個(gè)平臺(tái):J2SE疏日、J2EE、J2ME也被改名成為了Java SE撒汉、 Java EE沟优、Java ME。

那么睬辐,Java語(yǔ)言究竟有什么特性挠阁,能夠在眾多語(yǔ)言中脫穎而出呢宾肺??

? ?1)純面向?qū)ο?/p>

? 相對(duì)于另一種面向?qū)ο蟮恼Z(yǔ)言C++,Java語(yǔ)言是一種非常純粹的面向?qū)ο蟮恼Z(yǔ)言侵俗。對(duì)于C++而言锨用,寫程序除了可以使用面向?qū)ο蟮姆绞街猓€可以采用面向過(guò)程隘谣、面向模板等多種方式增拥;而相對(duì)的,Java語(yǔ)言只能采用面向?qū)ο蟮姆绞竭M(jìn)行編程寻歧。

? 2)簡(jiǎn)單 VS 復(fù)雜

? 由于Java語(yǔ)言相對(duì)C++來(lái)說(shuō)是一種純粹的面向?qū)ο蟮恼Z(yǔ)言掌栅,因此Java語(yǔ)言在理解和學(xué)習(xí)方面,都要比C++語(yǔ)言更簡(jiǎn)單码泛。Java的簡(jiǎn)單性渣玲,指的是Java語(yǔ)言的這種特點(diǎn):1、Java語(yǔ)言本身的特點(diǎn)非常簡(jiǎn)單弟晚,沒(méi)有復(fù)雜和晦澀的語(yǔ)法細(xì)節(jié)忘衍;2、Java語(yǔ)言傾向于讓程序員能夠簡(jiǎn)潔清晰的完成任務(wù)卿城。 而Java語(yǔ)言同時(shí)也是復(fù)雜的枚钓,體現(xiàn)在:1、雖然Java語(yǔ)言本身非常簡(jiǎn)單瑟押,但是它有大量強(qiáng)大而扎實(shí)的類庫(kù)搀捷,這些類庫(kù)極大的豐富了Java語(yǔ)言的特性;2多望、Java語(yǔ)言最主要的陣地是企業(yè)級(jí)應(yīng)用嫩舟,這種應(yīng)用本身,由于涉及到多線程怀偷、分布式送讲、數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)等各種各樣的領(lǐng)域仰挣,Java語(yǔ)言也提供了各種對(duì)應(yīng)的特性翘簇,因此從這個(gè)角度來(lái)看,Java語(yǔ)言是復(fù)雜的维蒙。

? 3)開放性

? Java語(yǔ)言是一種開放的語(yǔ)言:Sun公司已經(jīng)對(duì)Java語(yǔ)言開源掰吕,任何人都可以讀到Java語(yǔ)言的代碼;并且任何程序員都可以對(duì)Java語(yǔ)言未來(lái)的發(fā)展提出自己的開發(fā)和建議÷現(xiàn)在殖熟,Java社區(qū)有大量開源、免費(fèi)的東西可供下載和使用斑响,這在一定程度上也幫助了Java語(yǔ)言的發(fā)展和推廣菱属。

? 4)跨平臺(tái)性

? ? 運(yùn)行Java可以在各種平臺(tái)上面钳榨,包括常見的Windows系統(tǒng),也包括企業(yè)級(jí)應(yīng)用需要的Unix系統(tǒng)照皆。這種在不同平臺(tái)下運(yùn)行的能力使Java語(yǔ)言在企業(yè)級(jí)應(yīng)用中有著深遠(yuǎn)的影響重绷。

二)下面介紹Java語(yǔ)言的運(yùn)行機(jī)制。

? 直接操作計(jì)算機(jī)指令膜毁,使用的是機(jī)器語(yǔ)言以及匯編語(yǔ)言昭卓。但是,對(duì)于程序員來(lái)說(shuō)瘟滨,直接使用匯編語(yǔ)言來(lái)編寫程序候醒,開發(fā)起來(lái)非常的慢,也非常的辛苦杂瘸。所以出現(xiàn)了計(jì)算機(jī)高級(jí)語(yǔ)言倒淫。所謂的計(jì)算機(jī)高級(jí)語(yǔ)言,實(shí)際上指的:人為的規(guī)定一些語(yǔ)法败玉。然后敌土,在遵循這些語(yǔ)法的前提下,寫出一個(gè)文本文件运翼,最后利用某種方式返干,把文本文件轉(zhuǎn)化為機(jī)器指令進(jìn)行執(zhí)行。我們現(xiàn)在所謂的編程血淌,往往指的就是編寫文本文件的這個(gè)部分矩欠。這個(gè)文本文件一般我們稱之為源文件。那么悠夯,應(yīng)當(dāng)如何把一個(gè)源文件轉(zhuǎn)化為機(jī)器指令進(jìn)行執(zhí)行呢癌淮?在現(xiàn)代計(jì)算機(jī)語(yǔ)言中,主要有兩種方式:一種是編譯型沦补,一種是解釋型乳蓄。編譯型語(yǔ)言指的是,通過(guò)一個(gè)編譯器軟件策彤,把源文件轉(zhuǎn)化為可執(zhí)行文件栓袖。可執(zhí)行文件的內(nèi)容店诗,就是一些機(jī)器指令,以及相關(guān)的一些數(shù)據(jù)音榜。在Windows中庞瘸,可執(zhí)行文件往往以.exe作為后綴名。在執(zhí)行程序的時(shí)候赠叼,不需要源代碼文件擦囊,只需要可執(zhí)行文件即可违霞。示意如下:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?源文件 -- 編譯器--> 可執(zhí)行文件運(yùn)行可執(zhí)行文件 --> 機(jī)器指令

? 與編譯型語(yǔ)言相對(duì)的是解釋型語(yǔ)言。解釋型語(yǔ)言需要一個(gè)解釋器軟件瞬场,這個(gè)軟件會(huì)讀源文件买鸽,在讀文件的過(guò)程中,同時(shí)完成將源文件內(nèi)容翻譯成機(jī)器指令以及執(zhí)行的過(guò)程贯被。換句話說(shuō)眼五,解釋器將讀取源文件、翻譯成機(jī)器指令彤灶、執(zhí)行指令這三步同時(shí)完成看幼。示意如下:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文本文件 --解釋器--> 直接翻譯成機(jī)器指令

? 由上可知,編譯型語(yǔ)言在將源文件編譯成可執(zhí)行文件之后幌陕,運(yùn)行程序只需要可執(zhí)行文件诵姜,不再需要重復(fù)編譯的過(guò)程。而解釋型語(yǔ)言每次運(yùn)行時(shí)必須重復(fù)翻譯源文件搏熄,因此從運(yùn)行效率上來(lái)說(shuō)棚唆,解釋型語(yǔ)言遠(yuǎn)遠(yuǎn)不如編譯型語(yǔ)言。當(dāng)然心例,解釋型語(yǔ)言也有自己的優(yōu)勢(shì):跨平臺(tái)性較好宵凌。由于編譯型語(yǔ)言運(yùn)行時(shí)只需要可執(zhí)行文件,而可執(zhí)行文件又與平臺(tái)緊密相連契邀,這也就意味著摆寄,對(duì)于不同的平臺(tái),必須要有不同的可執(zhí)行文件才行坯门。而相對(duì)而言微饥,解釋型語(yǔ)言對(duì)于不同的平臺(tái),只需要有不同的解釋器就可以了古戴,源代碼幾乎不用進(jìn)行修改欠橘。而 Java語(yǔ)言,則兼具有編譯型和解釋型兩種語(yǔ)言的特點(diǎn):Java語(yǔ)言運(yùn)行時(shí)现恼,采用的是先編譯肃续、后解釋的方式運(yùn)行。首先叉袍,Java源代碼要寫在后綴名為.java的源文件中始锚。然后,通過(guò)一個(gè)編譯器喳逛,編譯生成.class文件瞧捌,這個(gè)文件被稱為“二進(jìn)制字節(jié)碼文件”。而.class文件并不能夠直接在機(jī)器上執(zhí)行。執(zhí)行.class文件姐呐,需要一個(gè)解釋器殿怜,這個(gè)解釋器會(huì)把.class中的指令翻譯成真正機(jī)器上的指令。也就是說(shuō)曙砂,需要解釋執(zhí)行.class文件头谜。 示意如下:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .java源文件 -- 編譯 --> .class字節(jié)碼文件 -- 解釋執(zhí)行 --> 真正的機(jī)器指令

字節(jié)碼文件是平臺(tái)中立的,也就是說(shuō)鸠澈,運(yùn)行在不同平臺(tái)上的.class文件內(nèi)容相同柱告,與所在平臺(tái)無(wú)關(guān)。

??那么.class文件中保存的是什么內(nèi)容呢款侵?這個(gè)文件中保存的也是計(jì)算機(jī)指令末荐,所不同的是,這些計(jì)算機(jī)指令不是真實(shí)計(jì)算機(jī)所擁有的指令新锈,而是一些虛擬的指令甲脏。在解釋執(zhí)行.class文件的指令時(shí),為了能讓這些虛擬的計(jì)算機(jī)指令能夠轉(zhuǎn)換成真正的計(jì)算機(jī)指令妹笆,我們需要一個(gè)Java虛擬機(jī)(Java Virtual Machine块请,簡(jiǎn)稱 JVM)。JVM事實(shí)上是一個(gè)軟件,這個(gè)軟件為Java程序模擬出一個(gè)統(tǒng)一的運(yùn)行環(huán)境拳缠。Java程序只需要適應(yīng)這個(gè)虛擬的環(huán)境墩新,而與底層真正的硬件環(huán)境及操作系統(tǒng)環(huán)境無(wú)關(guān)。換句話說(shuō)窟坐,JVM的作用在于海渊,它屏蔽了底層不同平臺(tái)的差異。Java虛擬機(jī)接收.class文件中的虛擬指令哲鸳,這些指令很類似于真正的匯編語(yǔ)言指令臣疑,但這些指令與底層的操作系統(tǒng)平臺(tái)和硬件平臺(tái)無(wú)關(guān),完全是另外設(shè)計(jì)出的一套獨(dú)立體系徙菠。而不同平臺(tái)下的Java虛擬機(jī)讯沈,在執(zhí)行時(shí),會(huì)把.class文件中的虛擬機(jī)指令翻譯成對(duì)應(yīng)平臺(tái)上真正的計(jì)算機(jī)指令婿奔。因此缺狠,我們可以修改上面的示意如下:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .java源文件 -- 編譯 --> .class字節(jié)碼文件 –在JVM中解釋執(zhí)行--> 真正的機(jī)器指令

Java 語(yǔ)言這種“先編譯,后解釋”的運(yùn)行機(jī)制萍摊,使得其同時(shí)擁有了編譯型語(yǔ)言的高效性和解釋型語(yǔ)言的跨平臺(tái)性挤茄。

? 三)JRE 與 JDK

? ?JRE,也就是Java Runtime Environment的縮寫冰木,指的是Java的運(yùn)行環(huán)境驮樊。包括JVM和Java解釋器。但是僅僅有JRE片酝,只能是完成從.class文件到真正的機(jī)器指令這一步囚衔,而無(wú)法把一個(gè)源文件編譯成一個(gè).class 文件。

JDK雕沿,指的是Java Development Kit练湿,Java開發(fā)工具包。從內(nèi)容上說(shuō)审轮,JDK=JRE+工具(編譯器肥哎、調(diào)試器、其他工具...)+ 類庫(kù)疾渣,我們進(jìn)行Java開發(fā)篡诽,至少應(yīng)當(dāng)有JDK。JDK的下載網(wǎng)站(鏈接為:https://www.oracle.com/java/technologies/javase-java-platform-install.html)榴捡。 對(duì)于Windows系統(tǒng)而言杈女,下載JDK之后,安裝起來(lái)與其他的軟件安裝時(shí)并沒(méi)有太大區(qū)別吊圾, 在此不多贅述达椰。

四)Java 開發(fā)環(huán)境配置

? 當(dāng)JDK安裝完成之后,還需要對(duì)電腦進(jìn)行一些環(huán)境變量配置项乒,完成之后才能進(jìn)行java程序開發(fā)啰劲。

? 以大家常用的widows系統(tǒng)為例:

? 右鍵點(diǎn)擊“我的電腦” -- 選擇“屬性” -- 選擇“高級(jí)系統(tǒng)設(shè)置” -- 選擇“環(huán)境變量”

? 在系統(tǒng)變量中,點(diǎn)擊“新建”檀何,增加JAVA_HOME系統(tǒng)變量蝇裤,這個(gè)變量的值設(shè)為JDK的安裝目錄。假設(shè)JDK安裝在D:\Java\jdk频鉴。 然后栓辜,在系統(tǒng)變量中,查找PATH變量(不區(qū)分大小寫)砚殿。在Path變量的末尾啃憎,增加一 句:“;D:\Java\jdk\bin”。注意兩個(gè)要點(diǎn):1似炎、在Path末尾增加辛萍,千萬(wàn)不要把原有的內(nèi)容去掉;2羡藐、增加的值為Java安裝目錄下的bin目錄贩毕。 最后,增加一個(gè) CLASSPATH變量仆嗦。值為“.”辉阶,注意不帶雙引號(hào)。

??當(dāng)所有的環(huán)境變量都配置好了之后,打開Windows中的命令行,執(zhí)行java -version谆甜。如果得到正確的版本信息垃僚,則說(shuō)明配置正常。

? 對(duì)于配置開發(fā)環(huán)境還有不了解的同學(xué)规辱,可以自行百度谆棺。網(wǎng)上的圖文教程很詳細(xì)。下一節(jié)我們開始第一個(gè)java程序Hello World罕袋。話說(shuō)程序員的道路都是從hello world開啟的改淑,請(qǐng)關(guān)注該篇博客的同學(xué)做好準(zhǔn)備。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末浴讯,一起剝皮案震驚了整個(gè)濱河市朵夏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌榆纽,老刑警劉巖仰猖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異掠河,居然都是意外死亡亮元,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門唠摹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)爆捞,“玉大人,你說(shuō)我怎么就攤上這事勾拉≈笊” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵藕赞,是天一觀的道長(zhǎng)成肘。 經(jīng)常有香客問(wèn)我,道長(zhǎng)斧蜕,這世上最難降的妖魔是什么双霍? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮批销,結(jié)果婚禮上洒闸,老公的妹妹穿的比我還像新娘。我一直安慰自己均芽,他們只是感情好丘逸,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著掀宋,像睡著了一般深纲。 火紅的嫁衣襯著肌膚如雪仲锄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天湃鹊,我揣著相機(jī)與錄音儒喊,去河邊找鬼。 笑死涛舍,一個(gè)胖子當(dāng)著我的面吹牛澄惊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播富雅,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼肛搬!你這毒婦竟也來(lái)了没佑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤温赔,失蹤者是張志新(化名)和其女友劉穎蛤奢,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陶贼,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡啤贩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拜秧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痹屹。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖枉氮,靈堂內(nèi)的尸體忽然破棺而出志衍,到底是詐尸還是另有隱情,我是刑警寧澤聊替,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布楼肪,位于F島的核電站,受9級(jí)特大地震影響惹悄,放射性物質(zhì)發(fā)生泄漏春叫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一泣港、第九天 我趴在偏房一處隱蔽的房頂上張望暂殖。 院中可真熱鬧,春花似錦爷速、人聲如沸央星。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)莉给。三九已至毙石,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間颓遏,已是汗流浹背徐矩。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叁幢,地道東北人滤灯。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像曼玩,于是被迫代替她去往敵國(guó)和親鳞骤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容