本篇內(nèi)容主要講解“Java的關(guān)鍵特性有哪些”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Java的關(guān)鍵特性有哪些”吧!

Document the Java: Sun Microsystems 公司的白皮書(shū)-- 1995.10 James Gosling 和 Henry
McGilton 的草案-- 說(shuō)明了Java的以下主要特性:
*Simple and Familiar (簡(jiǎn)單熟悉)
*Object-oriented (面向?qū)ο?
*Architecture-neutral (結(jié)構(gòu)中立)
*Portable (可移動(dòng))
*Somewhat Interpreted (部分解釋)
*Distributed (分布式的)
*Robust (魯棒性)
*Secure (安全)
*High performance (高性能)
*Multi Threaded (多線索)
*Dynamic (動(dòng)態(tài))
Java 特性 -- 簡(jiǎn)單熟悉
Java 省略了C++ 中一些很少用到的,
不易理解的和易于混淆的特性, 包括操作符重載, 多重繼承, 指針和自動(dòng)類(lèi)型強(qiáng)制.
它增加了自動(dòng)垃圾清理, 使得用Java進(jìn)行動(dòng)態(tài)編程比用 C 或 C++
容易.
不再有mallocs!
它還加了′接口′ 構(gòu)造, 類(lèi)似于 Objective C 的概念,
經(jīng)常用于通過(guò)允許method調(diào)用語(yǔ)法是"繼承的"來(lái)彌補(bǔ)多重繼承的缺少帶來(lái)的不便.
結(jié)果因?yàn)樗?lèi)似于C++, 用戶會(huì)比較熟悉, 便于編程.
這樣做的另一個(gè)結(jié)果是使得內(nèi)核變得很小, 適用于消費(fèi)者電子設(shè)備. 基本解釋器(alpha) 為~40Kb, 庫(kù)和線索另外需要 175Kb.
Java 特性 -- 面向?qū)ο?br/>Java 模型可以看成是 C++ 的一個(gè)子集, 帶有一些從Objective_C
中繼承下來(lái)的動(dòng)態(tài)元素(方法重載, 垃圾收集).
結(jié)構(gòu), 聯(lián)合和函數(shù)被抽象成為Java類(lèi)的數(shù)據(jù)和方法(methods) -- Java 比較簡(jiǎn)單!
Java模型的長(zhǎng)處不僅在于簡(jiǎn)單還在于和系統(tǒng)相關(guān)的類(lèi)庫(kù)的擴(kuò)充 (大約 250 個(gè)公共庫(kù)在alpha 和 beta 版中發(fā)布).
Java
類(lèi)也在Web 嵌入模型中起到通訊單元的作用. Applet 類(lèi)通過(guò)HTML的applet標(biāo)記中的名字標(biāo)識(shí)自己. Applet
下載出現(xiàn)在applet源程序中的其它類(lèi). 因此, Java 類(lèi)名字起到分布式Java代碼數(shù)據(jù)庫(kù)的地址模式的作用.
Java 特性 --結(jié)構(gòu)中立
C/C++ 在異構(gòu)網(wǎng)絡(luò)環(huán)境下編程需要使用和兼容多個(gè)平臺(tái)和相應(yīng)的編譯器. 這個(gè)問(wèn)題在
Java中通過(guò)稱(chēng)為bytecode(或opcode)的獨(dú)立于平臺(tái)的二進(jìn)制描述解釋的設(shè)計(jì)而解決了.
Java 編譯器(用 Java 寫(xiě)成的, 平臺(tái)獨(dú)立)
讀取 Java 源程序生成Java bytecode. 這些 bytecodes 根據(jù)瀏覽器的要求被送到客戶端的機(jī)器上.
每個(gè)客戶機(jī)器必須運(yùn)行 Java
解釋器, 它完成 Java bytecode的解釋執(zhí)行. Java 解釋器是用POSIX的ANSI C編寫(xiě)的, 需要送到每個(gè)單獨(dú)的平臺(tái)下面進(jìn)行一次常規(guī)的編譯.
一旦解釋器就緒, 應(yīng)用程序開(kāi)發(fā)者不必關(guān)心任何平臺(tái)說(shuō)明和區(qū)別不同的本地編譯器.
Java 特性 -- 可移動(dòng)
Java
語(yǔ)言提供了一個(gè)統(tǒng)一的抽象 (虛擬) 機(jī)器模型, 對(duì)所有的平臺(tái)是一致的.
SUN 擁有 Java 虛擬機(jī) -- 它是通用的, 而任何用戶可以增加它的類(lèi)
不同于在 C/C++ 中需要手工為不同的整數(shù)匹配到物理機(jī)器的結(jié)構(gòu)上, Java byte, char short, int 和 long
的大小始終是一樣的, 分別等于 8, 16, 16(unicode), 32 和 64 位.
沒(méi)有頭文件, 預(yù)處理程序,#define 等.
浮點(diǎn)數(shù)總是IEEE 754
特定窗口環(huán)境的區(qū)別的說(shuō)明 (X Windows, MS Windows, Macintosh) 根據(jù)抽象窗口工具
Abstract Windowing Toolkit (AWT) 消除掉了.
AWT 是由 ~60 Java 類(lèi)(alpha)寫(xiě)成的,
它提供了一個(gè)通用的 GUI 編程模型, 可以在 UNIX, PC 和 Mac 上移動(dòng), 由Java解釋器自動(dòng)翻譯成本地平臺(tái)的窗口系統(tǒng).
Java
特性 -- 部分解釋
Java 代表了完全編譯 (如 C/C++) 和完全解釋 (如 Smalltalk 或者 Perl) 之間的一種折衷方案.
Java "編譯器" 生成一種二進(jìn)制 bytecode 輸出, 它是可移動(dòng)的, 比特定機(jī)器實(shí)際所需的二進(jìn)制代碼要小得多 .
Java "解釋器"
執(zhí)行這個(gè) bytecode , 因此動(dòng)態(tài)性比象Perl這樣的解釋器小 (后者內(nèi)部實(shí)現(xiàn)一個(gè)等價(jià)的 bytecode 構(gòu)造, 當(dāng)閱讀程序源碼時(shí)
on-the-fly).
通常地, 編輯過(guò)程是: a) 時(shí)間消費(fèi)和 b) 平臺(tái)說(shuō)明. 因此, 解釋器用于促進(jìn) a) 快速原型化和/或 b) 可移動(dòng)性.
Java 模型主要考慮平臺(tái)獨(dú)立性但是效率也是適當(dāng)?shù)囊驗(yàn)镴ava 編譯器比較快, 生成簡(jiǎn)潔的 bytecode 輸出.
Java 特性 -- 分布式
流行的 TCP/IP 為基礎(chǔ)的協(xié)議如 FTP 或 HTTP 是根據(jù)網(wǎng)絡(luò)協(xié)議類(lèi)來(lái)支持的. 這方便了各種形式的分布式處理. 新的協(xié)議 (如 PVM )
可以增加和動(dòng)態(tài)安裝.
Java 的分布式計(jì)算模型主要是客戶-服務(wù)器, Java 編譯器在服務(wù)器一方準(zhǔn)備 opcodes, Java
解釋器在客戶一方執(zhí)行它.
用戶可以期待用服務(wù)器和客戶的Java線索互相通訊實(shí)現(xiàn)更多的動(dòng)態(tài)使用.
Java 特性 -- 魯棒性
Java 增強(qiáng)了編譯時(shí)的類(lèi)型檢查, 消除了 C/C++ 在這方面的一些錯(cuò)誤.
指針?biāo)惴ū煌耆艞?
這樣是為了運(yùn)行時(shí)檢查數(shù)組下標(biāo)和增強(qiáng)了Java模型的安全性.
始終要求顯式說(shuō)明, 即 C 類(lèi)型的隱式說(shuō)明被放棄. 這樣使得Java
編譯器可以完成早期的錯(cuò)誤檢查.
Java中快速原型化(prototyping )不如 JavaScript,Lisp, Tcl, Smalltalk 或
Perl, 但是Java的軟件質(zhì)量保證比這些更加動(dòng)態(tài)和 ′寬大的′ 語(yǔ)言要好.
Java 特性 -- (希望的) 安全性
Java
二進(jìn)制代碼在網(wǎng)絡(luò)中傳送, 在客戶機(jī)器上執(zhí)行. 因此安全性是一個(gè)至關(guān)重要的問(wèn)題, 在Java中得到著力加強(qiáng).
Java 有它自己的已安全方式設(shè)計(jì)的網(wǎng)絡(luò)類(lèi)
C++ 模型的修改如去掉指針?biāo)惴ê蛷?qiáng)制類(lèi)型轉(zhuǎn)換主要是基于安全要求的考慮.
多數(shù)病毒是基于對(duì)私用的/保護(hù)的計(jì)算機(jī)存儲(chǔ)器的訪問(wèn)實(shí)現(xiàn)的,
這在Java中是不可能的.
Java opcode 是由Java解釋器在客戶一端獨(dú)占的虛擬存儲(chǔ)器中執(zhí)行的. 因此除非Java解釋器自己存在安全漏洞,
否則模塊是安全的, 用戶無(wú)法通過(guò)不正確地或者惡意地編寫(xiě)applet產(chǎn)生安全漏洞.
穿過(guò)網(wǎng)絡(luò)發(fā)送的 bytecode在客戶端被檢驗(yàn),
阻止惡意/錯(cuò)誤的類(lèi)引發(fā)問(wèn)題
Java 特性 -- 高性能
Java 解釋器完成Java bytecode的on-the-fly
runtime 執(zhí)行, 獲得了滿意的性能.
NOT true in initial software which is often 100 times
slower than C but this is expected to improve as true compilers are produced and
general software improves!
支持生成從bytecode中生成與本地機(jī)器相關(guān)的代碼, 作為中級(jí)編譯器形式來(lái)看,
這一點(diǎn)滿足了對(duì)性能要求較高的應(yīng)用程序.
從Jave bytecode中生成的機(jī)器代碼的性能與同樣平臺(tái)下的典型的 C/C++ 編譯器提供的性能相當(dāng).
這里的一些概念實(shí)際上和 OSF/ANDF 相似. 使用 ANDF 術(shù)語(yǔ)的話, 我們可以稱(chēng) Java 編譯器為 ′生產(chǎn)者producer′,
這里討論的機(jī)器代碼生成器是一個(gè) ′安裝者installer′. 缺省情況下 Java 的工作模式不使用 installer 而是直接解釋中級(jí)代碼形式
(這種方式在 ANDF 中是用 GAI -- Generalized ANDF Interpreter支持的).
ANDF
模型在原理上可以應(yīng)用到所有的語(yǔ)言上. Java/HotJava 系統(tǒng)為Java語(yǔ)言實(shí)現(xiàn)了 ANDF 概念.
Java 特性 -- 多線索
Java 模型提供優(yōu)先權(quán)多線索, 在Thread類(lèi)上面執(zhí)行. 線索方法基于C.A.R. Hoare的監(jiān)視者和條件變量變化表提供一套時(shí)間同步原語(yǔ).
Java 線索從Xerox Park的先驅(qū)性的Cedar/Mesa系統(tǒng)(它創(chuàng)造了Macintosh和面向?qū)ο蟪绦蛟O(shè)計(jì))中繼承了一些特性.
Java
多線索在applet 編程中的一個(gè)典型應(yīng)用是有幾個(gè)獨(dú)立但又相互關(guān)聯(lián)的情況的模擬 (例如各種排序算法的), 它們同時(shí)在一個(gè)applet窗口中運(yùn)行.
多線索還內(nèi)部用于 HotJava 瀏覽器, 處理多個(gè)動(dòng)態(tài)文檔.
另一個(gè)有趣的應(yīng)用領(lǐng)域是多-HotJava 環(huán)境的情況, 例如合作實(shí)驗(yàn)室或游戲
Java 線索內(nèi)置的點(diǎn)對(duì)點(diǎn)通訊原語(yǔ). 各種線索的通訊環(huán)境可以通過(guò)線索和網(wǎng)絡(luò)協(xié)議對(duì)象的聯(lián)合來(lái)提供.
Java 特性 -- It 動(dòng)態(tài)性
Java 模型比C++的動(dòng)態(tài)性要好, 接近于Smalltalk 或 Perl.
在父類(lèi)實(shí)現(xiàn)被更新后, 子類(lèi)不需要重新編譯.
類(lèi)有runtime 陳述(按照Class類(lèi)實(shí)現(xiàn)), 它允許用戶在運(yùn)行時(shí)察看一個(gè)給定對(duì)象實(shí)例的類(lèi)型 (在 C 中如果指針是指向整數(shù)或?yàn)g覽器則無(wú)法知道)
C++ 有 "脆弱父類(lèi)" 問(wèn)題, 如果改變了父類(lèi)或引用的類(lèi)中的任意內(nèi)容(方法/實(shí)例變量), 必須重新編譯子類(lèi). Java 在運(yùn)行時(shí)解決類(lèi)的引用,
解決了這個(gè)問(wèn)題.
到此,相信大家對(duì)“Java的關(guān)鍵特性有哪些”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
分享標(biāo)題:Java的關(guān)鍵特性有哪些-創(chuàng)新互聯(lián)
當(dāng)前地址:http://chinadenli.net/article26/pijcg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、自適應(yīng)網(wǎng)站、定制開(kāi)發(fā)、網(wǎng)站建設(shè)、外貿(mào)建站、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容
移動(dòng)網(wǎng)站建設(shè)知識(shí)