亚洲色在线无码国产精品_天天天天做夜夜夜做_97av亚洲无码在线观看_欧美一级亚洲三级

設(shè)為首頁 | 加為收藏 | 聯(lián)系我們 咨詢熱線:0632-5272123
電 話:0632-5272123
傳 真:0632-5271123
地 址: 棗莊市文化西路23號
E-mail:zzint@zzint.com
  • 技術(shù)咨詢:
  • 業(yè)務(wù)咨詢:
  • 客戶服務(wù):
  • 服務(wù)監(jiān)督:
詳細(xì)資料 您當(dāng)前的位置:網(wǎng)站首頁新聞動態(tài)詳細(xì)資料

Java小程序

一個Java小程序是一個小的應(yīng)用程序?qū)懭氲腏ava編程語言或其他編程語言編譯為Java字節(jié)碼,并在Java中的形式交付給用戶的字節(jié)碼。用戶從網(wǎng)頁啟動Java applet ,然后在與Web瀏覽器本身分開的進(jìn)程中在Java虛擬機(jī)(JVM)中執(zhí)行applet 。Java小程序可以出現(xiàn)在網(wǎng)頁的框架,新的應(yīng)用程序窗口,Sun的AppletViewer或用于測試小程序的獨(dú)立工具中。


Java小程序是在1995年發(fā)布的第一版Java語言中引入的。自2017年Java 9以來,Java小程序被棄用,并從2018年9月發(fā)布的Java SE 11(18。9)中刪除。[6] [7] [ 8] [9] [10]


Java applet通常用Java編寫,但也可以使用其他語言,如Jython,JRuby,Pascal,[11] Scala或Eiffel(通過SmartEiffel)。


Java applet運(yùn)行速度非常快,直到2011年,它們的速度比JavaScript慢很多倍。與JavaScript不同,Java applet可以訪問3D 硬件加速,使其非常適合非平凡的計(jì)算密集型可視化。由于采用了畫布技術(shù)(或者特別是3D圖形中的WebGL),[12] [13]以及即時編譯的 JavaScript,[14]速度差異,瀏覽器已經(jīng)獲得了對硬件加速圖形的支持。變得不那么引人注目了。[ 引證需要 ]


由于Java字節(jié)碼是跨平臺的(或平臺無關(guān)的),Java applet可以由瀏覽器(或其他客戶端)執(zhí)行,用于許多平臺,包括Microsoft Windows,F(xiàn)reeBSD,Unix,macOS和Linux。它們不能在不支持Java的現(xiàn)代移動設(shè)備上運(yùn)行。



內(nèi)容

1 概述

2 技術(shù)信息

2.1 類似技術(shù)

3 嵌入網(wǎng)頁

4 例子

5 優(yōu)點(diǎn)

6 缺點(diǎn)

7 與兼容性相關(guān)的訴訟

7.1 1997:Sun vs Microsoft

7.2 2002:Sun vs Microsoft

7.3 2010:Oracle與Google

8 安全

8.1 未簽名

8.2 簽名

8.3 自簽名

9 替代品

10 另見

11 參考文獻(xiàn)

12 外部鏈接

概述

Applet用于為Web應(yīng)用程序提供交互式功能,這些功能無法僅由HTML提供。它們可以捕獲鼠標(biāo)輸入,還具有按鈕或復(fù)選框等控件。響應(yīng)于用戶動作,applet可以改變提供的圖形內(nèi)容。這使得applet非常適合演示,可視化和教學(xué)。有在線applet集合,用于研究從物理學(xué)到心臟生理學(xué)的各種科目。


applet也可以只是一個文本區(qū)域; 例如,為某個遠(yuǎn)程系統(tǒng)提供跨平臺命令行界面。如果需要,applet可以離開專用區(qū)域并作為單獨(dú)的窗口運(yùn)行。但是,applet對applet專用區(qū)域之外的網(wǎng)頁內(nèi)容幾乎沒有控制權(quán),因此與其他類型的瀏覽器擴(kuò)展不同,它們對于改善網(wǎng)站外觀不太有用(而新聞代碼或WYSIWYG編輯器等applet 也是眾所周知的)。Applet還可以播放瀏覽器本身不支持的格式的媒體。


