国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Java與JavaScript的通信lixiaolong3456

2019-11-18 13:27:27
字體:
來源:轉載
供稿:網(wǎng)友

  lixiaolong3456(翻譯
  
  文/ Jeremiah Talkar
  
  信任
  
  1. 聊天演示程序內(nèi)在的想法,連同這篇文章一起都是我自己的。我所見過的所有聊天程序不是完全基于java就是Html。我的方法是這兩種方法的一個很好的平衡。
  
  2. 我通過在Netscape開發(fā)者站點閱讀大量的文章后收集了在JAVA和javascript間通信的技術信息。
  
  3. 我第一次在讀Danny Goodman的文章時(The Javascript Apostle on the Netscape site)偶然碰到術語“不知名的applet(Faceless applet)”。因此出于對Danny的信任我使用了這個非常切題的術語。
  
  放棄
  
  1. 這篇文章中討論的技術已經(jīng)在windows 2000 PRofessional機器上使用Internet EXPlorer 5.0和 Netscape Navigator 4.7測試過了。在我所知道的最佳作品中,這些技術應該在任一瀏覽器4.0以上的版本上運行,但我不能保證我這樣做,因為我沒有時間用這些版本將它測試出來。
  
  2. 因為JAVASCRIPT是唯一一種在兩種主要瀏覽器都得到支持的語言,所有的腳本代碼使用這種語言。我先前在http://www.ncompasslabs.com上使用了一個可用的商業(yè)插件,這個插件可以讓Netscape Navigator支持VBScript,但我去他們的站點核實這個信息的時候,這個產(chǎn)品已經(jīng)沒有列出了。
  
  引言
  
  我一直從事現(xiàn)代COM的工作兩年了,現(xiàn)在是我公司的e化商業(yè)產(chǎn)品團隊的技術領導。我明白好的界面設計和在不同環(huán)境像Visual C++, Visual Basic 還有腳本下都能很好執(zhí)行程序的重要性。基于界面的程序設計的能力在我的頭腦中已經(jīng)永遠確立,并且作為一個軟件工程師我試著將它應用到我所涉及的每件事情中。
  
  在過去的一年里,當asp+腳本就要被當作這些對象的黏合劑使用的時候,經(jīng)驗告訴我們的勤奮:所有的商業(yè)邏輯應該被壓縮在COM對象之內(nèi)。設計和開發(fā)典型的基礎設施和商業(yè)對象要求一個更高的技術設備,它用來比較什么是要求實際使用同一個事物的。開發(fā)這些對象的首選環(huán)境(至少在我的團隊中)是Visual C++ / ATL / STL。微軟也鼓勵Visual Basic成為這些對象可選擇的開發(fā)環(huán)境。
  
  這些對象被代表性的稱為“不知名的”,因為他們實現(xiàn)許多邏輯但用戶界面除外。它的表現(xiàn)層次(presentation tier)不是一個充足的客戶就是一個不充足的客戶(這個客戶有從最終用戶表達信息和聚集信息的邏輯)。然后這樣的一個客戶用這些信息通過使用不知名的對象做一些有意義的事情。這整個想法是當商業(yè)對象改變不頻繁時表現(xiàn)層次會代表性的要求許多客戶定制。表現(xiàn)層次要求的改變也可以通過使用較少的經(jīng)驗程序來實現(xiàn)。
  
  應用這些相同的原理到瀏覽器環(huán)境,當使用一種腳本語言處理表現(xiàn)方面時,在“不知名的”二進制模塊中壓縮高度發(fā)展的客戶方的邏輯看起來是合乎邏輯的。在Windows平臺上這些模塊的選項是Java applet和ActiveX 控件/服務器。這篇文章的焦點是使用Java applet完成這個目標,因為applet是獨立于瀏覽器,平臺和處理器的(對大部分而言)。
  
  Applet的簡短歷史
  
  SUN Microsystems1995年在嘹亮的號角聲中引入了Java applet。Applet立即博得WEB世界的歡心,因為它們增加了在原來是一個靜態(tài)HTML的世界的瀏覽器中動態(tài)地顯示W(wǎng)EB內(nèi)容的能力。
  
  在最初的日子里,使用Java applet作為最好的一種在網(wǎng)頁中增加動態(tài)內(nèi)容的方式出現(xiàn)了。最初Microsoft 試圖使用他們的ActiveX Control技術反對SUN提供的Java applet,但是在網(wǎng)頁內(nèi)部使用控件存在兩個主要問題:
  
  ● 二進制模塊是處理器指定的,因此不適合作為網(wǎng)頁的一部分運行。萬維網(wǎng)(World Wide Web)如此成功的一個主要原因是使用W3C標準HTML寫出的大部分網(wǎng)頁對瀏覽器和處理器是不可知的事實。ActiveX控件正好不符合這個范例。
  
  ● 安全是一個大問題,因為控件編寫者有足夠的權利在客戶機器上存取資源。簽了名的控件答應任何一個人查看網(wǎng)頁并聰明地作出是否應該在他/她的機器上下載一個特定控件的決定,但是所有他進行的是一個按鈕意外的點擊(或者是興奮地忽略),這樣就留下了易受攻擊的客戶機,這也正符合惡意控件編寫者的意圖。
  
  當動態(tài)HTML終于開始成型時,事情徹底地改變了。文檔對象模型(Document Object Model )作為可以設計的組件,它們用它們自己的屬性和方法揭露了網(wǎng)頁元素。即使Internet Explorer和Netscape Navigator瀏覽器執(zhí)行動態(tài)HTML有許多不同,但使用腳本代碼程序化的改變顯示頁內(nèi)容本身的根本主題就是是一個巨大的成功。Applet忽然開始看起來是又舊又粗糙的。W3C對動態(tài)HTML的認可最終對高度發(fā)展的,動態(tài)網(wǎng)頁的新種類調(diào)整了語氣。
  
  在瀏覽器內(nèi)是使用Java applet有以下列出的幾種優(yōu)點:
  
  ● Applet(對大多數(shù)Applet而言)可以在多瀏覽器,平臺和處理器上工作。
  
  ● JAVA語言是典型的一種強大的概念性語言。
  
  ● JDK有許多典型的且只在高層類庫中創(chuàng)建的有用的類。
  
  ● 技術中已經(jīng)構思了安全,applet只能用默認值在方框中運行。假如它們要打破方框的限制則Applet必須是已經(jīng)簽了名的。
  
  ● Applet可以就發(fā)回用戶化信息,上傳/下載文件等而與網(wǎng)頁服務器取得聯(lián)系。簽了名的applet可以與任何一個服務器聯(lián)系,而不僅僅是一個它們的主機。
  
  ● 通過“查看源文件”選項不能看到applet代碼,因此保護了知識產(chǎn)權。
  
  ● JAVA的.class文件非常小,結果是下載非常快。
  
  使用Java apple的缺點:
  
  ● 在一次瀏覽器對話中,下載applet不是網(wǎng)頁使用它們的第一時間顯示就是網(wǎng)頁隨后刷新后顯示。Applet在瀏覽器對話中不長駐客戶機。事實上在大多數(shù)場合下這可以作為一種優(yōu)勢考慮。
  
  ● Applet要花很長時間初始化。
  
  ● 因為JAVA的.class文件是被JAVA虛擬機(Java virtual machine ,JVM)解釋的字節(jié)代碼,所以applet運行比本地代碼慢。
  
  ● 一個applet只是瀏覽器上真正狀態(tài)的一部分,它不會無縫完好地出現(xiàn)在網(wǎng)頁內(nèi)容中。層疊樣式單(Cascading style sheets ,CSS)也不會直接影響applet占有的矩形區(qū)域。
  
  ● Netscape Navigator 4.x有十個活動applet的限制。我不知道Internet Explorer 4.0+有任何一種這樣的限制。
  
  使用Java applets的快速回顧
  
  Java applets通過使用用applet標簽被包含進一個HTML網(wǎng)頁中。W3C 站點上HTML 4.01說明書的13.4節(jié)具體地說明了這個標記。它也提到贊成,而不贊成使用這個標記。
  
  一個簡單地包含applet的HTML網(wǎng)頁如下所示:
  
  
  
  Calculator
  
  
  
  
  
  
  
  上例中用到的屬性解釋如下:
  
  Id
  Applet實例的標識符。客戶方腳本代碼能知道使用這個id的applet。
  
  Width
  這個屬性指定了applet顯示域的初始寬度(不包括applet創(chuàng)建的窗口或者對話框)。即使我經(jīng)成功使用了寬度0用 “放棄”一節(jié)中提到的瀏覽器,還是推薦使用值1作為最小的可能寬度。
  
  Height
  這個屬性指定了applet顯示域的初始高度(不包括applet創(chuàng)建的窗口或者對話框)。就像用寬度屬性一樣,推薦使用值1作為最小的可能寬度。
  
  Code
  這個屬性指定了任一類文件(包含applet編譯的applet子類或者能夠得到類的路徑,包括類文件自身)的名字,它在談到applet的codebase時會作出解釋。
  
  Codebase
  這個屬性指定applet的基本URI. 假如這個屬性沒有指定,那么它默認最近的文檔為同一個基本URI。
  
  
  
  只有code, width和height 屬性是必須的。
  
  Param標記包含一對名字的值,它答應applet第一次運行時安裝自己。
  
  在上面的applet調(diào)用一個方法的JAVASCRIPT函數(shù)如下,它非常簡單:
  
  
  勞動力的分工
  
  在這篇文章的引言部分,我暗示當通過JavaScript代碼處理表現(xiàn)形式時,高度發(fā)展的瀏覽器方正處理的一個方法是被壓縮進不知名的Java applets中的。這個方法要求在Java和JavaScript間雙向通信。下面幾章會研究可用的選項。
  
  通過JAVASCRIPT代碼存取Java applet暴露的成員和函數(shù)是直截了當?shù)模裆弦还?jié)中的SetCalculatorMode()函數(shù)說明的一樣。文檔內(nèi)的applet不是通過使用它的Id / Name就是使用applet收集的索引來查詢。
  
  例如:
  
  document.Calculator.SetCalculatorMode(Mode);// or document.applets[0].SetCalculatorMode(Mode);
  
  使用netscape.javascript.JSObject類和netscape.javascript.JSException類完成了其它方向(Java to JavaScript)的通信。為了找到這些類在什么位置,我在我的硬盤驅動器上尋找所有包含字符串“JSObject”的文件。令我吃驚的是,這些文件在許多不同的程序中得到廣泛地使用,包括是Visual Interdev工程一部分的庫。
  
  假如Netscape Navigat

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 斗六市| 左云县| 乐都县| 临夏市| 永和县| 黑山县| 贺兰县| 沛县| 新丰县| 海宁市| 梁河县| 建水县| 墨竹工卡县| 太保市| 当雄县| 迁西县| 三江| 岳池县| 阜阳市| 襄垣县| 蒙山县| 全州县| 东海县| 寿宁县| 南陵县| 朝阳县| 安平县| 沂南县| 遂昌县| 五寨县| 偏关县| 运城市| 浠水县| 海盐县| 邢台市| 浮山县| 息烽县| 平陆县| 临高县| 昔阳县| 唐山市|