混合服务器端java和客户端javascript图表库

Hybrid server-side-java and client-side-javascript charting library?

本文关键字:javascript 客户端 服务器端 java 混合      更新时间:2023-09-26

在Java和Javascript中是否有一个库可以为相同的数据生成相同的图表?

我的任务是:

  • 显示一些华丽的动态图表在浏览器,更好的动态工具提示,缩放等(我认为Javascript在这里)
  • 并在服务器端生成相同的(或足够相似的)图表,在Java中,自动发送它们在电子邮件(在这种情况下根本没有浏览器)。

我想避免Flash与iPhone的互操作性。

有一些静态的服务器端图表,如Eastwood/JFreeChart,但我想让它在浏览器中更活跃。

是的,我可以通过Ajax重新加载静态图像。还有其他选择吗?

为什么这个问题已经存在一年多了,但还没有答案?我建议采用一种相当可疑的、有点硬核的方法。


使用JavaScript,这太棒了!

你的成功公式:d3.js + jsdom + Rhino + Batik

专:

  1. 使用一些光滑的JavaScript库如d3.js生成图形。

  2. 使用jdom运行d3服务器端。Jsdom是一个纯JS库,d3是在它的基础上工作的。

  3. 在Rhino中运行jdom和d3, Rhino是一个JavaScript引擎,从1.6版本起就嵌入到你心爱的JVM中(JSR-223!)尽管如此,我还是建议您将其更新到最新版本(它位于Maven Central上,非常棒!)。我猜Node.JS可以做得更好,但我假设你被Java困住了。

    还要注意,有一个更老的、更成熟的、特定于Rhino的服务器端DOM实现——EnvJs (需要Rhino 1.7R2,而不是R3)。如果jsdom不适合你,你可以试试。

  4. 使用Batik栅格化d3生成的SVG。Batik甚至支持通过Rhino在SVG内编写脚本。这意味着如果您愿意,可以在服务器端生成交互式图表。我也在实践中使用它,并有很好的经验。

整个方法是已知的工作服务器端与Node.JS作为JS引擎和ImageMagick作为光栅化器,但我看没有理由为什么它不会为你工作。


顺便说一下,如果你想让它运行,请告诉我。

请原谅我回复得太晚了,但是使用Highcharts怎么样?我正在寻找为您提供更多信息的链接,因为我正在打字,但Highcharts提供了服务器端"导出"功能。它的基本功能是允许你在不需要浏览器的情况下下载图像的副本。

我实现了这个功能,这样我就可以接受请求参数,查询数据存储,使用Highcharts将这些数字绘制成所需的图形,并将这些结果嵌入到电子邮件中(当然,还可以将电子邮件发送给收件人)。

更多信息在这里:http://www.highcharts.com/component/content/article/2-articles/news/52-serverside-generated-charts

: https://github.com/one2team/highcharts-serverside-export