2012-02-09 59 views
1

我正在使用C++構建的項目。在這個項目中,公共類包含了我想從我的Java代碼中調用的公共方法。實現這一目標的最佳方式是什麼?我想我會想要將C++代碼編譯成字節碼的東西。如何在JVM中利用C++代碼?

我見過一些類似的工具,但其中一些工具很長時間沒有更新,而其他工具似乎不適合這項任務。這些工具是否足夠成熟,可用於專業級應用程序?雖然開放源代碼更可取,但我同樣願意考慮商業工具。

+0

你不考慮使用JNI的任何原因? – Jyro117 2012-02-09 22:25:35

+0

道歉 - 不熟悉JNI – sangfroid 2012-02-09 22:26:06

+0

我從來沒有真正使用過它,但我確定有人可以更詳細地解釋它。從本質上講,它允許您訪問JVM之外的本機代碼或讓本地代碼調用您的Java代碼。快速搜索谷歌,實際名稱是Java本地接口。 – Jyro117 2012-02-09 22:29:08

回答

1

總是有舊的備用,JNI,以緩慢和非常難使用而着稱。

JNA是我從未親自使用的東西,但「我聽說過很好的東西」,它看起來可能適合您的賬單。

另一種可能更好的方法是將C++代碼重構爲一種服務,它偵聽TCP或UNIX套接字。這將增加可移植性,使其可以從大多數語言連接到它,而不是Java特定的。

2

我目前正在使用一個名爲javacpp的軟件包。我相信值得一看

1

使用JNI(Java Native Interface)將C++橋接到Java實際上非常簡單。缺點是你需要編譯你想要代碼工作的平臺的C++部分。

我有一個從C++調用Java的例子,在這篇文章Can C++ call Java code?,但從Java調用C++非常相似。