簡體   English   中英

java如何在瀏覽器中運行其applet?

[英]How does java run its applets in the browser?

好吧,我們已經很長時間沒有在Internet Explorer中運行ActiveX控件了,所以我的問題是Java如何操縱瀏覽器在網頁上顯示小程序?

Java如何操縱瀏覽器在網頁上顯示小程序?

沒有。 用戶安裝一個NPAPI(Netscape插件API) 插件 ,該插件告訴瀏覽器它可以運行Java小程序。 然后,當瀏覽器看到Java小程序時,它將啟動該插件。

值得注意的是,Chrome不再支持Linux上的NPAPI,並且計划於9月停止在Windows上支持它 據我所知,Mozilla 正式將NPAPI插件稱為“舊版”功能,並建議使用其他選項,但仍繼續通過點擊播放來支持它們(至少目前如此)。

Java Applets由編譯后的字節碼組成,該字節碼在JVM的控制下執行。 小程序可能是不受信任的,這限制了它們的功能,或者可能是受信任的,這增加了它們的訪問權限,並允許它們訪問用戶數據或硬件。

Java小程序在Java運行時環境(JRE)中包含的Java插件技術(以下稱為“ Java插件”)在瀏覽器中運行,使Java小程序能夠在桌面上的Web瀏覽器中運行。 Java插件為Web瀏覽器中的小程序提供了強大的功能。 使用Java插件時,小程序不會在瀏覽器內部的JVM中運行。 相反,它們在單獨的過程中執行。 可以在多個applet之間共享同一JVM進程,也可以將applet放入不同的進程中,具體取決於現有的JVM是否符合applet的要求並具有足夠的資源來執行applet。

Web瀏覽器的JavaScript解釋器引擎是單線程。 Java插件能夠管理多個線程。 Java插件為每個小程序創建一個單獨的工作線程。 Applet本身可能是多線程的。

下圖顯示了JavaScript解釋器,Java插件和小程序之間的線程交互。

線程互動

當JavaScript解釋器空閑時,Java插件在每個applet工作者線程上執行JavaScript到Java的調用(JavaScript Interpreter Not Busy場景)。

當正在進行Java到JavaScript的調用並且進行JavaScript到Java的調用時,后者將在執行Java到JavaScript的同一線程上執行(往返方案)。

當一個線程正在執行Java到JavaScript的調用時,另一個想要執行此操作的線程將被阻塞,直到第一個線程收到其結果並完成為止(JavaScript Interpreter Busy場景)

但是,Java擴展插件本身是使用NPAPI插件(插件的跨瀏覽器API)編寫的。 代表Netscape插件應用程序編程接口。 它允許瀏覽器使用預編譯插件形式的第三方代碼在網頁中無縫顯示特定於供應商的內容。 本質上,它使您可以從JavaScript代碼中調用本機二進制代碼。 但是運行NPAPI插件后,該代碼具有當前用戶的全部權限,並且可以不受限制地訪問本地計算機。 因此,總的來說,使用NPAPI時,安全性取決於插件的良好行為,並且大多數安全性注意事項取決於插件開發人員。 例如,插件實例可以根據網頁的請求從不同來源加載資源。

從架構的角度來看,Java需要這些特權來提供它帶給表的那種功能和控制。 Java和某些版本的Flash和Shockwave仍使用NPRuntime,並且需要啟用NPAPI才能使Java在瀏覽器中正常運行。 同時,許多瀏覽器(例如Chrome)都將此漏洞(NPAPI插件)視為嚴重的安全漏洞,因為如果該插件(使用NPAPI)包含漏洞,攻擊者便可以利用該漏洞在用戶計算機上安裝惡意軟件,正弦插件(java或NPAPI)直接暴露於Web內容,這使得惡意網站更容易操縱您的插件,這就是為什么它使用戶權限受控制的原因。 瀏覽器偏離這一點的另一個原因是,移動設備不支持NPAPI。 也有更新的問題,例如噴灑http://en.wikipedia.org/wiki/JIT_spraying

盡管Chrome正式停止了對NPAPI的支持,但從Chrome版本42開始,仍需要執行其他配置步驟才能繼續使用NPAPI插件。 (只能使用到2015年9月)

在您的URL欄中,輸入:chrome:// flags /#enable-npapi單擊“啟用”鏈接以啟用“ Enable NPAPI”配置選項。 單擊現在顯示在配置頁面底部的重新啟動按鈕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM