是否可以在不使用applet的情况下获取Web浏览器的Java VM?

时间:2009-02-06 21:01:25

标签: java javascript

我们有一个古老的Java小程序,我们想要转向更新版本的Java(5或6),但是直到今天我们一直支持使用Java VM的人们早在1.1版本(特别是对于那些仍在使用Microsoft VM)

作为升级的一部分,我们希望能够为使用过时虚拟机的人们提供网页,告诉他们我们现在支持哪些版本以及可以从哪里下载。理想情况下,我们希望这样做而不必必须首先提供Java 1.1 applet以确定JVM版本。

以下任一项的答案(如果可能,请提供代码示例)将不胜感激:

问题1:是否可以使用来自HTTP标头的信息在服务器上的脚本中确定JVM?

问题2:是否可以仅使用JavaScript确定客户端上的信息?

4 个答案:

答案 0 :(得分:1)

Q1:没有

Q2:是的,但我不知道它是多么便携:

<html><head><title>Test</title>
</head><body>
<script type="text/javascript">
document.writeln('<table border="1">');
for (var i = 0; i < navigator.plugins.length; i++) {
  document.writeln("<tr>");
  document.writeln("<td>" + navigator.plugins[i].name + "<\/td>");
  document.writeln("<td>" + navigator.plugins[i].description + "<\/td>");
  document.writeln("<td>" + navigator.plugins[i].filename + "<\/td>");
  document.writeln("<\/tr>");
}
document.writeln("<\/table>");
</script>
</body></html>

输出所有插件的表格,应该包含版本。我想你必须遍历所有插件,检查名称中是否包含'java',然后从描述中解析版本......

答案 1 :(得分:1)

有一个用于执行此类操作的部署工具包。

提供applet应该不会太糟糕。它可以是1x1像素的bug,也可以使用普通的applet和一个小的1.1类,如果它可以加载你的1.5代码,就可以转发applet生命周期方法。

没有人应该继续使用1.1。它多年来一直没有修复安全漏洞。

答案 2 :(得分:1)

这个脚本似乎可以解决所有主流浏览器的问题:

http://www.pinlady.net/PluginDetect/JavaDetect.htm

答案 3 :(得分:1)

我认为deployment toolkit可能会做你想要的。

  

使用deployJava中的runApplet()函数确保在启动applet之前客户端计算机上最小的Java Runtime Environment可用。