2012-10-14 18 views
1

我一直在做一些編程在Java和一些在C,但現在我需要排序在一起使用。如何從Java傳遞和訪問C數據?

以下是我使用hadoop/Hbase處理和存儲大量數據的情況,但我正在使用C/Cuda對數據進行數字處理。有沒有一種穩定的/成熟的/常用的方式來將數據(它基本上是一個日誌文件)用Java編程並傳遞給一個C程序,C程序將它存儲的數據作爲鏈接列表處理,然後由Java應用程序訪問?

我可能不是在尋找正確的東西,但到目前爲止我找到了JavaCPP,這很好,但似乎同時涉及這兩個程序。因爲Java處理數據流,C處理數據處理,所以我認爲將它們作爲可以相互通信的獨立程序可能更好,而不是單個可能會令人困惑的程序。但我非常靈活,所以我們歡迎任何建議/解決方案。

+0

Java Native Interface(JNI)? – SparKot

+0

@SparKot我從來沒有聽說過它,我會研究一下。謝謝。 – Lostsoul

回答

2

您可能會發現,如果將這些程序單獨保留,然後使用客戶端 - 服務器方法或簡單地選擇一種通用文件格式,並使後面的步驟將輸出目錄輪詢到新文件,則可以更輕鬆地保持程序可測試和清晰處理。

爲了更容易地定義不同語言的文件格式,請考慮使用像Apache ThriftGoogle Protocol Buffers這樣的包。

+0

謝謝,我知道節儉,但不是谷歌協議緩衝區..似乎它是爲解決這類問題而設計的。非常感謝傑夫。 – Lostsoul

0

在這裏,我有我的頭頂 1.運行C程序使用命令行從Java應用程序。 2.使用JNI/JNA 3.實現您自己的「客戶端 - 服務器」體系結構。這聽起來很複雜,但在某些情況下,它可能是最好的也是最簡單的解決方案。 4.使用Web服務,SOAP,REST等進行通信。

我希望這對開始有幫助。 歡迎您提出更具體的問題。