用HTML編碼的頁面可以在其中嵌入傳遞給applet的參數(shù)。因此,相同的applet可能具有不同的外觀,具體取決于傳遞的參數(shù)。


由于applet在CSS和DHTML標(biāo)準(zhǔn)之前可用,它們也被廣泛用于諸如翻轉(zhuǎn)導(dǎo)航按鈕之類的微不足道的效果。這種方法在可訪問性和濫用系統(tǒng)資源方面造成了重大問題,已不再使用,甚至在當(dāng)時也非常勸阻。


技術(shù)信息

Java applet在大多數(shù)Web瀏覽器的沙箱中執(zhí)行,阻止它們訪問剪貼板或文件系統(tǒng)等本地?cái)?shù)據(jù)。applet的代碼從Web服務(wù)器下載,之后瀏覽器將 applet 嵌入到網(wǎng)頁中或打開一個顯示applet 用戶界面的新窗口。


Java applet擴(kuò)展了類java.applet.Applet,或者在Swing applet 的情況下javax.swing.JApplet。必須覆蓋applet類中的方法以在其自身內(nèi)部設(shè)置用戶界面的類(Applet)是其后代的Panel后代Container。由于applet繼承自容器,因此它與普通Java應(yīng)用程序具有相同的用戶界面可能性,包括具有用戶特定可視化的區(qū)域。


第一個實(shí)現(xiàn)涉及按類下載applet類。雖然類是小文件,但通常有很多,因此applet被稱為緩慢加載的組件。但是,由于引入了.jars,applet通常作為單個文件提供,其大小類似于圖像文件(數(shù)百千字節(jié)到幾兆字節(jié))。


的域從其中小應(yīng)用程序可執(zhí)行程序被下載是其通常的(無符號)小應(yīng)用程序被允許進(jìn)行通信的唯一的域。此域可以與托管周圍HTML文檔的域不同。


Java 系統(tǒng)庫和運(yùn)行時是向后兼容的,允許用戶編寫在Java虛擬機(jī)的當(dāng)前版本和未來版本上運(yùn)行的代碼。


類似技術(shù)

許多Java開發(fā)人員,博客和雜志都建議使用Java Web Start技術(shù)代替applet。[15] Java Web Start允許啟動未修改的applet代碼,然后在單獨(dú)的窗口(不在調(diào)用瀏覽器內(nèi))中運(yùn)行。


一個Java Servlet的有時非正式相比,是“喜歡”的服務(wù)器端小程序,但它在它的語言,不同的功能,并且在每個這里描述的關(guān)于小應(yīng)用程序的特性。


嵌入網(wǎng)頁

通過使用不推薦使用的appletHTML元素[16]或推薦object元素,可以在網(wǎng)頁上顯示applet 。[17]該embed元素可以與Mozilla系列瀏覽器一起使用[18](embed在HTML 4中已棄用,但包含在HTML 5中)。這指定了applet的源和位置。兩者object和embed標(biāo)簽也可以下載和安裝Java虛擬機(jī)(如果需要)或者至少導(dǎo)致插件頁面。applet和object標(biāo)簽還支持加載以某種特定(而非初始)狀態(tài)開始的序列化小程序。如果瀏覽器由于任何原因無法運(yùn)行,則標(biāo)簽還會指定顯示代替applet的消息。


然而,盡管object正式推薦標(biāo)簽,截至2010年,object標(biāo)簽的支持在瀏覽器中尚未保持一致,并且Sun一直建議在舊的applet多瀏覽器環(huán)境中部署舊標(biāo)簽[19],因?yàn)樗匀皇俏ㄒ灰恢轮С值臉?biāo)簽。流行的瀏覽器。為了支持多個瀏覽器,object標(biāo)簽當(dāng)前需要JavaScript(識別瀏覽器并調(diào)整標(biāo)簽),使用其他特定于瀏覽器的標(biāo)簽或從服務(wù)器端提供適應(yīng)的輸出。棄用applet標(biāo)簽一直受到批評。Oracle現(xiàn)在提供了一個維護(hù)的JavaScript代碼[20]來啟動具有跨平臺解決方案的applet。


