国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java的一些關鍵特性

2019-11-18 14:24:50
字體:
來源:轉載
供稿:網友

  Document the java: Sun Microsystems 公司的白皮書-- 1995.10 James Gosling 和 Henry McGilton 的草案-- 說明了Java的以下主要特性:
*Simple and Familiar (簡單熟悉)
*Object-oriented (面向對象)
*Architecture-neutral (結構中立)
*Portable (可移動)
*Somewhat InterPReted (部分解釋)
*Distributed (分布式的)
*Robust (魯棒性)
*Secure (安全)
*High performance (高性能)
*Multi Threaded (多線索)
*Dynamic (動態)

Java 特性 -- 簡單熟悉
Java 省略了C++ 中一些很少用到的, 不易理解的和易于混淆的特性, 包括操作符重載, 多重繼續, 指針和自動類型強制.
它增加了自動垃圾清理, 使得用Java進行動態編程比用 C 或 C++ 輕易.
不再有mallocs!
它還加了´接口´ 構造, 類似于 Objective C 的概念, 經常用于通過答應method調用語法是"繼續的"來彌補多重繼續的缺少帶來的不便.
結果因為它類似于C++, 用戶會比較熟悉, 便于編程.
這樣做的另一個結果是使得內核變得很小, 適用于消費者電子設備. 基本解釋器(alpha) 為~40Kb, 庫和線索另外需要 175Kb.

Java 特性 -- 面向對象
Java 模型可以看成是 C++ 的一個子集, 帶有一些從Objective_C 中繼續下來的動態元素(方法重載, 垃圾收集).
結構, 聯合和函數被抽象成為Java類的數據和方法(methods) -- Java 比較簡單!
Java模型的優點不僅在于簡單還在于和系統相關的類庫的擴充 (大約 250 個公共庫在alpha 和 beta 版中發布).
Java 類也在Web 嵌入模型中起到通訊單元的作用. Applet 類通過Html的applet標記中的名字標識自己. Applet 下載出現在applet源程序中的其它類. 因此, Java 類名字起到分布式Java代碼數據庫的地址模式的作用.

Java 特性 --結構中立
C/C++ 在異構網絡環境下編程需要使用和兼容多個平臺和相應的編譯器. 這個問題在 Java中通過稱為bytecode(或opcode)的獨立于平臺的二進制描述解釋的設計而解決了.
Java 編譯器(用 Java 寫成的, 平臺獨立) 讀取 Java 源程序生成Java bytecode. 這些 bytecodes 根據瀏覽器的要求被送到客戶端的機器上.
每個客戶機器必須運行 Java 解釋器, 它完成 Java bytecode的解釋執行. Java 解釋器是用POSIX的ANSI C編寫的, 需要送到每個單獨的平臺下面進行一次常規的編譯.
一旦解釋器就緒, 應用程序開發者不必關心任何平臺說明和區別不同的本地編譯器.

Java 特性 -- 可移動
Java 語言提供了一個統一的抽象 (虛擬) 機器模型, 對所有的平臺是一致的.
SUN 擁有 Java 虛擬機 -- 它是通用的, 而任何用戶可以增加它的類
不同于在 C/C++ 中需要手工為不同的整數匹配到物理機器的結構上, Java byte, char short, int 和 long 的大小始終是一樣的, 分別等于 8, 16, 16(unicode), 32 和 64 位.
沒有頭文件, 預處理程序,#define 等.
浮點數總是IEEE 754
特定窗口環境的區別的說明 (X Windows, MS Windows, Macintosh) 根據抽象窗口工具 Abstract Windowing Toolkit (AWT) 消除掉了.
AWT 是由 ~60 Java 類(alpha)寫成的, 它提供了一個通用的 GUI 編程模型, 可以在 UNIX, PC 和 Mac 上移動, 由Java解釋器自動翻譯成本地平臺的窗口系統.

Java 特性 -- 部分解釋
Java 代表了完全編譯 (如 C/C++) 和完全解釋 (如 Smalltalk 或者 Perl) 之間的一種折衷方案.
Java "編譯器" 生成一種二進制 bytecode 輸出, 它是可移動的, 比特定機器實際所需的二進制代碼要小得多 .
Java "解釋器" 執行這個 bytecode , 因此動態性比象Perl這樣的解釋器小 (后者內部實現一個等價的 bytecode 構造, 當閱讀程序源碼時 on-the-fly).
通常地, 編輯過程是: a) 時間消費和 b) 平臺說明. 因此, 解釋器用于促進 a) 快速原型化和/或 b) 可移動性. Java 模型主要考慮平臺獨立性但是效率也是適當的因為Java 編譯器比較快, 生成簡潔的 bytecode 輸出.

