?? ways-to-java-study.txt
字號:
Q:從文件系統(tǒng)和從網(wǎng)絡(luò)載入小程序有何區(qū)別?
A:Java系統(tǒng)裝載小程序有兩種不同的方式。裝載的方式影響小程序被允許做什么。
如果一個小程序從網(wǎng)絡(luò)裝載,那么它是通過小程序裝載器載入的,并且受到小程序安全管理器增強限制的約束。
如果一個小程序位于客戶機的本地磁盤,并且位于客戶機的CLASSPATH目錄,那么它是通過文件系統(tǒng)裝載的。最重要的區(qū)別是通過文件系統(tǒng)裝載的小程序可以讀寫文件,可以裝載客戶機的類庫,可以執(zhí)行進程,可以退出虛擬機,并且不需要通過字節(jié)碼校驗。支持Java的瀏覽器使用小程序類裝載器載入指定地址類似為file:URLs的小程序。因此,類裝載器增加的限制和保護以及與之相關(guān)的安全管理器影響通過file:URLs裝載的小程序。
這意味著如果你指定這樣的地址:
Location: file:/home/me/public_html/something.html
并且文件something.html 包含一個小程序,瀏覽器將使用小程序類裝載器裝載該小程序。
Q:每次我訪問一個小程序的時候,瀏覽器總是重新下載所有相關(guān)的類文件。
我想使用緩存的副本如果它們沒有被修改,而不是一次又一次的重復(fù)下載……
A:請使用標(biāo)簽:
<PARAM NAME = “cache_archive” VALUE = xx.jar,yy.jar,zz.jar“>
Q:怎樣在Netscape的Java控制臺中提高調(diào)試信息顯示的級別?
A:當(dāng)Java控制臺被激活時,鍵入0~9之間的一個數(shù)字:0 = No Information, 9 = Maximum Information
Q:我的小程序非常大當(dāng)網(wǎng)絡(luò)很慢時裝載時間很長,有沒有什么辦法減少啟動時間?
A:較好的解決方案是建立一個僅包含啟動小程序必備部分(初始化GUI元素)的core.jar文件,當(dāng)小程序開始運行時剩余的類文件可以稍后裝載。沒有人會直接使用100%的功能并且給人一切都已準(zhǔn)備好的印象……
這個方案比較好也有另外的原因。如果瀏覽器在裝載大的jar文件時丟失連接,你將不得不重新下載所有文件。如果采用了我們的方案,瀏覽器將緩存一部分類文件,可以節(jié)省重新裝載的時間。
通常你不需要立即使用小程序的所有功能,所以它可以在所有可能的功能裝載完畢之前就生效。事實上,許多瀏覽器都會緩存jar文件和class文件。
Q:我寫了第一個小程序但是它非常大,雖然是一個小程序看起來卻像一個巨大的Java應(yīng)用程序。你能告訴我對于減小小程序的大小什么是最重要的嗎?
A:1 使用編譯器優(yōu)化:javac –O 但是無論如何請檢查它的大小。有時它反而會使文件變大。
使用jar文件替代class文件。
試著盡可能多的使用繼承:使更多的代碼能夠重用,而不是重新寫。
試著使用標(biāo)準(zhǔn)API,通常它們比外來包在大小上更優(yōu)。當(dāng)然它們通常也有更好的方法等等。
使用短名字。
不要初始化大的數(shù)組,因為它們將被初始化并且直接進入字節(jié)碼,你可以在稍后做得更好。
Q:為什么當(dāng)我運行小程序的時候得到這樣的消息”wrong magic number(錯誤的魔數(shù))”?什么是魔數(shù)?
A:第一個是JVM給出的,當(dāng)JVM裝載一個類是它會檢查類的前四個字節(jié)(16進制):CA FE BA BE。這就是魔數(shù),這就是為什么你遇到那樣的錯誤,因為你試著裝載的根本不是一個類文件,JVM的類裝載器拋出了那個異常。
確保你將類文件存儲為二進制格式,而不是文本或ASCII模式。
瀏覽器的出錯提示“cannot start applet … bad magic number”通常意味著服務(wù)器上的某個類文件是損壞的。
這時請?zhí)鎿Qweb服務(wù)器上的二進制類文件,清空瀏覽器緩存,重新裝載小程序。
Q:我遇到了Socket類的問題。我在小程序內(nèi)部使用這個類(我寫了一個小的聊天室),我的代碼如下:
Socket s = new Socket(“192.168.0.4”,13780);
當(dāng)我連接的服務(wù)器和客戶機在同一個機器上時,它工作的很好。當(dāng)服務(wù)器在另一個機器上時,Netscape和IE都給出了如下的錯誤信息:
Security: Can’t connect to 192.168.0.4 with origin
請問怎樣解決?
A:小程序的標(biāo)準(zhǔn)安全概念是沙盤(sandbox)。小程序與它的內(nèi)存空間以外的地方“交談”,不能和其它的文件“交談”,也不能與因特網(wǎng)上的任何事物“交談”,除了它所在的同一機器上的“父”網(wǎng)頁。所以你的小程序不能連接192.168.0.4,除非這個網(wǎng)頁來自于192.168.0.4。
Q:怎樣查看在IE中運行的Java小程序的錯誤輸出?
A:這個文件 \Java\Javalog.txt包含了IE中最后一次運行的小程序的信息當(dāng)IE的Java日志功能啟用時,所有的System.out消息和異常信息都會記錄在此。要啟用IE的Java日志功能請打開IE,選擇:查看—選項—高級,選擇“啟用Java日志”,點擊確定,重新啟動IE即可。
在NT4中,這個文件位于C:\WINNT\Java。
Q:有什么辦法可以減少下載小程序所花的時間?
A:有一個辦法可以減少下載時間,將任何涉及小程序的類放在jar文件中。使用與下面類似的小程序標(biāo)簽的ARCHIVE選項:
<applet code=”xyz.class” archive=”pqr.jar” with=100 height=100></applet>
Q:當(dāng)我重新載入我的小程序時我的隱藏界面直接顯示出來了,為什么?
A:將 mycanvas.setVisible (false); 放在Start()部分而不是init()部分。
Q:我想打印小程序生存期內(nèi)的所有調(diào)試信息,有什么簡單的辦法可以做到嗎?
我是一個Java的初學(xué)者。現(xiàn)在我正在做一個小程序,我想向瀏覽器窗口寫入信息以便調(diào)試,例如跟蹤小程序的執(zhí)行。就像我開發(fā)C++程序時經(jīng)常使用大量的“cout”來檢查值和程序行為。Java小程序有沒有簡單辦法做到這些呢?對于我來說,好像所有的問題都出在一個叫作“paint(graphics g)”的函數(shù)上,而這個函數(shù)只在小程序開始時調(diào)用。我想打印小程序整個生存期的文本信息,又沒有簡單的辦法?
A:你最好像這樣做:
System.out.println(“the value is ” + whateverValue);
這個將會顯示在Java控制臺,在IE5中查看,選擇 查看—Java控制臺,就會彈出Java控制臺窗口。
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -