? 本文主要根據(jù)Java的誕生,Java的特性 進(jìn)行描述。有錯(cuò)誤,歡迎指正。
?
? 一:Java的誕生
Java 是從1995年的7月開始在計(jì)算機(jī)業(yè)界就受到了高度關(guān)注,特別是在Internet和多媒體(Multimedia)相關(guān)產(chǎn)品類方面。
Java為何有如此這么大的魅力?
Java是一種軟件技術(shù)
是一種由美國(guó)SUN計(jì)算機(jī)公司(Sun Microsystems, Inc.)所研究而成的語言
是一種為 Internet發(fā)展的計(jì)算機(jī)語言
是一種使網(wǎng)頁(Web Page)產(chǎn)生生動(dòng)活潑畫面的語言
是一種使網(wǎng)頁(Web Page)由靜態(tài)(Static)轉(zhuǎn)變?yōu)閯?dòng)態(tài)(Dynamic)的語言
是一種語言,用以產(chǎn)生「小應(yīng)用程序(Applet(s))」
是一種簡(jiǎn)化的C++語言 是一種安全的語言,具有阻絕計(jì)算機(jī)病毒傳輸?shù)墓δ?
是一種將安全性(Security)列為第一優(yōu)先考慮的語言
是一種使用者不需花費(fèi)很多時(shí)間學(xué)習(xí)的語言
是一種突破用戶端機(jī)器環(huán)境和CPU結(jié)構(gòu)的語言
是一種「寫一次,即可在任何機(jī)器上執(zhí)行(Write OnceRun Anywhere)」的語言是有史以來
,第一套允使用者將應(yīng)用程序(Applications)通過Internet從遠(yuǎn)端的服務(wù)器(Remote Server)傳輸?shù)奖镜囟说臋C(jī)器上(LocalMachine)并執(zhí)行
是一種應(yīng)用程序提供者不需要知道使用者的計(jì)算機(jī)硬件(如:Sun, Intel, 或MAC等)與軟件(如:SW- UNIX, MAC O/S, Windows, 或NT等)環(huán)境的語言(Kestenbaum, 1995)。
? 二:Java的特性
?? Java是一種簡(jiǎn)單,健壯,多態(tài),安全,網(wǎng)絡(luò),面向?qū)ο螅阈阅艿某绦蛘Z言。
?
?? 簡(jiǎn)單的 (Simple)
?C/C++學(xué)習(xí)復(fù)雜,程序運(yùn)行需要在各個(gè)平臺(tái)運(yùn)行。而Java是一次編譯到處運(yùn)行的。
?Java是在C/C++的基礎(chǔ)上面產(chǎn)生的,且同時(shí)屏蔽了C/C++的一些
指針
(Pointer)
、運(yùn)算符重載
(Operator Overloading)
和多重繼承
(Multiple Inheritance)
的特性。
?
? 面向?qū)ο蟮? (Object-Oriented)
面向?qū)ο蠓治? (Object-Oriented Analysis) 是分析問題的一種方式,面向?qū)ο笤O(shè)計(jì) (Object-Oriented Design) 是使用面向?qū)ο蟮乃伎挤绞絹碓O(shè)計(jì)問題的解決方案。但是,要了解什么是面向?qū)ο螅约皩W(xué)會(huì)使用面向?qū)ο蟮姆绞竭M(jìn)行設(shè)計(jì)與解決問題,并不是一件簡(jiǎn)單 的事情,事實(shí)上讓您了解面向?qū)ο笳沁@本書的目標(biāo)之一。
?
?? 網(wǎng)絡(luò)的 (Network-Savvy)
??? Java本身是通過網(wǎng)絡(luò)而產(chǎn)生的,且好多功能與網(wǎng)絡(luò)有關(guān),從Applet,(簡(jiǎn)化的)Socket,(交互式的)Jsp/Servlet網(wǎng)絡(luò)程序到今天的Web Service等等,其實(shí)Java也正是網(wǎng)絡(luò)使用非常的高。EJB現(xiàn)在使用的相對(duì)較少。
? 編譯的 (Interpreted)
程序在一個(gè)平臺(tái)上要能夠運(yùn)行,必須先編譯為該平臺(tái)所能理解的原始機(jī)器語言 (Native Machine Instructions) ,但最大的問題在于每個(gè)平臺(tái)所認(rèn)識(shí)的機(jī)器語言各不相同。例如 Windows 操作系統(tǒng)認(rèn)識(shí)的機(jī)器語言就與 Linux 認(rèn)識(shí)的不相同,專為 Windows 操作系統(tǒng)所編寫并編譯好的程 序,并無法直接拿來在 Linux 操作系統(tǒng)上運(yùn)行。
為了解決在不同平臺(tái)間運(yùn)行程序的問題, Java 的程序在進(jìn)行編譯時(shí),并不直接編譯為與平臺(tái)相對(duì)應(yīng)的原始機(jī)器語言,而是編譯為與系統(tǒng)無關(guān)的“字節(jié) 碼” (Bytecodes) 。為了要運(yùn)行 Java 程序,運(yùn)行的平臺(tái)上必須安裝有 JVM( Java Virtual Machine) , JVM 等于是為 Java 程序所虛擬的環(huán)境。當(dāng)運(yùn)行 Java 程序時(shí), Java 實(shí)時(shí)編譯器 (Just In Time Compiler , JIT) 會(huì)將字節(jié)碼編譯為目標(biāo)平臺(tái)所接受的原始機(jī)器語言,通過 JVM 使得 Java 程序在不同平臺(tái)上都能運(yùn)行的目的得以實(shí)現(xiàn),如圖 1-2 所示。
圖 1-2? JVM 將 Java 字節(jié)碼轉(zhuǎn)換為與平 臺(tái)相對(duì)應(yīng)的機(jī)器語言
????????
良葛格的話 匣子:
“平臺(tái)” (Platform) 一詞并沒有較嚴(yán)謹(jǐn)?shù)亩?義,在計(jì)算機(jī)的領(lǐng)域中,平臺(tái)有時(shí)指的是硬件,有時(shí)指的是作用于硬件之上的軟件系統(tǒng),有時(shí)則指硬件加上軟件,這里的平臺(tái)指的是“操作系統(tǒng)”。由于不同的硬件 會(huì)運(yùn)行不同的操作系統(tǒng),所以這里對(duì)平臺(tái)的定義也就是硬件加上軟件。
您可以在 Google(http://www.google.com/) 上搜尋 define:platform 來查詢網(wǎng)絡(luò)上各種對(duì)平臺(tái)的定義。
?
?? 健壯的 (Robust)
Java 將 C/C++ 中一些功能強(qiáng)大但不容易掌握的功能去除了。以指針 (Point) 功能為例,即使是有經(jīng)驗(yàn)的開發(fā) 人員在使用指針功能時(shí)也得小心翼翼,避免編寫出使程序崩潰 (Crash) 的錯(cuò)誤,諸如此類的功能在 Java 中被去除,為的是讓 Java 在使用時(shí)更為簡(jiǎn)單,編寫出來的程序更為健壯。
舍棄了 C/C++ 的一些特性曾使得許多開發(fā)人員質(zhì)疑沒有了 C/C++ 的這些特性, Java 還能開發(fā)什么軟件?但從 Java 正式提出至今 10 年來已經(jīng)證明, Java 確實(shí)適用于開發(fā)各個(gè)領(lǐng)域的軟件,而且擁有廣大的網(wǎng)絡(luò)資源。
? 安全的 (Secure)
Java 加入了垃圾回收 (Garbage Collection) 機(jī)制,讓開發(fā)人員無需擔(dān)心對(duì)象資源的回收問題,異 常 (Exception) 處理架構(gòu)讓開發(fā)人員可以掌握程序中各種突發(fā)的異常狀況。另外,像 synchronized 、 final 等存取關(guān)鍵詞的使用,目的都在于加強(qiáng) Java 程序的安全性。 ?
可移植的 (Portable)
要讓程序跨平臺(tái)運(yùn)行并不是一件容易的事,有相當(dāng)多的因素必須考慮,例如數(shù) 據(jù)類型所占內(nèi)存長(zhǎng)度就是一個(gè)問題, Java 在不同的平臺(tái)上的數(shù)據(jù)類型長(zhǎng)度是 統(tǒng)一的 ( 而 C/C++ 則不然 ) 。這是 Java 在提高程序可移植性上最顯而易見的一個(gè)例子。
? 高性能的 (High-Performance)
高性能是 Java 所宣稱的,在某些條件的配合下, Java 號(hào)稱可以與 C/C++ 擁有同樣甚至更好的運(yùn)行性能,但更多的人只是將這個(gè) 宣稱視為一個(gè)商業(yè)宣傳的口號(hào)。 Java 是在運(yùn)行時(shí)期才將中間的字節(jié)碼編譯為原始機(jī)器語 言,這就花上了一段不短的啟動(dòng)時(shí)間,而早期的 Java 在運(yùn)行性能上確實(shí)是一直被詬病的。
不過在歷經(jīng)數(shù)個(gè)版本的變更, Java 一直嘗試提高其運(yùn)行的性能,像使用 Java HotSpot 技術(shù)。在第一次加載 Java 字節(jié)碼時(shí), JIT 會(huì)以編譯模式開始加載,分析并嘗試以 最佳化編譯為目標(biāo)平臺(tái)的原始機(jī)器語言。每一次的版本更新, Java 皆嘗試在性能上做出改進(jìn)。
??
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
