Java咖啡館(11):Java插件技術

2020-12-16 太平洋電腦網

1.Java插件技術

  Java插件技術(Java Plug-in technology)是一個神奇的設計,它架起了時下流行的瀏覽器(包括Internet Explorer,下面簡稱IE,Netscape Navigator,下面簡稱NN以及Mozilla)與Java平臺之間的橋梁。也就是說,只需要一個瀏覽器,它不必內置Java虛擬機(比如與Windows XP捆綁銷售的IE 6),也不必特意安裝Java運行環境,在打開包含Java Applet的網頁時,只要按照瀏覽器提示安裝這個Java插件後便能任意運行Applet了,而這個安裝過程與安裝Macromedia Flash、3721等插件一樣簡單。

  要知道,Java插件技術與我們上回咖啡館中介紹的運行Applet的方法有著本質上的區別。

  在上回Java咖啡館中,我向大家介紹了Applet編寫過程,以及在IE中運行Applet的方法。回憶一下,我們是通過在HTML網頁中嵌入<applet>標籤實現的。實際上,如果你的系統中已經安裝Java運行時環境時,當瀏覽器遇到<applet>標籤時,瀏覽器便會啟動Java虛擬機,從網上下載Applet的class文件後執行它。這種方法有兩個明顯缺點:第一,如果系統中如果沒有Java運行時環境,瀏覽器便會名正言順地怠工,拒絕執行Applet;第二,如果系統中的Java運行時環境版本過低,而Applet又使用了新版本中的新技術,這也將導致Applet運行不正常。

  而Java插件技術可以很好解決這兩個問題。本質上,Java插件技術是藉助瀏覽器的插件機制給客戶端安裝或更新Java運行時環境的技術。目前流行的瀏覽器都有插件機制,比如Mozilla、NN的plug-in技術,IE的ActiveX構件技術。當這些瀏覽器遇到網頁中Java插件標籤時,會自動連接到Sun公司的伺服器下載或者更新Java運行時環境,然後可以運行Applet程序了。省卻了用戶自行安裝Java運行時環境的不便,這真是一個漂亮的實現。

2.通過Java插件技術調用Applet

  Java插件技術不能依靠<applet>標籤調用Applet了,你必須像調用其他NN的插件或者IE的ActiveX構件一樣調用Java插件。

  還是拿例子來說明一下。我們原先的sample.htm網頁是這樣調用Applet的:

<applet code="NewsApplet.class" codebase="." width=480 height=384>
  <param name="from" value="Prince Charming">
  <param name="to" value="Cinderella">
</applet>



  對應於NN的Java插件,需要這麼寫:

<embed type="application/x-java-applet;jpi-version=1.5"
  code="NewsApplet.class"
  width=480
  height=384
  pluginspage = "http://java.sun.com/products/plugin/index.  html#download"
  from="Prince Charming"
  to="Cinderella">
</embed>

 

  而對應於IE的ActiveX構件技術的Java插件,需要這麼寫:

<object classid="clsiD:CAFEEFAC-0015-0000-0000-ABCDEFFEDCBA"
codebase="http://java.sun.com/update/1.5.0/jinstall-1_5_0-Windows-i586.cab#Version=1,5,0,0"
width=480 height=384>
  <param name="code" value="NewsApplet.class">
  <param name = "type" value = "application/x-java-applet;jpi-version=1.5">
  <param name="from" value="Prince Charming">
  <param name="to" value="Cinderella">
</object>

  當然,如果想寫出可以適應所有瀏覽器的調用Java插件的代碼,可以利用NN忽略<object>與<comment> 標籤,以及IE忽略<embed>標籤的事實來個嵌套,類似於

<object ...>
  <comment>
    <embed ...>
    </embed>
  </comment>
</object>



  這樣,無論是IE還是NN都會乖乖執行Applet並且讓王子對灰姑娘說出那一個字了。

3.升級情人節的Applet

  現在是時候把情人節的Applet程序升級一下了,很簡單,惟一要做的就是把原先index.htm代碼中的如下部分進行修改:
...

document.write('<applet code="NewsApplet.class" codebase="."width=480 height=384>');
document.write(' <param name="from" value="' + from + '">');
document.write(' <param name="to" value="' + to + '">');
document.write('</applet>');