Java瀏覽器插件依賴于NPAPI,許多Web瀏覽器供應(yīng)商因其年齡和安全問題而棄用。2016年1月,Oracle宣布基于JDK 9的Java運(yùn)行時環(huán)境將停止使用瀏覽器插件。[21]


示例

以下示例說明了通過java.applet包使用Java applet。該示例還使用Java Abstract Window Toolkit(AWT)中的類來生成消息“ Hello,world! ”作為輸出。


import  java.applet。* ; 

import  java.awt。* ;


//“Hello,world!”的Applet代碼 例。

//這應(yīng)保存在名為“HelloWorld.java”的文件中。

公共 類 HelloWorld  擴(kuò)展 Applet  { 

    //在屏幕上打印一條消息(x = 20,y = 10)。

    public  void  paint (Graphics  g ) { 

        g 。drawString之(“你好,世界!” , 20 , 10 );


        //在屏幕上繪制一個圓圈(x = 40,y = 30)。

        g 。drawArc (40 , 30 , 20 , 20 , 0 , 360 );


        //在屏幕上繪制一個矩形(x1 = 100,y1 = 100,x2 = 300,y2 = 300)。

        g 。drawRect中(100 , 100 , 300 , 300 );


        //在屏幕上繪制一個正方形(x1 = 100,y1 = 100,x2 = 200,y2 = 200)。

        g 。drawRect中(100 , 100 , 200 , 200 ); 

    } 

}

簡單的applet可以在Internet上自由共享,用于自定義支持插件的應(yīng)用程序。


編譯之后,生成的.class文件可以放在Web服務(wù)器上,并使用<applet>或<object>標(biāo)記在HTML頁面中調(diào)用。例如:


<!DOCTYPE html> 

< html > 

< head > 

  < title > HelloWorld_example.html </ title > 

</ head > 

< body > 

  < h1 > Java applet示例</ h1 > 

  < p >

    這里是:

    < applet  code = “HelloWorld.class”  height = “40”  width = “200” >

      這是HelloWorld.class運(yùn)行的地方。

    </ applet > 

  </ p > 

</ body > 

</ html >

訪問該頁面時,其內(nèi)容如下:


一個Java applet示例

這是:你好,世界!

為了大限度地縮短下載時間,可以以jar文件的形式提供applet 。對于此示例,如果將所有必需的類放在壓縮歸檔example.jar中,則可以使用以下嵌入代碼:


< p >

  這里是:

  < applet  archive = “example.jar”  code = “HelloWorld”  height = “40”  width = “200” >

    這是HelloWorld.class運(yùn)行的地方。

  </ applet > 

</ p >

Sun的官方頁面中詳細(xì)介紹了Applet包含有關(guān)APPLET標(biāo)記的內(nèi)容。[22]


優(yōu)點(diǎn)

Java applet可以具有以下任何或所有優(yōu)點(diǎn):[23]


使它在FreeBSD,Linux,Microsoft Windows和macOS上運(yùn)行很簡單 - 也就是說,使它跨平臺。在21世紀(jì)的前十年,大多數(shù)網(wǎng)絡(luò)瀏覽器都支持小程序; 然而,從那以后,出于安全原因,大多數(shù)瀏覽器都放棄了applet支持。

同一個applet可以同時處理“所有”安裝的Java版本,而不僅僅是新的插件版本。但是,如果applet需要更高版本的Java Runtime Environment(JRE),則客戶端將在大型下載期間被迫等待。

大多數(shù)Web瀏覽器都會緩存 applet,因此在返回網(wǎng)頁時可以快速加載它們。Applet也隨著使用而改進(jìn):運(yùn)行第一個applet后,JVM已經(jīng)運(yùn)行并快速啟動(每次瀏覽器重新啟動時JVM都需要重新啟動)。當(dāng)瀏覽器從包含applet的一個HTML頁面導(dǎo)航到包含applet的另一個HTML頁面時,JRE 1.5及更高版本會停止JVM并重新啟動它。

它可以將工作從服務(wù)器轉(zhuǎn)移到客戶端,使得Web解決方案可以根據(jù)用戶/客戶端的數(shù)量進(jìn)行擴(kuò)展。

如果獨(dú)立程序(如Google Earth)與Web服務(wù)器通信,則該服務(wù)器通常需要為尚未更新其客戶端軟件的用戶支持所有先前版本。相反,正確配置的瀏覽器會加載(和緩存)新的applet版本,因此不需要支持舊版本。

