Applet简介
Applet是Java中另一類常用的應用程序,與應用程序(Application)由Java解釋器直接執(zhí)行不同,Applet是專門用來在Web頁面中運行的程序,它通常是從服務器下載到用戶的計算機中運行的。它的執(zhí)行效率不受網(wǎng)絡聯(lián)機速率的影響,執(zhí)行時也不會占用網(wǎng)絡帶寬,因此,Applet的應用相當廣泛。
本章將探討如何開發(fā)Java Applet。
15.1? Applet簡介
Applet是一個小型Java應用程序,可以在Applet Viewer或Web瀏覽器內(nèi)執(zhí)行。Applet源文件的擴展名和一般Java應用程序相同,都是.java。編譯過的Applet也是擴展名為.class的類文件,區(qū)別在于該類文件需要在瀏覽器中執(zhí)行。
Java Applet 是用Java語言編寫的一些小的應用程序,這些程序是直接潛入到頁面中,由支持Java的瀏覽器(IE或Netscape)解釋執(zhí)行,能夠產(chǎn)生特殊效果。它可大大提高Web交互能力和動態(tài)執(zhí)行能力。包含JavaApplet的網(wǎng)頁被稱為java-powered頁,也可以稱其為Java支持的網(wǎng)頁。
用戶訪問這樣的網(wǎng)頁時,Applet被下載到本地執(zhí)行,前提是用戶所使用的必須是支持Java的網(wǎng)絡瀏覽器。
Applet小應用程序的實現(xiàn)主要是靠java.Applet包中的Applet類,不同于一般應用程序,它必須嵌入在HTML頁面中才能被解釋執(zhí)行,并且Applet可以從Web頁面中獲得參數(shù),并和Web頁面進行交互。
含有Applet的網(wǎng)頁的HTML中必須帶有<Applet>和</Applet>這樣一對標記,當支持Java的網(wǎng)絡瀏覽器遇到這對標記時就會下載相應的小程序代碼并在本地計算機上執(zhí)行該Applet小程序。
Applet是一種Java的小程序,它通過使用該Applet的HTML文件,由支持Java的網(wǎng)頁瀏覽器下載運行。也可以通過Java開發(fā)工具的AppletViewer來運行。Applet程序離不開使用它的HTML文件。這個HTML文件中關于 Applet的信息至少應包含以下3點:(1)字節(jié)碼文件名(編譯后的Java文件,以.class為后綴);(2)字節(jié)碼文件的地址;(3)在網(wǎng)頁上顯示Applet的方式。
一個HTML文件增加Applet有關的內(nèi)容只是使網(wǎng)頁更加富有生氣,如添加聲音、動畫等這些吸引人的特征,它并不會改變HTML文件中與Applet無關的元素。
15.1.1? Applet基本運作流程
從前一小節(jié)的介紹中可以看到,Applet在執(zhí)行前會通過網(wǎng)絡下載到客戶端,只要客戶端瀏覽器內(nèi)安裝適當?shù)腏ava虛擬機,即可以執(zhí)行下載的Applet。
Applet的基本運作流程如下。
(1)當瀏覽器試圖打開包含Applet的網(wǎng)頁時,會先啟動JVM。
(2)瀏覽器將<Applet>標記所定義的信息傳送給JVM類加載器。
(3)在類加載時會有一個認證機制來檢查欲加載的類是否合法。確認了類是合法之后,Applet才會被執(zhí)行。
15.1.2? Applet的安全機制
由于Applet 是需要通過網(wǎng)絡傳播,并要在被訪問者的機器上執(zhí)行,所以一定要對Applet的執(zhí)行加以限制。Java中的SecurityManage類專門用來防止安全漏洞的出現(xiàn),它能監(jiān)控幾乎所有的虛擬機上的系統(tǒng)級調(diào)用。這種安全防范機制稱為沙箱(sandbox)安全模式。即Java虛擬機為Applet的執(zhí)行提供一個沙箱,如果程序的執(zhí)行一旦試圖離開沙箱,它的運行就會被禁止。
在這種安全模式下,Applet不能在運行中調(diào)用其他程序,不能對文件進行讀寫操作,不能裝載動態(tài)鏈接庫或調(diào)用本地方法,也不能試圖打開非提供Applet的主機以外的某個socket。Applet只能和原來的Web服務器進行數(shù)據(jù)交換,而無法將數(shù)據(jù)傳送到其他計算機。
有了這些嚴格的保護措施,可以將用戶面臨的安全性風險降到最低。
15.1.3? Applet的生命周期
與Applet的生命周期相關的主要方法有init()、start()、stop()和destroy()。
當Applet被下載到瀏覽器上初次運行時,init()方法被調(diào)用來完成數(shù)據(jù)的初始化工作。
接著,start()方法被調(diào)用,各種任務通常都在該方法中執(zhí)行。與init()方法只在下載后執(zhí)行一次不同,start()方法在每次瀏覽器被重新激活時都會被調(diào)用。
stop()方法在每次瀏覽器被最小化或其他窗口被激活時被調(diào)用,停止一些在start()方法中定義的操作。
瀏覽器被關閉時,destroy()方法被調(diào)用來清除分配給Applet的資源。
15.1.4? 開發(fā)Applet的JDK版本
隨著Java技術的發(fā)展,僅是JDK就分為好幾個版本。一些開發(fā)人員偏好以較新的JDK來開發(fā)程序,但是他們往往忽略的一點就是在一般情況下,用戶通常不會自行更新瀏覽器的版本。
因此經(jīng)常會發(fā)生某些人可以正常執(zhí)行Applet,但是其他人卻無法執(zhí)行的問題。針對上述問題,可以從以下兩個方面著手。
(1)要求或協(xié)助公司內(nèi)所有員工的Web瀏覽器必須更新。
(2)如果Applet應用程序可通過Internet存取,可以在網(wǎng)頁內(nèi)加上警告信息,例如“為達到最佳執(zhí)行效果,請確定我們的瀏覽器版本為XXX以上”。
如果遭遇到瀏覽器JDK版本不合的問題,可參考下列幾個解決方案。
(1)使用Java外掛程序(plug-in)。大部分的JDK不相容問題都可以經(jīng)由Java外掛程序來解決。舉例來說,如果Applet使用了Swing程序庫,但是客戶端瀏覽器的JDK版本太舊,無法支持Swing??梢砸罂蛻舳烁聻g覽器版本,或是到網(wǎng)站http://java.sun.com/ products/plugin/尋找適當?shù)耐鈷斐绦颉?/span>
(2)開發(fā)時期所使用的JDK版本盡量與客戶端一致。
(3)使用Java Web Start。Java Web Start是Sun Microsystem公司所研發(fā)的一項新技術。用戶可以在網(wǎng)頁內(nèi)單擊某個鏈接,由此啟動Applet或其他應用程序。這項技術能夠有效解決JDK版本不合的問題,只要客戶端瀏覽器事先安裝Java Web Start外掛程序,就可以正確無誤地執(zhí)行Applet。
總結
- 上一篇: c语言pipe函数,pipe 函数 (C
- 下一篇: 2019矿大软件工程考试记录