2010-09-30 48 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++程序中收到的文檔。在這種情況下禁用日誌記錄或使用套接字可能會更好。