1.簡(jiǎn)單性
java語(yǔ)法是c++語(yǔ)法的一個(gè)“純凈”版本,沒(méi)有頭文件、指針運(yùn)算(甚至是指針語(yǔ)法)、結(jié)構(gòu)、聯(lián)合、操作符重載、虛基類等
2.面向?qū)ο?/p>
封裝、繼承(Java中類是單繼承,接口可以多繼承,類可以實(shí)現(xiàn)多接口)、多態(tài)
3.分布式
Java有一個(gè)豐富的例程庫(kù),用于處理像HTTP和FTP之類的TCP/IP協(xié)議。Java應(yīng)用程序能夠通過(guò)URL打開和訪問(wèn)網(wǎng)絡(luò)上的對(duì)象,其便捷程度就好像在訪問(wèn)本地文件一樣
4.健壯性
Java編譯器能夠檢測(cè)許多在其他語(yǔ)言中僅在運(yùn)行時(shí)才能夠檢測(cè)出來(lái)的問(wèn)題,Java和C++最大的不同在于Java采用的指針模型可以消除重寫內(nèi)存和損壞數(shù)據(jù)的可能性。
5.安全性
Java適用于網(wǎng)絡(luò)/分布式環(huán)境,為了達(dá)到這個(gè)目標(biāo),一開始Java就設(shè)計(jì)成能夠防范各種攻擊,其中包括:
運(yùn)行時(shí)堆棧溢出。如蠕蟲和病毒常用的攻擊手段
破壞自己的進(jìn)程空間之外的內(nèi)存
未經(jīng)授權(quán)讀寫文件
6.體系結(jié)構(gòu)中立
編譯器生成一個(gè)體系結(jié)構(gòu)中立的目標(biāo)文件格式,這是一種編譯過(guò)的代碼,只要有Java運(yùn)行時(shí)系統(tǒng),這些編譯后的代碼可以在許多處理器上運(yùn)行。Java編譯器通過(guò)生成與特定計(jì)算機(jī)體系結(jié)構(gòu)無(wú)關(guān)的字節(jié)碼指令來(lái)實(shí)現(xiàn)這一特性。
7.可移植性
源代碼可移植性
在Java中,數(shù)據(jù)類型具有固定的大小,這消除了代碼移植時(shí)的主要問(wèn)題。二進(jìn)制數(shù)據(jù)以固定的格式進(jìn)行存儲(chǔ)和傳輸,相處了字節(jié)順序的困擾。字符串使用標(biāo)準(zhǔn)的Unicode格式存儲(chǔ)的。
8.CPU可移植性
通過(guò)JVM提供一個(gè)虛擬CPU來(lái)實(shí)現(xiàn)
操作系統(tǒng)的可移植性
Java庫(kù)函數(shù)提供了一個(gè)虛擬的GUI環(huán)境來(lái)實(shí)現(xiàn)
9.解釋型
Java解釋器可以在任何移植了解釋器的機(jī)器上執(zhí)行Java字節(jié)碼
多線程(重點(diǎn))
10.動(dòng)態(tài)性
Java相較于C和C++更具動(dòng)態(tài)性,能夠適應(yīng)不斷發(fā)展的環(huán)境。庫(kù)中可以自由地添加新方法和實(shí)例變量,而對(duì)客戶端卻沒(méi)有任何影響。