1. 程式人生 > >關於Applets

關於Applets

java版本 參數 重載 gpo troy 不同 執行環境 告訴 方法

Applet的基本工作原理
  Applet:
  Applet是一種很重要的java程序,是工作在瀏覽器上的java程序。編寫Applet小程序必須要用到java.applet包中的Applet類,該類是java.awt.Panel類的子類。Applet默認的基本工作原理:編譯好的字節碼文件保存在特定的www服務器上,同一個或另一個服務器上保存著嵌入了該字節碼文件名的html文件。
  當某一個瀏覽器向服務器請求下載嵌入了Applet的html文件時,該文件從服務器上下載到客戶端,由瀏覽器解釋html,當遇到<applet>,表明它嵌有一個Applet,瀏覽器會根據這個Applet的名字和位置自動把字節碼從服務器上下載到本地,並利用瀏覽器本身擁有的java解釋器執行字節碼。
  Applet類:
  Applet程序在結構上必須創建一個用戶類,該類的父類是系統的Applet類。通過這個子類,完成Applet與瀏覽器的配合。
  import java.applet.Applet;
  public class MyApplet extends Applet;
  1、Applet類
  該類存在於java.applet包中,具有的作用:
  1)包容和排列其他的界面元素,如按鈕、文本框等。
  2)響應它所包容範圍內的事件,或把事件向更高層傳遞。
  另外它還有一些與瀏覽器和Applet生命周期有關的方法。
  Applet類的主要方法
  在實際運行Applet中,瀏覽器在下載字節碼的同時,會動創建一個用戶Applet子類的實例,並在適當事件發時自動調用該實例的幾個主要方法:
  init():用來完成主類的初始化工作。字節碼下載後,瀏覽器將創建一個Applet類的實例並調用它從Applet類那裏繼承來的init方法。用戶程序可以重載父類的init方法,定義一些初始化操作。
  start():用來啟動瀏覽器運行Applet的主線程。瀏覽器在調用init()初始化Applet類的實例後,將接著自動調用start()方法,加入當前實例被激活時要實現的功能。
  除了在init初始化後被調用外,start方法在Applet被重新啟動時也會被自動調用:一是用戶使用了Reload操作;二是瀏覽器重新加載,那麽其中的Applet實例就會被重新啟動並調用start方法,但是init方法只能被調用一次。
  paint():在Applet的界面中顯示文字、圖形和其他界面元素。在下列情況下使用paint():
  1)Applet被啟動之後,自動調用paint()來重繪
  2)Applet所在的瀏覽器窗口改變時使用paint重畫界面。
  paint方法有一個Graphics類的對象g作為參數。它用來完成一些較低級的圖形用戶界面操作,當一個Applet類實例被初始化並啟動時,瀏覽器將自動生成一個Graphics類的實例g,並把g作為參數傳遞給Applet的paint方法,就可以繪制Applet的界面。
  stop():當用戶瀏覽其他網頁,或切換到其他應用時,瀏覽器會暫停執行的Applet線程,暫停前首先自動調用stop方法。
  destroy():當用戶退出瀏覽器時,瀏覽器會自動調用Applet實例的destroy方法來完成一些釋放資源、關閉連接等操作。
  HTML 文件參數
  Applet 時需要嵌入在HTML 文件並依賴瀏覽器運行的程序。在HTML 文檔中嵌入Applet 需要使用一組約定好的特殊標記:<applet<</applet>, 至少需要三個參數code,height,width。
  總結,Applet由瀏覽器自動調用的主要方法init(),statr(),stop(),destroy()分別對應了Applet從初始化,啟動,暫停到消亡的生命周期的各個階段。

Applet安全基礎
  Applet被設計為從遠程站點下載然後在本地執行,所以安全問題非常重要。如果用戶在遊覽器中啟用了Java,那麽瀏覽器就會自動下載網頁中的Applet代碼並執行。用戶沒有機會來確認或者停止Applet的運行。基於這樣的原因,與Application應用程序相比,Applet被作了限制。
  Applet的限制執行環境常常稱作“沙箱(sandbox )”。運行在沙箱中的Applet不能更改或探查用戶的系統。
  當運行在沙箱中時:
  (1)Applet不能讀寫本地計算機的文件系統,也不能運行任何本地可執行程序。
  (2)Applet不能同除它們的下載處的服務器(該服務器稱作原始主機)以外的其他任何主機通信。這條規則使得Applet不能探查企業內部網上的資源。
  (3)Applet只能獲取本地計算機中的以下信息:當前使用的Java版本;操作系統的名字和版本;用來分離文件、路徑以及行的字符。除此以外,Applet不能獲取任何其它關於本地計算機的信息。
  (4)Applet彈出的所有窗口都會帶有一警告消息,告訴用戶這是一個Applet。
  因為Java解釋器會檢查所有的危險指令和程序區域,所以一個帶有敵意的Applet不能覆蓋系統內存、改變操作系統賦予的特權或者使計算機崩潰。
  在某些情況下,這些限制顯得過於嚴格。為了充許在不同情況下使用不同的安全級別,Java引入了簽名Applet。
  一個簽名Applet帶有一個能夠表明簽名者特征的證書。加密技術保證了這樣的證書不可能被偽造。如果信任簽名者,那麽可以選擇給該Applet額外的特權。被完全信任的Applet可以獲得同本地應用程序一樣的訪問特權。

關於Applets