好吧,我们已经远远超过了在Internet Explorer中运行ActiveX控件的日子,所以我的问题是java如何操纵浏览器在网页上显示applet?
答案 0 :(得分:6)
java如何操纵浏览器在网页上显示applet?
没有。用户安装NPAPI(Netscape Plugin API)插件,告诉浏览器它可以运行Java applet。然后,当浏览器看到Java applet时,它会启动插件。
值得注意的是,Chrome不再支持Linux上的NPAPI,而且它们是scheduled to stop supporting it on Windows in September。据我所知,正式 Mozilla称NPAPI插件为“遗留”功能,并建议使用其他选项,但继续支持它们via click-to-play(至少目前为止)..
答案 1 :(得分:1)
Java Applets由编译的字节码组成,在其下执行 控制JVM。 Applet可能是不受信任的,这限制了它们的功能,也可能是受信任的,这增加了它们的访问权限并允许它们访问用户数据或硬件。
Java applet在浏览器中使用Java Plug-in技术(以下简称" Java Plug-in")运行,它包含在Java Runtime Environment(JRE)中,使Java applet能够在Web浏览器中运行在桌面上。 Java Plug-in为Web浏览器中的applet提供了强大的功能。使用Java Plug-in,applet不会在浏览器内的JVM中运行。相反,它们是在一个单独的过程中执行的。可以在多个applet之间共享相同的JVM进程,或者可以将applet放置到不同的进程中,具体取决于现有JVM是否与applet要求匹配并且具有足够的资源来执行applet。
Web浏览器的JavaScript解释器引擎是单线程。 Java Plug-in能够管理多个线程。 Java Plug-in为每个applet创建一个单独的工作线程。小程序本身可能是多线程的。
下图显示了JavaScript Interpreter,Java Plug-in和applet之间的线程交互。
当JavaScript解释器空闲时,Java Plug-in在每个applet工作线程上执行JavaScript to Java调用(JavaScript Interpreter Not Busy场景)。
当正在进行Java to JavaScript调用并进行JavaScript to Java调用时,后者将在进行Java to JavaScript调用的同一线程上执行(Round Trip场景)。
当线程正在执行Java to JavaScript调用时,另一个想要执行相同操作的线程将被阻塞,直到第一个线程收到其结果并完成(JavaScript Interpreter Busy scenario)
然而,Java扩展插件本身是使用NPAPI插件编写的,NPAPI插件是用于插件的跨浏览器API。代表,Netscape插件应用程序编程接口。它允许浏览器使用预编译插件形式的第三方代码在网页中无缝显示供应商特定内容。从本质上讲,它允许您从JavaScript代码中调用本机二进制代码。但是运行NPAPI插件时,代码具有当前用户的完全权限,并且可以无限制地访问本地计算机。总而言之,对于NPAPI,安全性取决于插件的良好行为和大多数安全性考虑因素 取决于插件开发人员。例如,插件实例可以加载 根据网页的要求,来自不同来源的资源。
建筑方面,Java需要这些特权才能提供它带来的功能和控制。 Java和某些版本的Flash和Shockwave仍然使用NPRuntime,并且需要启用NPAPI以使Java在浏览器中正常运行。与此同时,Chrome等许多浏览器都将此(NPAPI插件)视为严重的安全漏洞,因为如果插件(使用NPAPI)包含漏洞,攻击者可能会利用该漏洞在用户上安装恶意软件。 s机器,也是正弦插件(java或NPAPI)直接暴露给Web内容,使恶意网站更容易操纵你的插件,这就是为什么它已经使用户权限受到控制。浏览器摆脱这种情况的另一个原因是,移动设备不支持NPAPI。还有一些新问题,例如jit spray http://en.wikipedia.org/wiki/JIT_spraying
尽管Chrome已正式停止支持NPAPI,但从Chrome版本42开始,还需要一个额外的配置步骤才能继续使用NPAPI插件。 (可能只能工作到2015年9月)
在您的网址栏中输入: 铬://标志/#使能NPAPI 单击“启用NPAPI配置”选项的“启用”链接。 单击现在显示在配置页面底部的“重新启动”按钮。