新聞中心
本篇內(nèi)容主要講解“Java的關(guān)鍵特性有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Java的關(guān)鍵特性有哪些”吧!
Document the Java: Sun Microsystems 公司的白皮書-- 1995.10 James Gosling 和 Henry
McGilton 的草案-- 說明了Java的以下主要特性:
*Simple and Familiar (簡單熟悉)
*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 特性 -- 簡單熟悉
Java 省略了C++ 中一些很少用到的,
不易理解的和易于混淆的特性, 包括操作符重載, 多重繼承, 指針和自動(dòng)類型強(qiáng)制.
它增加了自動(dòng)垃圾清理, 使得用Java進(jìn)行動(dòng)態(tài)編程比用 C 或 C++
容易.
不再有mallocs!
它還加了′接口′ 構(gòu)造, 類似于 Objective C 的概念,
經(jīng)常用于通過允許method調(diào)用語法是"繼承的"來彌補(bǔ)多重繼承的缺少帶來的不便.
結(jié)果因?yàn)樗愃朴贑++, 用戶會(huì)比較熟悉, 便于編程.
這樣做的另一個(gè)結(jié)果是使得內(nèi)核變得很小, 適用于消費(fèi)者電子設(shè)備. 基本解釋器(alpha) 為~40Kb, 庫和線索另外需要 175Kb.
Java 特性 -- 面向?qū)ο?br/>Java 模型可以看成是 C++ 的一個(gè)子集, 帶有一些從Objective_C
中繼承下來的動(dòng)態(tài)元素(方法重載, 垃圾收集).
結(jié)構(gòu), 聯(lián)合和函數(shù)被抽象成為Java類的數(shù)據(jù)和方法(methods) -- Java 比較簡單!
Java模型的長處不僅在于簡單還在于和系統(tǒng)相關(guān)的類庫的擴(kuò)充 (大約 250 個(gè)公共庫在alpha 和 beta 版中發(fā)布).
Java
類也在Web 嵌入模型中起到通訊單元的作用. Applet 類通過HTML的applet標(biāo)記中的名字標(biāo)識(shí)自己. Applet
下載出現(xiàn)在applet源程序中的其它類. 因此, Java 類名字起到分布式Java代碼數(shù)據(jù)庫的地址模式的作用.
Java 特性 --結(jié)構(gòu)中立
C/C++ 在異構(gòu)網(wǎng)絡(luò)環(huán)境下編程需要使用和兼容多個(gè)平臺(tái)和相應(yīng)的編譯器. 這個(gè)問題在
Java中通過稱為bytecode(或opcode)的獨(dú)立于平臺(tái)的二進(jìn)制描述解釋的設(shè)計(jì)而解決了.
Java 編譯器(用 Java 寫成的, 平臺(tái)獨(dú)立)
讀取 Java 源程序生成Java bytecode. 這些 bytecodes 根據(jù)瀏覽器的要求被送到客戶端的機(jī)器上.
每個(gè)客戶機(jī)器必須運(yùn)行 Java
解釋器, 它完成 Java bytecode的解釋執(zhí)行. Java 解釋器是用POSIX的ANSI C編寫的, 需要送到每個(gè)單獨(dú)的平臺(tái)下面進(jìn)行一次常規(guī)的編譯.
一旦解釋器就緒, 應(yīng)用程序開發(fā)者不必關(guān)心任何平臺(tái)說明和區(qū)別不同的本地編譯器.
Java 特性 -- 可移動(dòng)
Java
語言提供了一個(gè)統(tǒng)一的抽象 (虛擬) 機(jī)器模型, 對(duì)所有的平臺(tái)是一致的.
SUN 擁有 Java 虛擬機(jī) -- 它是通用的, 而任何用戶可以增加它的類
不同于在 C/C++ 中需要手工為不同的整數(shù)匹配到物理機(jī)器的結(jié)構(gòu)上, Java byte, char short, int 和 long
的大小始終是一樣的, 分別等于 8, 16, 16(unicode), 32 和 64 位.
沒有頭文件, 預(yù)處理程序,#define 等.
浮點(diǎn)數(shù)總是IEEE 754
特定窗口環(huán)境的區(qū)別的說明 (X Windows, MS Windows, Macintosh) 根據(jù)抽象窗口工具
Abstract Windowing Toolkit (AWT) 消除掉了.
AWT 是由 ~60 Java 類(alpha)寫成的,
它提供了一個(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).
通常地, 編輯過程是: a) 時(shí)間消費(fèi)和 b) 平臺(tái)說明. 因此, 解釋器用于促進(jìn) a) 快速原型化和/或 b) 可移動(dòng)性.
Java 模型主要考慮平臺(tái)獨(dú)立性但是效率也是適當(dāng)?shù)囊驗(yàn)镴ava 編譯器比較快, 生成簡潔的 bytecode 輸出.
Java 特性 -- 分布式
流行的 TCP/IP 為基礎(chǔ)的協(xié)議如 FTP 或 HTTP 是根據(jù)網(wǎng)絡(luò)協(xié)議類來支持的. 這方便了各種形式的分布式處理. 新的協(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í)的類型檢查, 消除了 C/C++ 在這方面的一些錯(cuò)誤.
指針?biāo)惴ū煌耆艞?
這樣是為了運(yùn)行時(shí)檢查數(shù)組下標(biāo)和增強(qiáng)了Java模型的安全性.
始終要求顯式說明, 即 C 類型的隱式說明被放棄. 這樣使得Java
編譯器可以完成早期的錯(cuò)誤檢查.
Java中快速原型化(prototyping )不如 JavaScript,Lisp, Tcl, Smalltalk 或
Perl, 但是Java的軟件質(zhì)量保證比這些更加動(dòng)態(tài)和 ′寬大的′ 語言要好.
Java 特性 -- (希望的) 安全性
Java
二進(jìn)制代碼在網(wǎng)絡(luò)中傳送, 在客戶機(jī)器上執(zhí)行. 因此安全性是一個(gè)至關(guān)重要的問題, 在Java中得到著力加強(qiáng).
Java 有它自己的已安全方式設(shè)計(jì)的網(wǎng)絡(luò)類
C++ 模型的修改如去掉指針?biāo)惴ê蛷?qiáng)制類型轉(zhuǎn)換主要是基于安全要求的考慮.
多數(shù)病毒是基于對(duì)私用的/保護(hù)的計(jì)算機(jī)存儲(chǔ)器的訪問實(shí)現(xiàn)的,
這在Java中是不可能的.
Java opcode 是由Java解釋器在客戶一端獨(dú)占的虛擬存儲(chǔ)器中執(zhí)行的. 因此除非Java解釋器自己存在安全漏洞,
否則模塊是安全的, 用戶無法通過不正確地或者惡意地編寫applet產(chǎn)生安全漏洞.
穿過網(wǎng)絡(luò)發(fā)送的 bytecode在客戶端被檢驗(yàn),
阻止惡意/錯(cuò)誤的類引發(fā)問題
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í)編譯器形式來看,
這一點(diǎn)滿足了對(duì)性能要求較高的應(yīng)用程序.
從Jave bytecode中生成的機(jī)器代碼的性能與同樣平臺(tái)下的典型的 C/C++ 編譯器提供的性能相當(dāng).
這里的一些概念實(shí)際上和 OSF/ANDF 相似. 使用 ANDF 術(shù)語的話, 我們可以稱 Java 編譯器為 ′生產(chǎn)者producer′,
這里討論的機(jī)器代碼生成器是一個(gè) ′安裝者installer′. 缺省情況下 Java 的工作模式不使用 installer 而是直接解釋中級(jí)代碼形式
(這種方式在 ANDF 中是用 GAI -- Generalized ANDF Interpreter支持的).
ANDF
模型在原理上可以應(yīng)用到所有的語言上. Java/HotJava 系統(tǒng)為Java語言實(shí)現(xiàn)了 ANDF 概念.
Java 特性 -- 多線索
Java 模型提供優(yōu)先權(quán)多線索, 在Thread類上面執(zhí)行. 線索方法基于C.A.R. Hoare的監(jiān)視者和條件變量變化表提供一套時(shí)間同步原語.
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)通訊原語. 各種線索的通訊環(huán)境可以通過線索和網(wǎng)絡(luò)協(xié)議對(duì)象的聯(lián)合來提供.
Java 特性 -- It 動(dòng)態(tài)性
Java 模型比C++的動(dòng)態(tài)性要好, 接近于Smalltalk 或 Perl.
在父類實(shí)現(xiàn)被更新后, 子類不需要重新編譯.
類有runtime 陳述(按照Class類實(shí)現(xiàn)), 它允許用戶在運(yùn)行時(shí)察看一個(gè)給定對(duì)象實(shí)例的類型 (在 C 中如果指針是指向整數(shù)或?yàn)g覽器則無法知道)
C++ 有 "脆弱父類" 問題, 如果改變了父類或引用的類中的任意內(nèi)容(方法/實(shí)例變量), 必須重新編譯子類. Java 在運(yùn)行時(shí)解決類的引用,
解決了這個(gè)問題.
到此,相信大家對(duì)“Java的關(guān)鍵特性有哪些”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
分享名稱:Java的關(guān)鍵特性有哪些-創(chuàng)新互聯(lián)
地址分享:http://ef60e0e.cn/article/pijcg.html