Java 特性 -- 分布式
流行的 TCP/ip 為基礎的協議如 FTP 或 HTTP 是根據網絡協議類來支持的. 這方便了各種形式的分布式處理. 新的協議 (如 PVM ) 可以增加和動態安裝.
Java 的分布式計算模型主要是客戶-服務器, Java 編譯器在服務器一方預備 opcodes, Java 解釋器在客戶一方執行它.
用戶可以期待用服務器和客戶的Java線索互相通訊實現更多的動態使用.

Java 特性 -- 魯棒性
Java 增強了編譯時的類型檢查, 消除了 C/C++ 在這方面的一些錯誤.
指針算法被完全放棄, 這樣是為了運行時檢查數組下標和增強了Java模型的安全性.
始終要求顯式說明, 即 C 類型的隱式說明被放棄. 這樣使得Java 編譯器可以完成早期的錯誤檢查.
Java中快速原型化(prototyping )不如 Javascript,Lisp, Tcl, Smalltalk 或 Perl, 但是Java的軟件質量保證比這些更加動態和 ´寬大的´ 語言要好.

Java 特性 -- (希望的) 安全性
Java 二進制代碼在網絡中傳送, 在客戶機器上執行. 因此安全性是一個至關重要的問題, 在Java中得到著力加強.
Java 有它自己的已安全方式設計的網絡類
C++ 模型的修改如去掉指針算法和強制類型轉換主要是基于安全要求的考慮.
多數病毒是基于對私用的/保護的計算機存儲器的訪問實現的, 這在Java中是不可能的.
Java opcode 是由Java解釋器在客戶一端獨占的虛擬存儲器中執行的. 因此除非Java解釋器自己存在安全漏洞, 否則模塊是安全的, 用戶無法通過不正確地或者惡意地編寫applet產生安全漏洞.
穿過網絡發送的 bytecode在客戶端被檢驗, 阻止惡意/錯誤的類引發問題

Java 特性 -- 高性能
Java 解釋器完成Java bytecode的on-the-fly runtime 執行, 獲得了滿足的性能.
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中生成與本地機器相關的代碼, 作為中級編譯器形式來看, 這一點滿足了對性能要求較高的應用程序.
從Jave bytecode中生成的機器代碼的性能與同樣平臺下的典型的 C/C++ 編譯器提供的性能相當.
這里的一些概念實際上和 OSF/ANDF 相似. 使用 ANDF 術語的話, 我們可以稱 Java 編譯器為 ´生產者producer´, 這里討論的機器代碼生成器是一個 ´安裝者installer´. 缺省情況下 Java 的工作模式不使用 installer 而是直接解釋中級代碼形式 (這種方式在 ANDF 中是用 GAI -- Generalized ANDF Interpreter支持的).
ANDF 模型在原理上可以應用到所有的語言上. Java/HotJava 系統為Java語言實現了 ANDF 概念.

Java 特性 -- 多線索
Java 模型提供優先權多線索, 在Thread類上面執行. 線索方法基于C.A.R. Hoare的監視者和條件變量變化表提供一套時間同步原語. Java 線索從Xerox Park的先驅性的Cedar/Mesa系統(它創造了Macintosh和面向對象程序設計)中繼續了一些特性.
Java 多線索在applet 編程中的一個典型應用是有幾個獨立但又相互關聯的情況的模擬 (例如各種排序算法的), 它們同時在一個applet窗口中運行. 多線索還內部用于 HotJava 瀏覽器, 處理多個動態文檔.
另一個有趣的應用領域是多-HotJava 環境的情況, 例如合作實驗室或游戲
Java 線索內置的點對點通訊原語. 各種線索的通訊環境可以通過線索和網絡協議對象的聯合來提供.

Java 特性 -- It 動態性
Java 模型比C++的動態性要好, 接近于Smalltalk 或 Perl.
在父類實現被更新后, 子類不需要重新編譯.
類有runtime 陳述(按照Class類實現), 它答應用戶在運行時察看一個給定對象實例的類型 (在 C 中假如指針是指向整數或瀏覽器則無法知道)
C++ 有 "脆弱父類" 問題, 假如改變了父類或引用的類中的任意內容(方法/實例變量), 必須重新編譯子類. Java 在運行時解決類的引用, 解決了這個問題.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 馆陶县| 丰顺县| 当雄县| 荥阳市| 额尔古纳市| 石景山区| 南宫市| 丹阳市| 平南县| 礼泉县| 县级市| 西昌市| 平顶山市| 建德市| 鲜城| 景德镇市| 莱州市| 荔波县| 大厂| 庄浪县| 陵川县| 若尔盖县| 吴桥县| 昂仁县| 拜城县| 和田市| 卢氏县| 湖州市| 浦东新区| 德保县| 永和县| 龙里县| 同德县| 蓬安县| 砀山县| 福州市| 皮山县| 宣化县| 赤水市| 新巴尔虎左旗| 沈阳市|