答案 0 :(得分:4)
答案 1 :(得分:4)
答案 2 :(得分:2)
Java Applets在本世纪初是现代的。目前只有少数网站使用Java applet,这可能是浏览器支持不是最佳的原因之一。
从我在浏览器卡住之前看到的情况来看,你的小程序似乎只是绘制各种图表。
我建议尝试一个专注于绘制图表的现代Javascript库: http://javascript.open-libraries.com/utilities/chart/20-best-javascript-charting-and-plotting-libraries/
或者,如果您需要的选项多于库提供的选项,并且您不太关心跨浏览器兼容性,则可以使用HTML5元素和SVG - 除了IE之外的所有浏览器都支持这些。
如果您不要求图表是交互式的,您可以使用PHP / Ruby / Python / Java / what在服务器上呈现它们,并将它们作为普通图像发送到浏览器。
如果您需要表达数学表达式,请考虑MathML(http://en.wikipedia.org/wiki/MathML)或可能由服务器脚本动态呈现的普通图像。
答案 3 :(得分:2)
“Java applet需要很长时间才能加载。” 并不是的。当您加载FIRST小程序时,您还加载了JVM,当您启动浏览器时,JVM与JavaScript引擎不同。 JVM启动时间不长于JavaScript启动时间,但最后一个启动时间隐藏在浏览器启动时间内... 有一个名为Jigsaw的项目,它将当前的JVM拆分为模块,使初始启动速度更快,并安排在Java 9中。
“浏览器(或至少Chrome中的标签页)在加载小程序时速度非常慢,但之后也是如此。” 加载JVM时,事情就会变慢。但是,如果之后浏览器速度很慢,那么您的applet中可能会出现一些可能导致CPU过多的错误。这与JavaScript没有什么不同,它也可以使浏览器变得非常慢。您可能需要对applet进行概要分析,以确定资源的去向。我确实遇到过Chrome问题,但它对Applet的支持却很糟糕......
“Java applet在每个系统上看起来都不同。” 如果你使用Swing与非本地LAF,它不会。我个人更喜欢现代的Nimbus LAF。 How to set Nimbus look and feel in main
“有时内存使用率非常高(但并非总是如此)。” 描述您的代码,您可能正在进行过多的内存分配。阅读对象池和其他方法以减少内存碎片。这通常是编码错误的Applet的标志,而不是Applet技术的问题。
“当加载具有多个applet的页面时,浏览器崩溃和/或多个applet无法正确加载的可能性变得非常高。整个操作系统变得非常慢。” 就个人而言,我不会在页面上有多个小程序。看看你是否可以合并它们。有些浏览器对此有非常不好的支持。但更重要的是,即使技术不搞乱,它也不是非常用户友好。
“有时,Java applet不会在浏览器X中加载,而是在浏览器Y中加载” 这是现代浏览器的一个已知问题,往往不能很好地支持插件。这实际上与5号问题相同。当您在页面上仅使用单个Applet时,这个问题就更加罕见了。
“有时,当我切换到另一个标签并返回时,小程序保持空白。有时它至少需要很长时间,直到它再次出现。” 与5和6相同的问题。插件代码(NPAPI)尚未进行现代化以正确支持插件。浏览器没有告诉插件它必须正确地重绘它的内容。或者它可能已经崩溃。如果您只使用一个小程序,这个问题也会更加罕见。
“它占用了所有的CPU。即使我用applet关闭了所有标签页。我必须退出浏览器才能解决这个问题。” 关闭选项卡时,小程序不会关闭。它们在applet退出时关闭,您需要在代码中执行此操作。您的代码必须收听某些事件,清理并退出。我不记得这个代码,因为我通常会复制粘贴它。如果你在窗口资源死亡时不关闭AWT / Swing,那么AWT / Swing也可能会惹恼...
其中一些是正确的,对其他人来说,因为你使用过时的库(比如使用默认的LAF的AWT或Swing)或者不了解如何管理Applet生命周期而导致其他问题。
答案 4 :(得分:1)
答案 5 :(得分:1)
答案 6 :(得分:0)