...
  修改後的代碼為:
...

document.write('<object classid="clsiD:CAFEEFAC-0015-0000-0000-ABCDEFFEDCBA" codebase="http://java.sun.com/update/1.5.0/jinstall-1_5_0-Windows-i586.cab#Version=1,5,0,0" width=480 height=384>');
document.write('  <param name="code" value="NewsApplet.class">');
document.write('  <param name = "type" value = "application/x-java-applet;jpi-version=1.5">');
document.write('  <param name="from" value="' + from + '">');
document.write('  <param name="to" value="' + to + '">');
document.write('</object>');


...
  注意,為了節約篇幅,這裡僅僅給出了對應IE的ActiveX的代碼。

相關焦點

  • Spring中Spring Java Format插件的作用
    設置到這一點的插件包括:應用包裝和空白約定的源格式化程序一個checkstyle插件,可以強制執行代碼庫的一致性該項目的目的是提供一致性,因此,每個插件通常不可配置。這意味著您需要更改代碼以匹配所需的約定,您無法配置插件約定以匹配您的樣式。根據它的GitHub repo,大多數編碼約定和樣式來自Spring Framework和Spring Boot項目。
  • maven和java版本的對應關係
    除了在Maven插件中將目標版本升級到1.8之外,沒有更改任何代碼.錯誤:無法訪問Versioned.com.fasterxml.jackson.core:jackson-annotations:jar:2.2.2:compile[INFO] | +- org.codehaus.jackson:jackson-core-asl:jar:1.1.0:compile[INFO] | +- org.codehaus.jackson:jackson-jaxrs:jar:1.9.11
  • 給Java新手的一些建議——Java知識點歸納(Java基礎部分)
    JVM作為java運行的基礎,很難相信對於JVM一點都不了解的人可以把java語言吃得很透。我在面試有超過3年Java經驗的開發者的時候, JVM幾乎就是一個必問的問題了。當然JVM不是唯一決定技術能力好壞的面試問題,但是可以佐證java開發能力的高低。
  • Java咖啡館(2)——第一杯咖啡
    現在打開「命令提示符」窗口,隨便進入某個目錄,輸入「java -version」命令,如果看到如圖2所示的結果,說明已經設置正確了。你一定聽過Java技術「一次編寫,隨處運行」的口號吧?與VC、Delphi等語言把源程序編譯成特定平臺的指令集不同,Java編譯器把Java源程序編譯成與平臺無關的字節碼,運行時,由Java解釋器來翻譯成不同平臺的目標代碼後執行。這好比國家領導人在國際大會上用一種語言發言,由若干同聲翻譯分別翻譯成不同的外語,從而「只說一遍,大家明白」。
  • 5款新手常用的java編程工具,有你正在用的嗎?
    文:源碼時代新手如果想成為一名合格的java程式設計師工程師,不但要熟練使用各種框架,而且還有明白框架是如何實現的各種原理,例如像jvm虛擬機的原理,優化,熟練掌握jvm能讓你寫出性能更好的代碼,還有池技術,對象池,線程池等,目前人們對java編程的關注也越來越火熱,很多人對編程有很大的興趣,也想知道有哪些好用的java編程工具
  • 你必須掌握的 21 個 Java 核心技術!
    JVM作為java運行的基礎,很難相信對於JVM一點都不了解的人可以把java語言吃得很透。我在面試有超過3年Java經驗的開發者的時候, JVM幾乎就是一個必問的問題了。當然JVM不是唯一決定技術能力好壞的面試問題,但是可以佐證java開發能力的高低。
  • JAVA應用可視化診斷工具
    相當於可視化的jstat命令監控區域有PS Eden SpacePS Survivor SpacePS Old SpaceMetaspaceCode CacheCompressed Class Space2.線程監控:相當於可視化的jstack命令JHSDB:基於服務性代理的調試工具(java9
  • 九年程式設計師推薦java書籍
    評分排行榜一張圖展示前九名的書籍,其中包含了不同版本的java編程思想,可見java編程思想這本黑皮書的重要性!同時可以從這 9 本書籍當中看出,java開發者關注點主要是在編程思想&設計模式&java虛擬機&jdk這幾個方面,同時也很注重java相關的最佳實踐.
  • 新手學Java編程應該學那些Java基礎知識
    JVM作為java運行的基礎,很難相信對於JVM一點都不了解的人可以把java語言吃得很透。我在面試有超過3年Java經驗的開發者的時候, JVM幾乎就是一個必問的問題了。當然JVM不是唯一決定技術能力好壞的面試問題,但是可以佐證java開發能力的高低。
  • 跟我學java編程—Java while循環語句
    這樣確保了只要num小於等於10,就執行while循環;而當此條件變為假時,即num的值達到11時,就結束此循環。循環體中的第一個語句用num乘以10,將計算結果保存在變量result中。第二個語句輸出乘法表,循環體中的最後一個語句將num的值遞增1,來修改num的值。此處使用了單目自增運算符++,也可以編寫為num=num+1,來替代num++。
  • 如何在Ubuntu 18.04上安裝Oracle Java SE 11
    現在安裝Oracle JDK 11:sudo apt install oracle-java11-installer-local最後,請始終檢查安裝是否成功:java --version如果安裝成功,您將看到以下內容:root@ubuntu:
  • Go+iris吊打Java+SpringBoot,是Java老了嗎?且慢,Vert.x有話說
    Go+Iris vs Java+SpringBoot 為您揭曉答案那個結果很容易給人一個錯覺:是java老了嗎?當然不是!Java界的性能擔當根本就不是Spring,只是因為國內用java的web框架主要是Spring,我們才拿它來測……本次我們就請出java界的性能擔當——Vert.x,跟Iris再比一次這次的結果會比較有說服力因為iris在官網自稱自己是
  • java是什麼文件格式?.java文件怎麼打開?
    Java是由Sun Microsystems公司於1995年5月推出的Java面向對象程序設計語言和Java平臺的總稱,是當今最流行的編程技術。  java是什麼文件?  Java文件是由Sun Microsystems公司於1995年5月推出的Java程序設計語言和Java平臺的總稱。
  • 一起學JAVA——Java語法基礎
    關鍵字(51個):其實就是java語言賦予了特殊含義的單詞。今天我們提到了變量,java是強數據類型語言,也就是說定義變量必須要指定類型。那java支持哪些數據類型呢?我們在下一篇文章中會著重說明。精品推薦:
  • Eclipse 4.10.0 正式發布,全面擁抱 Java 11!
    Eclipse 的 Java 編譯器(ECJ)實現了新的 Java 11 語言增強特性Java 編輯器快速修復 Change project compliance and JRE to 11 報錯現在可以通過選擇 Configure> Create module-info.java 上下文菜單將插件項目轉換為模塊化項目,為項目創建 module-info.java 文件。
  • 動力節點Java學院2021年Java學習路線圖最新出爐啦
    動力節點深知同學們的學習困難,為此整理了一套最新的2021年新版學習路線圖,增加了目前企業最新應用技術,這套學習路線圖,只要你完成一半基本就可以找到很不錯的工作了,如果想要獲得高薪,那就努力學完它吧!第一階段:Javase基礎
  • 一起學JAVA——反射技術
    反射技術是java動態特性的基石,java之所以有很多開發框架就是因為反射技術的存在。什麼是反射JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。
  • java編程:java中的三種代碼塊
    java中用大括號{}將多行代碼括起來,並形成一個獨立的代碼區間的代碼形式稱為代碼塊,它是java中常見的代碼形式。1.第二個普通代碼塊是08~11。2.構造代碼塊:它是用來初始化成員變量,是初始化一個類的所有構造方法共用的特徵,且僅運行一次。
  • 跟我學java編程—Java的Scanner類
    用記事本打開「ScannerInitSample.java」文件,輸入以下代碼:代碼結構分析程序功能主要是演示Scanner如何聲明及初始化。語句「import java.util.*;」,用於導入包含Scanner的類庫,Scanner包含在Java 核心類庫util中,要使用Scanner類,必須導入java.util庫,類庫導入關鍵字為import。
  • 跟我學java編程—Java的標準輸入
    示例1:用read方法讀取單個英文字符數據在D盤Java目錄下,新建「ReadSample.java」文件。用記事本打開「ReadSample.java」文件,輸入以下代碼:代碼結構分析程序功能主要是演示read方法的使用,通過read從鍵盤讀取一個字符並顯示到屏幕上。