JAVA安全基礎(chǔ)簡(jiǎn)介

字號(hào):

一、Java簡(jiǎn)介
    Java是由美國(guó)Sun Microsystem,Inc.開發(fā)出來的一種面向?qū)ο蟮恼Z(yǔ)言,它已經(jīng)廣泛用于Internet 上以完成一些HTML無(wú)法完成的功能。Java有簡(jiǎn)單、穩(wěn)定、安全、界面友善等幾大特點(diǎn),而且對(duì)于UNIX,Macintosh或者PC機(jī)都能使用,這就是為什么Java如此受歡迎的原因了,Java是由C++衍生過來的,它的風(fēng)格和C++很相似,不過就和C++相比就簡(jiǎn)單得多 。Java由于其指令和結(jié)構(gòu)都是十分嚴(yán)謹(jǐn)?shù)?,而且是專門為不同環(huán)境些執(zhí)行所設(shè)計(jì),所以Java編寫的程序遠(yuǎn)比C++要穩(wěn)定,而且改錯(cuò)也比較容易。在網(wǎng)絡(luò)上執(zhí)行程序時(shí),Java對(duì)安全性的保障具有非常嚴(yán)格的控制,尤其是對(duì)用戶端安全的保護(hù)以及規(guī)定都有詳盡而嚴(yán)格的規(guī)定。
    二、Java的特點(diǎn)
    Java在運(yùn)行機(jī)理上和C++很相似,但是兩者也有很多差異:
    1、Java不支持結(jié)構(gòu)和指針;在C/C++中,最靈活也是最頭疼的東東就是指針(一說到這個(gè)玩意我就全身發(fā)冷),但是在JAVA中,為了保持它的平臺(tái)無(wú)關(guān)性,Java取消了指針。
    2、自動(dòng)內(nèi)存管理和線索控制。在C和C++中,內(nèi)存必須用free、 malloc和其它許多內(nèi)存管理標(biāo)準(zhǔn)庫(kù)管理。因此,系統(tǒng)要了解何時(shí)分配、釋放內(nèi)存并且跟蹤所有的內(nèi)存使用情況是非常困難的。如果要在C和C++中實(shí)現(xiàn)線索功能,必須使用一個(gè)可對(duì)線索進(jìn)行各種控制的類庫(kù)。而在Java中,盡管線索仍然需要類的支持,但系統(tǒng)卻在語(yǔ)言級(jí)包括了線索同步機(jī)制。
    3、Java具有內(nèi)嵌的內(nèi)存管理程序。一旦創(chuàng)建了一個(gè)對(duì)象,Java的運(yùn)行系統(tǒng)就開始跟蹤這個(gè)對(duì)象,直到不再需要跟蹤該對(duì)象的所有引用為止。當(dāng)某個(gè)對(duì)象不存在相應(yīng)的引用時(shí),Java把這個(gè)對(duì)象放到一個(gè)用于垃圾搜集的棧內(nèi)。為在性能損失最小的情況下提供自動(dòng)垃圾搜集機(jī)制,這個(gè)垃圾搜集程序?qū)⒃诤笈_(tái)或作為低優(yōu)先級(jí)線索運(yùn)行。這樣,Java的垃圾搜集軟件將在前臺(tái)線索的執(zhí)行期間抽空?qǐng)?zhí)行,或者在系統(tǒng)顯式提出需要使用那些被已經(jīng)死亡的類所占用的內(nèi)存空間時(shí)執(zhí)行。
    從后臺(tái)內(nèi)存管理程序可以很明顯地看出,多線索的確可以增強(qiáng)Java環(huán)境的相對(duì)性能。鑒于多線索的重要性,Java在語(yǔ)言級(jí)提供了線索同步機(jī)制,使多線索成為一種內(nèi)嵌特性。Java 語(yǔ)言支持針對(duì)方法的同步修飾符,并通過該修飾符來指明線索的運(yùn)行順序。此外,Java還能控制方法與實(shí)例變量的相互作用機(jī)制,確保了各方法之間在修改數(shù)據(jù)時(shí)不會(huì)產(chǎn)生沖突。
    Java的內(nèi)存管理和線索支持還具有使Java語(yǔ)言簡(jiǎn)單化的作用。正是由于把內(nèi)存管理任務(wù)嵌入到了Java環(huán)境,Java語(yǔ)言才可以取消指針數(shù)據(jù)類型、malloc和free函數(shù)。這樣,程序員就可以把更多的時(shí)間化在真正的編程工作上,而不是去跟蹤調(diào)試與內(nèi)存使用相關(guān)的程序錯(cuò)誤。正是由于其多線索機(jī)制,Java才可以為一個(gè)可移植的解釋系統(tǒng)提供較高的性能。
    4、Java的編譯和C/C++大有不同,C/C++的編譯器是將源代碼編譯成某種處理器所能處理的機(jī)器碼,而Java編譯器只是將它編譯成一種臨時(shí)代碼,稱為字節(jié)碼或虛擬機(jī)代碼,通過文件.class進(jìn)行存儲(chǔ),運(yùn)行時(shí)通過Java虛擬機(jī)運(yùn)行,而不基于任何特定處理器。