有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Web图表,服务器端还是客户端?

我正在尝试确定我们是否最好在服务器端呈现图表,并将它们作为图像推送到浏览器,或者使用javascript图表库在客户端绘制图表

我正在查看JFreeChart和Dojo图表库,我的目标是一个在JBoss中运行的现有JSP站点

是否有人对此有经验,能够指出每种方法的优点/缺点

目前,我认为客户端渲染效率要高得多,除非数据集很大


共 (6) 个答案

  1. # 1 楼答案

    我在这两方面都看到了很多有效的观点,但是我喜欢做图表客户端的一件事,就是能够与图表进行一些交互。使用Dojo图表库,您可以使用多种图表交互方法,例如dojox.charting.action2d.Highlightdojox.charting.action2d.Tooltip。你也可以让你的图表动态更新而不需要刷新,我可以看到一些情况下,这可能是有用的

    当然,这一切都取决于你,但我喜欢图表,我可以与从服务器渲染的图像进行更好的交互,我想很多人都同意我的观点

  2. # 2 楼答案

    第一个决定因素应该是您是否需要在禁用JavaScript的情况下访问图表。如果您这样做或认为您可能这样做,它将完全排除JavaScript

  3. # 3 楼答案

    我建议您确定您的性能/资源调配需求,并从中做出决定。如果您希望有大量的客户机,每个客户机都需要大量的图表,这些图表可能需要定期更新,那么将处理工作转移到客户机上可能是更好的解决方案。正如jesper提到的,您还可以直接与客户机上的图表进行更多的交互,而不需要为更复杂的功能回调服务器

    如果图表的通用模型很简单(例如,服务器动态生成静态图表,不需要更新),并且客户端数量较少,则可以使用硬件更好地提高性能。在这种情况下,服务器端可能就足够了

    以后很难实现可伸缩性和性能。如果您从一开始就有可能缓解这种情况,那么您应该这样做,因为随着未来用户决定他们需要更快/更好的功能,当前的使用模型经常会发生变化

  4. # 4 楼答案

    JFreeChart已经建立了很好的基础,并且已经存在很多年了。我在以前的项目中使用过它,效果非常好。它可以从富客户端应用程序或web应用程序中使用。这两种方案都有示例应用程序。如果您正在分发应用程序,那么它也是GPL许可的

    在服务器端执行此操作的优点是,您可以将生成的图表呈现为图像,而不必担心跨浏览器兼容性。我已经通过从Servlet和Struts呈现来合并JFreeChart,效果非常好

    我不能支持Dojo图表,因为它相当新

  5. # 5 楼答案

    如果使用javascript,您可能还需要一个服务器端解决方案,以防javascript被关闭

    如果您使用不引人注目的javascript,那么如果启用javascript,它可以将服务器端解决方案的链接更改为使用javascript图表工具

    我发现最好在服务器端使用php,因为gdlib很好,我的tomcat服务器有时会抛出错误,因为即使在headless模式下运行,也无法连接到x11服务器

    有很多可能的解决方案,或者你可以自己做。绘图并不难,这取决于你需要什么。例如,如果您可以使用svg,那么这将允许使用动画图表,但许多浏览器都需要一个插件

  6. # 6 楼答案

    我想推荐一个我写的库:charts4j,这是一个服务器端图表解决方案。以下是一些功能:

    • 支持Google Chart API的几乎所有功能
    • 隐藏创建URL参数的丑陋细节,这些参数是与Google图表API通信所必需的
    • 可以集成到任何支持Internet的Swing或web应用程序环境中(JSP/Servlet、GWT、SpringMVC等)
    • 100%纯核心Java解决方案。不需要特殊的图形库等
    • 超级可扩展&;轻量的只需要一个160Kb的jar和一个Internet连接
    • 有据可查
    • 最重要的是,它是免费的

    这里有一些testimonials。还可以查看FAQ

    我有一个在my blog上将此技术合并到SpringMVC(使用JSP)应用程序的例子