




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、SISEJava語言程序設(shè)計(jì)實(shí)用教程Java語言程序設(shè)計(jì)實(shí)用教程SISEJava語言程序設(shè)計(jì)實(shí)用教程第2章 Java的本質(zhì)SISEJava語言程序設(shè)計(jì)實(shí)用教程3本章學(xué)習(xí)要點(diǎn):q理解Java的語言結(jié)構(gòu)q理解變量的含義q掌握J(rèn)ava的詞法規(guī)范q掌握J(rèn)ava的常用保留字q掌握Applet、窗口化應(yīng)用程序的編寫 SISEJava語言程序設(shè)計(jì)實(shí)用教程4簡單回顧一下Java程序的主要執(zhí)行步驟q使用工具編寫Java代碼,Java代碼是由Java語句和聲明組成的純文本文件q文本編輯器:記事本、Wordq專門的IDE工具:Eclipse、Jbuilder、JCreatorq將Java代碼交由Java編譯器進(jìn)行編
2、譯,如使用Javac命令,產(chǎn)生擴(kuò)展名為.java的文件qJava應(yīng)用程序的執(zhí)行,可使用Java命令 SISEJava語言程序設(shè)計(jì)實(shí)用教程程序結(jié)構(gòu)SISEJava語言程序設(shè)計(jì)實(shí)用教程代碼分析之一SISEJava語言程序設(shè)計(jì)實(shí)用教程代碼分析之二SISEJava語言程序設(shè)計(jì)實(shí)用教程8Java語言的組成q標(biāo)識(shí)符 q關(guān)鍵字q分隔符 SISEJava語言程序設(shè)計(jì)實(shí)用教程9標(biāo)識(shí)符q常量、變量、方法、類的名稱常量、變量、方法、類的名稱,以字母、下劃線或以字母、下劃線或$開頭。開頭。q嚴(yán)格區(qū)分大小寫。嚴(yán)格區(qū)分大小寫。Ad、ad、aD是不同的標(biāo)識(shí)符。是不同的標(biāo)識(shí)符。q約定:約定:q 常量用全用大寫字母,并用下劃線
3、分割線單詞、變量用小寫字母開始,類、函數(shù)和接口以大寫常量用全用大寫字母,并用下劃線分割線單詞、變量用小寫字母開始,類、函數(shù)和接口以大寫字母開始。字母開始。q 使用能準(zhǔn)確說明含義的英文描述符,例如:使用能準(zhǔn)確說明含義的英文描述符,例如:firstName,不提倡使用,不提倡使用x1,y1等表達(dá)過于簡單,不等表達(dá)過于簡單,不能表達(dá)出含義的描述符能表達(dá)出含義的描述符q 采用所開發(fā)的軟件系統(tǒng)所在的領(lǐng)域名詞,例如采用所開發(fā)的軟件系統(tǒng)所在的領(lǐng)域名詞,例如client VS customerq 盡量少用縮寫,盡量少用縮寫,Number,nbr、no或者是或者是num;q 避免使用長名字(一般不超避免使用長名
4、字(一般不超15個(gè)字母)個(gè)字母)q 避免使用下劃線作為名字的首末字母避免使用下劃線作為名字的首末字母q 命名風(fēng)格要統(tǒng)一,盡量與所采用的操作系統(tǒng)或開發(fā)工具保持一致,如命名風(fēng)格要統(tǒng)一,盡量與所采用的操作系統(tǒng)或開發(fā)工具保持一致,如Windows“大小寫大小寫”混排,混排,AddChild,而,而UNIX是是“小寫加下劃線小寫加下劃線”,add_childq 程序中不要出現(xiàn)標(biāo)識(shí)符完全相同的局部變量和全局變量程序中不要出現(xiàn)標(biāo)識(shí)符完全相同的局部變量和全局變量q 變量的名字應(yīng)使用變量的名字應(yīng)使用“名詞名詞”或或“形容詞形容詞+名詞名詞”,如:,如:float value, float oldValueq 全
5、局函數(shù)的名字應(yīng)使用全局函數(shù)的名字應(yīng)使用“動(dòng)詞動(dòng)詞”或者或者“動(dòng)詞動(dòng)詞+名詞名詞”,如:,如:DrawBox()q 用正確的反義詞命名具有互斥一樣的變量或者函數(shù)方法:用正確的反義詞命名具有互斥一樣的變量或者函數(shù)方法:minvalue,maxValue,SetValue,GetValueq 盡量避免名字中出現(xiàn)數(shù)字編號(hào):盡量避免名字中出現(xiàn)數(shù)字編號(hào):value1,value2q 全局變量前加前綴全局變量前加前綴g_,表示,表示global,例如:,例如:Int g_howManyPeopleq 類的數(shù)據(jù)成員前加前綴類的數(shù)據(jù)成員前加前綴m_,表示,表示member,例如,例如 Void SetValue
6、(int width,int height) m_width=width; m_height=height; SISEJava語言程序設(shè)計(jì)實(shí)用教程保留關(guān)鍵字(保留關(guān)鍵字( Keywords)q關(guān)鍵字也稱保留字,是Java語言本身使用的標(biāo)識(shí)符,它有其語法含義。 SISEJava語言程序設(shè)計(jì)實(shí)用教程11分隔符q分隔符用來分隔Java程序中的基本元素,有注釋、空白符、和普通分隔符三種。q注釋:先寫注釋后寫代碼,或者邊寫代碼邊寫注釋q/ 單行注釋q/*/ 多行注釋q/*/ 多行注釋(文檔注釋,使用標(biāo)記),可由javadoc程序處理q空白符:空格、回車、換行符、制表符q普通分隔符(6種)() ; , .
7、 SISEJava語言程序設(shè)計(jì)實(shí)用教程12常量 qJava程序運(yùn)行時(shí)值不可修改的量稱為常量,分為字面值(即常數(shù))與標(biāo)識(shí)符常量兩種。q標(biāo)識(shí)符常量實(shí)際上是一個(gè)變量,但它的值一旦初始化以后,就不允許再發(fā)生改變。因此標(biāo)識(shí)符常量要先定義后使用,一般用于給一個(gè)常數(shù)取一個(gè)有意義的名字。q字面值即是Java源程序中表示的常數(shù)值,如12.6、246,false等,表示一個(gè)個(gè)具體的值。q常量在表達(dá)式中用文字串表示,它區(qū)分不同類型,如整型常量123、-15,實(shí)型常量12.1f,字符常量x,布爾常量true,字符串類型常量Test等。SISEJava語言程序設(shè)計(jì)實(shí)用教程13常量的數(shù)字類型 q整數(shù)常量:字節(jié)型(byte
8、)、短整型(short)、整型(int)、長整型(long),在內(nèi)存的存儲(chǔ)長度分別為8位、16位、32位和64位q浮點(diǎn)數(shù)常量:單精度(float)和雙精度(double),在內(nèi)存的存儲(chǔ)長度分別為32位和64位,Java缺省為雙精度,可在浮點(diǎn)數(shù)的后面加f或者F后綴強(qiáng)制轉(zhuǎn)換成單精度,如:float x=10.8fq4和4.0q布爾常量:ture或false,不是1或0q字符常量:采用Unicode字符集,16位表示,是用單引號(hào)括起來的一個(gè)字符,如aSISEJava語言程序設(shè)計(jì)實(shí)用教程Unicode編碼l Java的字符使用16位的Unicode編碼表示,它可以支持世界上所有語言。l 一般計(jì)算機(jī)語言
9、通常使用ASCII碼,用8位表示一個(gè)字符。ASCII碼是Unicode碼的一個(gè)子集,Unicode表示ASCII碼時(shí),其高字節(jié)為0,它是其前255個(gè)字符。l Unicode字符通常用十六進(jìn)制表示。例如:“u0000”“u00ff”表示ASCII碼集。“u”表示轉(zhuǎn)義字符,它用來表示其后4個(gè)十六進(jìn)制數(shù)字是Unicode代碼。 q SISEJava語言程序設(shè)計(jì)實(shí)用教程轉(zhuǎn)義序列 qJava中,字符常量是用單引號(hào)括起來的單個(gè)字符。但在應(yīng)用中可能要用到一些特殊的字符,例如回車符、換行符、單引號(hào)、雙引號(hào)等,對(duì)于這些字符在使用文本編譯器時(shí)就會(huì)遇到問題。此外,某些字符(如單引號(hào)、雙引號(hào))在Java中也有特殊的意
10、義。出于這些原因,Java允許對(duì)特殊的字符使用轉(zhuǎn)義序列。轉(zhuǎn)義序列以反斜杠()開始,后面跟一個(gè)對(duì)編譯器來說有特殊意義的字符。例如:表示單引號(hào),r表示回車,n表示換行SISEJava語言程序設(shè)計(jì)實(shí)用教程16變量變量 l 與常量不同,變量是程序運(yùn)行時(shí)值發(fā)生改變的值,即在程序中不同時(shí)刻可以被賦予不同的值。變量對(duì)應(yīng)著內(nèi)存空間中的一個(gè)或幾個(gè)單元,變量的值就存放在所對(duì)應(yīng)的內(nèi)存單元中。變量名就是給對(duì)應(yīng)的內(nèi)存單元取一個(gè)有意義的名稱,這樣在程序中,可以按變量名稱來區(qū)分和使用這些內(nèi)存單元。變量主要用于保存數(shù)據(jù)輸入、數(shù)據(jù)輸出或中間值。l 變量的定義:int minValue=100; 或 int minValue;
11、mintValue=100;l 變量的作用域 SISEJava語言程序設(shè)計(jì)實(shí)用教程運(yùn)算符和表達(dá)式 q 數(shù)據(jù)的類型除了限定數(shù)據(jù)的存儲(chǔ)方式、取值范圍之外,還定義了對(duì)該數(shù)據(jù)類型可進(jìn)行的操作即運(yùn)算。表示各種不同運(yùn)算的符號(hào)稱為運(yùn)算符,參與運(yùn)算的數(shù)據(jù)稱為操作數(shù)。q 表達(dá)式是由操作數(shù)(如變量,常量等)和運(yùn)算符按一定語法形式組成的一個(gè)有意義的式子。如:a+b、(a+b)*(a-b)。以上都是有意義的表達(dá)式 SISEJava語言程序設(shè)計(jì)實(shí)用教程18程序的格式 q 編寫代碼的不但要做到正確,還要做到可閱讀編寫代碼的不但要做到正確,還要做到可閱讀q使用空行,分隔程序的段落,見使用空行,分隔程序的段落,見P39P39
12、q每行代碼只做一件事情,領(lǐng)會(huì)每行代碼只做一件事情,領(lǐng)會(huì)P39P39風(fēng)格良好和不良風(fēng)格良好和不良的代碼的代碼q代碼行內(nèi)空格,領(lǐng)會(huì)代碼行內(nèi)空格,領(lǐng)會(huì)P40P40例子:例子:q關(guān)鍵字之后要留空格關(guān)鍵字之后要留空格q函數(shù)名之后不要留空格函數(shù)名之后不要留空格q賦值、比較、算術(shù)、邏輯、位域操作符等二元賦值、比較、算術(shù)、邏輯、位域操作符等二元操作符前后要加空格操作符前后要加空格q一元操作符前后不加空格一元操作符前后不加空格q對(duì)齊(見對(duì)齊(見P41P41):):和和應(yīng)獨(dú)占一行且在同應(yīng)獨(dú)占一行且在同一列,如果出現(xiàn)嵌套,則使用縮進(jìn)對(duì)齊一列,如果出現(xiàn)嵌套,則使用縮進(jìn)對(duì)齊q長行拆分:代碼行一般控制在長行拆分:代碼行一
13、般控制在8080個(gè)字符內(nèi),操作符個(gè)字符內(nèi),操作符放在新行之首以突出操作符放在新行之首以突出操作符q類的格式類的格式:(:(1 1)屬性在前,方法在后;)屬性在前,方法在后; (1 1)方)方法在前,屬性在后法在前,屬性在后SISEJava語言程序設(shè)計(jì)實(shí)用教程19總結(jié):良好的代碼編寫 q定義的變量、類名、函數(shù)、方法等要有含義q要寫注釋q代碼的格式要整齊q形成一致的代碼編寫風(fēng)格SISEJava語言程序設(shè)計(jì)實(shí)用教程Java GUI-AWTq SUNSUN的的AWTAWT:JavaJava處理圖形用戶界面的初始途徑。處理圖形用戶界面的初始途徑。q AWTAWT庫處理圖形的基本方法:把這些元素的創(chuàng)建和行
14、為庫處理圖形的基本方法:把這些元素的創(chuàng)建和行為交給目標(biāo)平臺(tái)上的本地交給目標(biāo)平臺(tái)上的本地GUIGUI工具箱進(jìn)行處理。工具箱進(jìn)行處理。q理論上理論上 “ “一次編寫,隨處運(yùn)行一次編寫,隨處運(yùn)行”,實(shí)際上,實(shí)際上,AWTAWT在在不同平臺(tái)上的效果不一致;不同平臺(tái)上的效果不一致;q比如比如WindowsWindows和和LinuxLinux的缺省字體、大小和樣式都不的缺省字體、大小和樣式都不一樣,需要顯示的設(shè)置字體樣式和大小等;在一樣,需要顯示的設(shè)置字體樣式和大小等;在WindowsWindows很好看的布局有可能在很好看的布局有可能在LinuxLinux變得亂七八糟;變得亂七八糟;組件間的間隔因?yàn)槠?/p>
15、臺(tái)的不同而有很多變化。組件間的間隔因?yàn)槠脚_(tái)的不同而有很多變化。q所以有人嘲笑為所以有人嘲笑為 “ “一次編寫,隨處調(diào)試一次編寫,隨處調(diào)試”。qAWTAWT為每一個(gè)組件分配一個(gè)操作系統(tǒng)窗口。大型應(yīng)為每一個(gè)組件分配一個(gè)操作系統(tǒng)窗口。大型應(yīng)用程序中,大量這樣的窗口會(huì)占用大量資源降低系用程序中,大量這樣的窗口會(huì)占用大量資源降低系統(tǒng)性能,稱為重量級(jí)統(tǒng)性能,稱為重量級(jí)(heavyweight)(heavyweight)組件組件SISEJava語言程序設(shè)計(jì)實(shí)用教程Java GUI-SwingqSun與Netscape合作開發(fā)出:SwingqSwing的很多用戶界面元素,如菜單、按鈕等,都是畫在他們的容器中的
16、。q占用更少的系統(tǒng)資源,增加了更多的組件,且允許控制程序的外觀。qSwing并不是完全摒棄AWT,而是一組建立在AWT之上的包,它提供了大量預(yù)建的類import java.awt.*;import javax.swing.*; SISEJava語言程序設(shè)計(jì)實(shí)用教程SWING的類(一)q JApplet:java.lang.Applet的擴(kuò)展版本。q JButton: 按鈕或命令按鈕。q JCheckBox: 復(fù)選框。q JCheckBoxMenuItem: 復(fù)選菜單項(xiàng)。q JComboBox: 組合框。q JComponent: Swing組件的基類。q JDialog: 對(duì)話框窗口的基類。q
17、 JLabel: 標(biāo)簽項(xiàng)。q JList: 列表框。q JMenu: 菜單。q JMenuBar: 菜單條。q JMenuItem: 菜單項(xiàng)。q JPanel: 通用的輕量容器。q JPasswordField: 文本框(用來輸入口令)。SISEJava語言程序設(shè)計(jì)實(shí)用教程SWING的類(二)q JPopupMenu: 彈出式菜單。q JPopupMenu.Separator: 分隔線(彈出式菜單專用)。q JProgressBar: 進(jìn)度條。q JRadioButton: 單選按鈕。q JRadioButtonMenuItem: 單選菜單。q JScrollBar: 滾動(dòng)條。q JTabbe
18、dPane: 標(biāo)簽板。q JTable: 二維表。q JTextArea: 文本域。(多行顯示)q JTextField: 文本行(可編輯)。q JTextPane: 文本板。q JToolBar: 工具欄。q JWindow: 窗口。SISEJava語言程序設(shè)計(jì)實(shí)用教程 Swing圖形用戶界面設(shè)計(jì)概述q 在Java的GUI程序中,需要一個(gè)框架窗口(JFrame),并添加一些部件到該JFrame,但JFrame 不是一個(gè)容器,它只是一個(gè)框架q JFrame 有一個(gè) Content Pane,窗口能顯示的所有組件都是添加在這個(gè) Content Pane 中。JFrame 提供了兩個(gè)方法:getC
19、ontentPane 和 setContentPane 就是用于獲取和設(shè)置其 Content Pane 的。q JFrame的默認(rèn)大小為00并且是不可見的,用setBounds方法設(shè)置框架的大小,setVisible(true)顯示窗口SISEJava語言程序設(shè)計(jì)實(shí)用教程 BorderLayoutq 這是一個(gè)布置容器的邊界布局,它可以對(duì)容器組件進(jìn)行安排,并調(diào)整其大小,使其符合下列五個(gè)區(qū)域:南、北、東、西和中間區(qū)域。每個(gè)區(qū)域最多只能包含一個(gè)組件,并通過相應(yīng)的常量進(jìn)行標(biāo)識(shí):NORTH、SOUTH、EAST、WEST 和 CENTER。當(dāng)使用邊界布局將一個(gè)組件添加到容器中時(shí),要使用這五個(gè)常量之一q
20、Panel p = new Panel();q p.setLayout(new BorderLayout();q p.add(new Button(Okay), BorderLayout.SOUTH);SISEJava語言程序設(shè)計(jì)實(shí)用教程 BorderLayout進(jìn)一步舉例import java.awt.*;import java.applet.Applet; public class buttonDir extends Applet public void init() setLayout(new BorderLayout(); add(new Button(North), BorderLa
21、yout.NORTH); add(new Button(South), BorderLayout.SOUTH); add(new Button(East), BorderLayout.EAST); add(new Button(West), BorderLayout.WEST); add(new Button(Center), BorderLayout.CENTER); SISEJava語言程序設(shè)計(jì)實(shí)用教程27創(chuàng)建Java小程序(Applet) q使用將.class代碼嵌入HTML文件中q客戶端訪問網(wǎng)頁時(shí),Applet小程序會(huì)從Web服務(wù)器上下載到本地,并在瀏覽器里運(yùn)行q本地計(jì)算機(jī)運(yùn)行,可減少
22、Web服務(wù)的負(fù)載,提高系統(tǒng)性能q要求瀏覽器有JRE運(yùn)行環(huán)境qApplet為任何applet小程序的超類,JApplet為Applet類的擴(kuò)展SISEJava語言程序設(shè)計(jì)實(shí)用教程Applet的基本工作原理 SISEJava語言程序設(shè)計(jì)實(shí)用教程Applet的繼承關(guān)系圖SISEJava語言程序設(shè)計(jì)實(shí)用教程Applet基礎(chǔ) qjava.applet包包含有三個(gè)接口:AppletContext接口、AppletStub接口、AudioClip接口及一個(gè)Applet類。qAppletContext接口:提供Applet環(huán)境文件信息,諸如Applet所在的文件有哪些Applet,或是在狀態(tài)欄上顯示信息。qA
23、ppletStub接口:為Applet與瀏覽器環(huán)境的溝通接口。qAudioClip接口:提供音頻的接口,音頻文件必須是AU、AIFF、WAVE、或者M(jìn)IDI格式qJApplet類是在javax.swing包中SISEJava語言程序設(shè)計(jì)實(shí)用教程Applet程序的生命周期q init()init()q該方法用于該方法用于AppletApplet的初始化。當(dāng)?shù)某跏蓟.?dāng)AppletApplet被第一次加被第一次加載時(shí),該方法會(huì)被自動(dòng)調(diào)用。在這個(gè)方法中,可以載時(shí),該方法會(huì)被自動(dòng)調(diào)用。在這個(gè)方法中,可以做一些必要的初始化工作,這些內(nèi)容包括是創(chuàng)建和做一些必要的初始化工作,這些內(nèi)容包括是創(chuàng)建和初始化程序運(yùn)
24、行所需要的對(duì)象實(shí)例,把圖形或字體初始化程序運(yùn)行所需要的對(duì)象實(shí)例,把圖形或字體載入內(nèi)存,處理載入內(nèi)存,處理PARAMPARAM參數(shù)等。參數(shù)等。q Start()Start()q該方法用來啟動(dòng)瀏覽器運(yùn)行該方法用來啟動(dòng)瀏覽器運(yùn)行AppletApplet的主線程。調(diào)用的主線程。調(diào)用init init 方法將方法將AppletApplet的初始化工作完成之后,的初始化工作完成之后,startstart方法會(huì)被自動(dòng)調(diào)用;當(dāng)用戶刷新包含方法會(huì)被自動(dòng)調(diào)用;當(dāng)用戶刷新包含AppletApplet的頁面的頁面或者從其它頁面返回包含或者從其它頁面返回包含AppletApplet的頁面時(shí),的頁面時(shí),startstar
25、t方法也會(huì)被自動(dòng)調(diào)用方法也會(huì)被自動(dòng)調(diào)用q也就是說,也就是說,startstart方法可以被多次調(diào)用,這與方法可以被多次調(diào)用,這與initinit方法是有區(qū)別的。基于這樣的原因,可以把只調(diào)用方法是有區(qū)別的。基于這樣的原因,可以把只調(diào)用一次的代碼放在一次的代碼放在initinit方法中,而不能放在方法中,而不能放在startstart方方法中法中SISEJava語言程序設(shè)計(jì)實(shí)用教程Applet程序的生命周期q stop()stop()q該方法在用戶離開包含該方法在用戶離開包含AppletApplet的頁面時(shí)會(huì)被自動(dòng)調(diào)的頁面時(shí)會(huì)被自動(dòng)調(diào)用。和用。和startstart方法一樣,方法一樣,stopst
26、op方法也可以被多次調(diào)方法也可以被多次調(diào)用。該方法的作用是,當(dāng)用戶離開包含用。該方法的作用是,當(dāng)用戶離開包含AppletApplet的頁的頁面時(shí),停止一些耗費(fèi)系統(tǒng)資源的活動(dòng),如播放動(dòng)畫面時(shí),停止一些耗費(fèi)系統(tǒng)資源的活動(dòng),如播放動(dòng)畫等。如果在等。如果在AppletApplet中沒有動(dòng)畫、音樂文件播放,那中沒有動(dòng)畫、音樂文件播放,那么通常可以不使用這個(gè)方法。么通常可以不使用這個(gè)方法。q destroy()destroy()q當(dāng)用戶正常關(guān)閉瀏覽器時(shí),瀏覽器會(huì)調(diào)用當(dāng)用戶正常關(guān)閉瀏覽器時(shí),瀏覽器會(huì)調(diào)用destroydestroy方法。該方法用于回收系統(tǒng)資源,如回收?qǐng)D形用戶方法。該方法用于回收系統(tǒng)資源,如回
27、收?qǐng)D形用戶界面的系統(tǒng)資源、關(guān)閉連接等。至于界面的系統(tǒng)資源、關(guān)閉連接等。至于AppletApplet實(shí)例本實(shí)例本身,會(huì)由瀏覽器來負(fù)責(zé)從內(nèi)存中清除,不需要在身,會(huì)由瀏覽器來負(fù)責(zé)從內(nèi)存中清除,不需要在destroydestroy方法中來清除。方法中來清除。q 四個(gè)方法四個(gè)方法initinit、startstart、stopstop和和destroydestroy分別對(duì)應(yīng)了分別對(duì)應(yīng)了AppletApplet的初始化、啟動(dòng)、暫停直到消亡的各個(gè)階段。的初始化、啟動(dòng)、暫停直到消亡的各個(gè)階段。 SISEJava語言程序設(shè)計(jì)實(shí)用教程Applet的生命周期和對(duì)應(yīng)的方法 SISEJava語言程序設(shè)計(jì)實(shí)用教程 q A
28、ppletApplet被設(shè)計(jì)為從遠(yuǎn)程站點(diǎn)下載然后在本地執(zhí)行,所以安被設(shè)計(jì)為從遠(yuǎn)程站點(diǎn)下載然后在本地執(zhí)行,所以安全問題非常重要。如果用戶在游覽器中啟用了全問題非常重要。如果用戶在游覽器中啟用了JavaJava,那么瀏覽,那么瀏覽器就會(huì)自動(dòng)下載網(wǎng)頁中的器就會(huì)自動(dòng)下載網(wǎng)頁中的AppletApplet代碼并執(zhí)行。用戶沒有機(jī)會(huì)來代碼并執(zhí)行。用戶沒有機(jī)會(huì)來確 認(rèn) 或 者 停 止確 認(rèn) 或 者 停 止 A p p l e tA p p l e t 的 運(yùn) 行 。 基 于 這 樣 的 原 因 , 與的 運(yùn) 行 。 基 于 這 樣 的 原 因 , 與ApplicationApplication應(yīng)用程序相比,應(yīng)用
29、程序相比, AppletApplet被作了限制。被作了限制。 q AppletApplet的限制執(zhí)行環(huán)境常常稱作的限制執(zhí)行環(huán)境常常稱作“沙箱(沙箱(sandbox sandbox )”。運(yùn)行在沙箱中的運(yùn)行在沙箱中的AppletApplet不能更改或探查用戶的系統(tǒng)。不能更改或探查用戶的系統(tǒng)。q 當(dāng)運(yùn)行在沙箱中時(shí):當(dāng)運(yùn)行在沙箱中時(shí):q (1 1)AppletApplet不能讀寫本地計(jì)算機(jī)的文件系統(tǒng),也不能運(yùn)行不能讀寫本地計(jì)算機(jī)的文件系統(tǒng),也不能運(yùn)行任何本地可執(zhí)行程序。任何本地可執(zhí)行程序。q (2 2)AppletApplet不能同除它們的下載處的服務(wù)器(該服務(wù)器稱不能同除它們的下載處的服務(wù)器(該服
30、務(wù)器稱作原始主機(jī))以外的其他任何主機(jī)通信。這條規(guī)則使得作原始主機(jī))以外的其他任何主機(jī)通信。這條規(guī)則使得AppletApplet不能探查企業(yè)內(nèi)部網(wǎng)上的資源。不能探查企業(yè)內(nèi)部網(wǎng)上的資源。 Applet安全基礎(chǔ)安全基礎(chǔ)SISEJava語言程序設(shè)計(jì)實(shí)用教程q (3 3)AppletApplet只能獲取本地計(jì)算機(jī)中的以下信息:當(dāng)前使只能獲取本地計(jì)算機(jī)中的以下信息:當(dāng)前使用的用的JavaJava版本;操作系統(tǒng)的名字和版本;用來分離文件、路徑版本;操作系統(tǒng)的名字和版本;用來分離文件、路徑以及行的字符。除此以外,以及行的字符。除此以外,AppletApplet不能獲取任何其它關(guān)于本地不能獲取任何其它關(guān)于本地計(jì)
31、算機(jī)的信息。計(jì)算機(jī)的信息。q (4 4)AppletApplet彈出的所有窗口都會(huì)帶有一警告消息,告訴用彈出的所有窗口都會(huì)帶有一警告消息,告訴用戶這是一個(gè)戶這是一個(gè)AppletApplet。 q 因?yàn)橐驗(yàn)镴avaJava解釋器會(huì)檢查所有的危險(xiǎn)指令和程序區(qū)域,所以解釋器會(huì)檢查所有的危險(xiǎn)指令和程序區(qū)域,所以一個(gè)帶有敵意的一個(gè)帶有敵意的AppletApplet不能覆蓋系統(tǒng)內(nèi)存、改變操作系統(tǒng)賦予不能覆蓋系統(tǒng)內(nèi)存、改變操作系統(tǒng)賦予的特權(quán)或者使計(jì)算機(jī)崩潰。的特權(quán)或者使計(jì)算機(jī)崩潰。q 在某些情況下,這些限制顯得過于嚴(yán)格。為了充許在不在某些情況下,這些限制顯得過于嚴(yán)格。為了充許在不同情況下使用不同的安全級(jí)別,
32、同情況下使用不同的安全級(jí)別,JavaJava引入了簽名引入了簽名AppletApplet。q 一個(gè)簽名一個(gè)簽名AppletApplet帶有一個(gè)能夠表明簽名者特征的證書。帶有一個(gè)能夠表明簽名者特征的證書。加密技術(shù)保證了這樣的證書不可能被偽造。如果信任簽名者,加密技術(shù)保證了這樣的證書不可能被偽造。如果信任簽名者,那么可以選擇給該那么可以選擇給該AppletApplet額外的特權(quán)。被完全信任的額外的特權(quán)。被完全信任的AppletApplet可可以獲得同本地應(yīng)用程序一樣的訪問特權(quán)。以獲得同本地應(yīng)用程序一樣的訪問特權(quán)。Applet安全基礎(chǔ)安全基礎(chǔ)SISEJava語言程序設(shè)計(jì)實(shí)用教程AppletApple
33、t與與JARJAR文件文件 q JARJAR文件概述文件概述 q JARJAR(Java ArchiveJava Archive)是一種與平臺(tái)無關(guān)的文檔格式,)是一種與平臺(tái)無關(guān)的文檔格式,一般叫一般叫JavaJava存檔,它相當(dāng)于一種壓縮格式,可以把眾多的文存檔,它相當(dāng)于一種壓縮格式,可以把眾多的文檔合成一個(gè)文件。檔合成一個(gè)文件。q 大多數(shù)的大多數(shù)的AppletApplet都由多個(gè)類組成,使用瀏覽器來瀏覽這都由多個(gè)類組成,使用瀏覽器來瀏覽這樣的樣的AppletApplet時(shí),由于一個(gè)文件需要一個(gè)連接,所以瀏覽器需時(shí),由于一個(gè)文件需要一個(gè)連接,所以瀏覽器需要使用多個(gè)連接,這樣在一個(gè)低速的網(wǎng)絡(luò)上加
34、載一個(gè)要使用多個(gè)連接,這樣在一個(gè)低速的網(wǎng)絡(luò)上加載一個(gè)AppleApple需要好幾分鐘。這里值得注意的是,加載需要好幾分鐘。這里值得注意的是,加載AppleApple需要較長的需要較長的時(shí)間的原因并不是因?yàn)轭愇募螅P(guān)鍵的原因是建立到服時(shí)間的原因并不是因?yàn)轭愇募螅P(guān)鍵的原因是建立到服務(wù)器的連接需要的時(shí)間長。務(wù)器的連接需要的時(shí)間長。q 對(duì)于對(duì)于AppletApplet來說,來說,JARJAR文件可以將多個(gè)需要的類文件合文件可以將多個(gè)需要的類文件合并為一個(gè)單一的文件。這是很有意義的,這樣這些類文件可并為一個(gè)單一的文件。這是很有意義的,這樣這些類文件可以作為一個(gè)整體使用一個(gè)以作為一個(gè)整體使用一個(gè)
35、HTTPHTTP事務(wù)下載到瀏覽器中,從而大事務(wù)下載到瀏覽器中,從而大大提高瀏覽速度。大提高瀏覽速度。SISEJava語言程序設(shè)計(jì)實(shí)用教程 q jarjar命令格式如下:命令格式如下:q jar jar 選項(xiàng)選項(xiàng)1 1 選項(xiàng)選項(xiàng)n n 文件名文件名1 1 文件名文件名22q jarjar命令的選項(xiàng):命令的選項(xiàng):q c c 創(chuàng)建新的存檔創(chuàng)建新的存檔, ,并把文件添加至其中,如果一個(gè)文件名是一并把文件添加至其中,如果一個(gè)文件名是一個(gè)目錄,它將被遞歸處理個(gè)目錄,它將被遞歸處理q t t 列出存檔內(nèi)容的列表列出存檔內(nèi)容的列表q x x 展開存檔中的命名的(或所有的文件展開存檔中的命名的(或所有的文件q
36、u u 更新已存在的存檔更新已存在的存檔q v v 生成詳細(xì)輸出到標(biāo)準(zhǔn)輸出上生成詳細(xì)輸出到標(biāo)準(zhǔn)輸出上q f f 指定存檔文件名指定存檔文件名q m m 包含來自標(biāo)明文件的標(biāo)明信息包含來自標(biāo)明文件的標(biāo)明信息 q 0 0 只存儲(chǔ)方式;未用只存儲(chǔ)方式;未用ZIPZIP壓縮格式壓縮格式q M M 不產(chǎn)生所有項(xiàng)的清單(不產(chǎn)生所有項(xiàng)的清單(manifestmanifest文件文件q i i 為指定的為指定的jarjar文件產(chǎn)生索引信息文件產(chǎn)生索引信息q C C 改變到指定的目錄改變到指定的目錄jar命令命令 SISEJava語言程序設(shè)計(jì)實(shí)用教程 q 在默認(rèn)的情況下,瀏覽器使用瀏覽器的緩存來緩存在默認(rèn)的情況
37、下,瀏覽器使用瀏覽器的緩存來緩存AppletApplet代碼。在這種情況下,如果訪問一個(gè)曾經(jīng)訪問過代碼。在這種情況下,如果訪問一個(gè)曾經(jīng)訪問過的包含了的包含了AppletApplet的站點(diǎn),并且瀏覽器緩存仍然包含所需的站點(diǎn),并且瀏覽器緩存仍然包含所需要的要的JARJAR文件,并且這個(gè)文件,并且這個(gè)JARJAR文件沒有改變,那么這個(gè)文件沒有改變,那么這個(gè)JARJAR文件就不會(huì)被重新下載。文件就不會(huì)被重新下載。q 但是在正常情況下,瀏覽器緩存并不能夠保持足夠但是在正常情況下,瀏覽器緩存并不能夠保持足夠長的時(shí)間。比如,如果每個(gè)月只訪問一次某個(gè)站點(diǎn),那長的時(shí)間。比如,如果每個(gè)月只訪問一次某個(gè)站點(diǎn),那么極
38、有可能每次都要重新下載并刷新緩存。么極有可能每次都要重新下載并刷新緩存。q JavaJava插件支持一種機(jī)制來插件支持一種機(jī)制來“粘滯粘滯”AppletApplet,如果我,如果我們想讓一個(gè)們想讓一個(gè)AppletApplet停留在用戶端的時(shí)間更長,就需要使停留在用戶端的時(shí)間更長,就需要使用用OBJECTOBJECT標(biāo)記來指定標(biāo)記來指定CACHE_OPTIONCACHE_OPTION、CACHE_ARCHIVECACHE_ARCHIVE和和CACHE_VERSIONCACHE_VERSION鍵的值。鍵的值。 q CACHE_VERSIONCACHE_VERSION鍵用來代表鍵用來代表CACHE_
39、ARCHIVECACHE_ARCHIVE列表中指列表中指定的定的JARJAR文件需要的版本號(hào)碼。如果這些版本已經(jīng)在客戶文件需要的版本號(hào)碼。如果這些版本已經(jīng)在客戶機(jī)上,那他們將不必被下載。機(jī)上,那他們將不必被下載。 JAR緩存緩存 SISEJava語言程序設(shè)計(jì)實(shí)用教程APPlET路徑配置問題(一) 在用網(wǎng)頁文件在用網(wǎng)頁文件MyHtml.htmlMyHtml.html打開打開AppletApplet,這里假設(shè)我們要,這里假設(shè)我們要用的文件叫用的文件叫MyApplet.classMyApplet.class的時(shí)候要注意,要將的時(shí)候要注意,要將MyHtml.htmlMyHtml.html文件放在該程序
40、的根目錄下。所謂文件放在該程序的根目錄下。所謂“根目錄根目錄”這里是指這個(gè)目錄應(yīng)當(dāng)包含所有這里是指這個(gè)目錄應(yīng)當(dāng)包含所有AppletApplet里用到的里用到的packagepackage的的目錄。目錄。 先看簡單的情況,如果你的先看簡單的情況,如果你的AppletApplet程序是使用的默認(rèn)包,程序是使用的默認(rèn)包,那么你就把那么你就把MyHtml.htmlMyHtml.html文件和文件和MyApplet.classMyApplet.class文件放在一文件放在一個(gè)目錄里。比如說有個(gè)目錄叫個(gè)目錄里。比如說有個(gè)目錄叫theDirectorytheDirectory,那么,那么MyHtml.htmlMyHtml.html和和MyApplet.classMyApplet.class就都放在這個(gè)里面。這個(gè)時(shí)就都放在這個(gè)里面。這個(gè)時(shí)候只要在候只要在MyHtml.htmlMyHtml.html中加入如下語句就好了:中加入如下語句就好了:MyAppl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- pmp質(zhì)量管理制度
- 財(cái)政重組措施方案(3篇)
- 社區(qū)黨員組織管理制度
- 巡查員安全管理制度
- 交警警車油管理制度
- 公司拆遷審計(jì)方案(3篇)
- 土地拋荒督辦方案(3篇)
- 學(xué)生主體性培養(yǎng)在課堂教學(xué)中的重要性
- 虛擬現(xiàn)實(shí)技術(shù)在不同學(xué)科教學(xué)中的創(chuàng)新應(yīng)用
- 鄉(xiāng)鎮(zhèn)環(huán)衛(wèi)區(qū)域管理制度
- (高清版)DZT 0331-2020 地?zé)豳Y源評(píng)價(jià)方法及估算規(guī)程
- T-CEA 7027-2024 軌道交通用電梯數(shù)據(jù)采集智能分析預(yù)警系統(tǒng)及智慧運(yùn)維大數(shù)據(jù)管理平臺(tái)功能要求
- 得寶松封閉治療
- 低壓配電系統(tǒng)維護(hù)保養(yǎng)及操作規(guī)程
- 肝癌科普講座課件
- 三廢環(huán)保管理培訓(xùn)
- 石膏固定術(shù)課件
- 閑魚開店運(yùn)營計(jì)劃書模板
- 《變壓器保護(hù)培訓(xùn)》課件
- 湖南省長郡中學(xué)、雅禮中學(xué)等四校2024屆數(shù)學(xué)高二下期末調(diào)研試題含解析
- 水上交通行業(yè)安全培訓(xùn)
評(píng)論
0/150
提交評(píng)論