2010-09-30 103 views
5

作为一名C++开发人员,我偶尔会遇到类似iTextBatik,JasperReportsJFreeChart的Java库。在每种情况下,等效的跨平台C++库看起来都不太成熟,更昂贵或不可用。使用C++的Java开发者

是否实际使用从我的C++应用程序,这些Java库的报告,图表及类似?如果是这样,那么最好的方法是什么?

  • 使用JNI在我的应用程序中嵌入JVM?
  • 使用GCJ将Java库编译为本地代码?
  • 我还没有意识到的其他一些集成方法?
  • 放弃,因为从C++是太难实用调用Java库,并转而投向发现C++库我的努力?
+1

在Java中添加GUI代码并将其作为主要调用C++库通过JNI运行 – Mark 2010-09-30 12:59:35

+2

请注意这一点 - 当您通过获取额外的语言和执行环境开始引入更多工具时,最终会使代码成为很难让下一个人理解。作为下一个人,我可以告诉你,不要太聪明,要说很多。 – 2010-09-30 13:19:24

回答

3

最简单的集成方法是旧式UNIX方法:启动一个小型Java程序,执行您需要的任务并在STDIN/STDOUT上与其进行通信。

在所有情况下这是不可能的,但它绝对是用例,如PDF,SVG,报告和图表这在很大程度上涉及到保存或显示生成单个文件。

当心的log4j,SLF4J,JUL等,如果你采用这种方法记录! Java程序写入标准的任何内容都可能会破坏您在C++程序中收到的文档。在这种情况下禁用日志记录或使用套接字可能会更好。