繁体   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