applet自然支持不斷變化的用戶狀態(tài),例如棋盤上的數(shù)字位置。

開發(fā)人員可以直接通過創(chuàng)建主例程(在applet的類中或在單獨(dú)的類中)并在applet上調(diào)用init()和start()來直接開發(fā)和調(diào)試applet,從而允許在他們喜歡的Java SE開發(fā)環(huán)境中進(jìn)行開發(fā)。之后所有人都必須在AppletViewer程序或Web瀏覽器中重新測試applet,以確保它符合安全限制。

一個不受信任的小應(yīng)用程序到本地機(jī)器不能訪問,只能訪問它來自服務(wù)器。這使得這樣的applet比它可以替換的獨(dú)立可執(zhí)行文件更安全。但是,如果用戶同意,簽名的applet可以對其運(yùn)行的計(jì)算機(jī)具有完全訪問權(quán)限。

Java applet很快,甚至可以與本機(jī)安裝的軟件具有相似的性能。

缺點(diǎn)


此部分需要額外引用以進(jìn)行驗(yàn)證。請通過向可靠來源添加引文來幫助改進(jìn)本文。無法查證的內(nèi)容可能被提出異議而移除。查找來源:“Java applet”  -  新聞· 報(bào)紙· 書籍· 學(xué)者· JSTOR

         (2015年8月)(了解如何以及何時刪除此模板消息)

與其他客戶端Web技術(shù)相比,Java applet可能具有以下任何缺點(diǎn):


Java applet依賴于Java Runtime Environment(JRE),這是一個相當(dāng)復(fù)雜和重量級的軟件包。它通常還需要Web瀏覽器的插件。某些組織僅允許管理員安裝的軟件。因此,某些用戶只能查看足夠重要的applet,以便與管理員聯(lián)系以請求安裝JRE和插件。

如果applet需要比系統(tǒng)上可用的更新的JRE或特定的JRE,則第一次運(yùn)行它的用戶將需要等待大型JRE下載完成。

iOS或Android上的移動瀏覽器根本不運(yùn)行Java小程序。[24]隨著移動操作系統(tǒng)的興起,桌面瀏覽器逐步淘汰Java applet支持。

與舊applet標(biāo)記不同,object標(biāo)記需要使用變通方法來編寫跨瀏覽器的HTML文檔。

沒有標(biāo)準(zhǔn)可以讓屏幕閱讀器可以使用applet的內(nèi)容。因此,applet可能會損害具有特殊需求的用戶訪問網(wǎng)站的可能性。

與任何客戶端腳本一樣,安全性限制可能使不受信任的applet難以甚至不可能實(shí)現(xiàn)所需的目標(biāo)。但是,只需編輯JAVA JRE安裝中的java.policy文件,就可以授予對本地文件系統(tǒng)或系統(tǒng)剪貼板的訪問權(quán)限,也可以授予除向applet提供給瀏覽器的網(wǎng)絡(luò)源以外的其他網(wǎng)絡(luò)源。

與兼容性相關(guān)的訴訟

Sun已經(jīng)做出了相當(dāng)大的努力來確保Java版本之間的兼容性得以保持,并在必要時依法強(qiáng)制實(shí)施Java可移植性。Oracle似乎在繼續(xù)采用相同的策略。


1997年:Sun對微軟

1997年的訴訟[25]是在微軟創(chuàng)建了自己的改進(jìn)的Java虛擬機(jī)之后提交的,該虛擬機(jī)隨Internet Explorer一起提供。Microsoft 在java.awt,java.lang和java.io包中的類中添加了大約50個方法和50個字段[25]。其他修改包括刪除RMI功能和將Java本機(jī)接口從JNI 替換為RNI,這是一種不同的標(biāo)準(zhǔn)。RMI被刪除,因?yàn)樗荒茌p松支持Java到Java通信并與Microsoft DCOM競爭技術(shù)。依賴這些更改或只是無意中使用它們的小程序僅在Microsoft的Java系統(tǒng)中起作用。Sun起訴違反商標(biāo),因?yàn)镴ava的重點(diǎn)是不應(yīng)該有專有擴(kuò)展,并且代碼應(yīng)該在任何地方都可以使用。微軟同意向Sun支付2000萬美元,并且Sun同意授予Microsoft有限許可,僅在有限的時間內(nèi)不使用Java進(jìn)行修改。[26]


2002年:Sun與微軟

微軟繼續(xù)發(fā)布自己未經(jīng)修改的Java虛擬機(jī)。多年來它變得非常過時但仍然是Internet Explorer的默認(rèn)設(shè)置。后來的一項(xiàng)研究表明,這次的applet經(jīng)常包含自己的類,它們以有限的方式反映Swing和其他新功能。[27] 2002年,Sun提起反壟斷訴訟,聲稱微軟試圖非法壟斷已經(jīng)損害了Java平臺。Sun要求微軟將Sun當(dāng)前的二進(jìn)制Java技術(shù)實(shí)施作為Windows的一部分進(jìn)行分發(fā),將其作為舊版Microsoft桌面操作系統(tǒng)的推薦更新進(jìn)行分發(fā),并停止分發(fā)微軟的虛擬機(jī)(因?yàn)槠湓谥暗脑V訟中同意的許可時間已經(jīng)過過期)。[26]微軟為未決的反托拉斯問題支付了7億美元,為專利問題支付了9億美元,并為將來使用Sun的軟件支付了3.5億美元的特許權(quán)使用費(fèi)。[28] [ 需要非主要來源 ]


2010年:甲骨文與谷歌

另請參閱:Oracle訴谷歌

Google開發(fā)了自己的Android平臺,該平臺使用Java功能和概念,但與標(biāo)準(zhǔn)庫不兼容。這可能違反Sun授予OpenJDK專利的條件,以便為所有人使用開源Java。2010年,甲骨文起訴谷歌[29]以“錯誤的方式”使用Java,聲稱“谷歌的Android與甲骨文美國的Java競爭”以及“谷歌已經(jīng)意識到Sun的專利組合......”因?yàn)楣雀杵刚埩四承┣癝un公司Java工程師“。2012年5月,該案件的陪審團(tuán)發(fā)現(xiàn)谷歌沒有侵犯甲骨文的專利,審判法官裁定谷歌使用的Java API結(jié)構(gòu)不具有版權(quán)。[30] [31]


安全

有兩種applet類型具有非常不同的安全模型:簽名小程序和未簽名小程序。[32]自Java SE 7 Update 21(2013年4月)起,鼓勵小程序和Web-Start應(yīng)用程序使用受信任的證書進(jìn)行簽名,并在運(yùn)行未簽名的小程序時顯示警告消息。[33]進(jìn)一步從Java 7 Update 51開始,默認(rèn)情況下會阻止未簽名的applet; 可以通過在Java控制面板中創(chuàng)建異常來運(yùn)行它們。[34]


未簽名

對未簽名的小程序的限制被理解為“嚴(yán)苛的”:他們無法訪問僅限于applet下載站點(diǎn)的本地文件系統(tǒng)和Web訪問; 還有許多其他重要的限制。例如,他們無法訪問所有系統(tǒng)屬性,使用自己的類加載器,調(diào)用本機(jī)代碼,在本地系統(tǒng)上執(zhí)行外部命令,或者重新定義屬于作為Java版本一部分包含的核心包的類。雖然它們可以在獨(dú)立框架中運(yùn)行,但這樣的框架包含一個標(biāo)頭,表明這是一個不受信任的小程序。成功初始調(diào)用禁止方法不會自動創(chuàng)建安全漏洞,因?yàn)樵L問控制器會檢查整個堆棧 調(diào)用代碼以確保呼叫不是來自不正確的位置。


與任何復(fù)雜系統(tǒng)一樣,自Java首次發(fā)布以來,已發(fā)現(xiàn)并修復(fù)了許多安全問題。其中一些(如日歷序列化安全性錯誤)持續(xù)了很多年,沒有人知道。其他人在野外被惡意軟件使用。[ 引證需要 ]


一些研究提到applet崩潰瀏覽器或過度使用CPU資源但這些被歸類為麻煩而不是真正的安全漏洞。但是,未簽名的applet可能涉及組合攻擊,這些攻擊利用系統(tǒng)其他部分中的多個嚴(yán)重配置錯誤的組合。未簽名的applet在托管它的服務(wù)器上直接運(yùn)行也會更危險(xiǎn),因?yàn)殡m然代碼庫允許它與服務(wù)器通信,但在其內(nèi)部運(yùn)行可以繞過防火墻。applet也可能在托管它的服務(wù)器上嘗試DoS攻擊,但通常管理該網(wǎng)站的人也管理applet,這使得這不合理。社區(qū)可以通過源代碼審查或在專用域上運(yùn)行applet 來解決此問題。


未簽名的小程序還可以嘗試下載托管在原始服務(wù)器上的惡意軟件。但是,它只能將此類文件存儲到臨時文件夾中(因?yàn)樗撬矐B(tài)數(shù)據(jù)),并且無法通過執(zhí)行它來完成攻擊。有人嘗試使用applet以這種方式傳播Phoenix和Siberia漏洞,[ 引證需要 ]但是這些漏洞利用內(nèi)部不使用Java,并且還以其他幾種方式分發(fā)。


簽名

簽名的小程序[35]包含一個簽名,瀏覽器應(yīng)通過遠(yuǎn)程運(yùn)行的獨(dú)立證書頒發(fā)機(jī)構(gòu)服務(wù)器進(jìn)行驗(yàn)證。生成此簽名涉及專門的工具以及與權(quán)威服務(wù)器維護(hù)人員的交互。驗(yàn)證簽名并且當(dāng)前計(jì)算機(jī)的用戶也批準(zhǔn)后,簽名的applet可以獲得更多權(quán)限,變得等同于普通的獨(dú)立程序。理由是,小程序的作者現(xiàn)在已知,并將對任何故意損害負(fù)責(zé)。[ 含糊 ]這種方法允許applet用于許多客戶端腳本無法實(shí)現(xiàn)的任務(wù)。但是,這種方法需要用戶承擔(dān)更多責(zé)任,決定他或她信任誰。相關(guān)的問題包括無響應(yīng)的授權(quán)服務(wù)器,在頒發(fā)證書時對簽名者身份的錯誤評估,以及仍然做出用戶不會批準(zhǔn)的事情的已知applet發(fā)布者。因此,從Java 1.1出現(xiàn)的簽名小程序?qū)嶋H上可能有更多的安全問題。


自簽名

自簽名applet是開發(fā)人員自己簽署的applet,可能會帶來安全風(fēng)險(xiǎn); java插件在請求自簽名applet的授權(quán)時提供警告,因?yàn)閍pplet的功能和安全性僅由開發(fā)人員本身保證,并且尚未經(jīng)過獨(dú)立確認(rèn)。此類自簽名證書通常僅在發(fā)布之前的開發(fā)期間使用,其中第三方確認(rèn)安全性并不重要,但大多數(shù)applet開發(fā)人員將尋求第三方簽名以確保用戶信任applet的安全性。


Java安全問題與任何客戶端腳本平臺的類似問題沒有根本的區(qū)別[36] [ 引證需要 ]。特別是,與簽名小程序相關(guān)的所有問題也適用于Microsoft ActiveX組件。


截至2014年,常用的Java插件或Java Web Start不再接受自簽名和未簽名的applet。因此,希望部署Java小程序的開發(fā)人員別無選擇,只能從商業(yè)來源獲取可信證書。


替代品

存在替代技術(shù)(例如,JavaScript),其滿足applet可能的全部或更多范圍。其中,JavaScript并不總是被視為競爭的替代品[ 由誰?] ; JavaScript可以與同一頁面中的applet共存,協(xié)助啟動applet(例如,在單獨(dú)的框架中或提供平臺解決方法),然后從applet代碼調(diào)用。JavaFX是Java平臺的擴(kuò)展,也可以作為替代方案。




上篇文章:棗莊小程序開發(fā)的辦法
下篇文章:Java AppletApplet是一種特殊類型的程序
版權(quán)所有 棗莊市英特信息網(wǎng)絡(luò)有限公司 ◎2017
聯(lián)系電話:0632-5271123 5272123  總部地址:棗莊市市中區(qū)文化西路23號
魯ICP備09021689號 增值電信業(yè)務(wù)經(jīng)營許可證編號:魯 B2-20080087號