2012-04-12 752 views
4

在有人將我擊倒之前,我知道Java是二進制編譯器,而我並沒有經過其中之一。將Java源代碼轉換爲C++源代碼的工具

我也知道沒有任何完美的工具可以將一切都轉換成沒有任何問題。我知道缺少Java庫是一個主要問題;但是我的源碼不使用很多Java庫,除了像String和打印之類的東西。我只想用這個工具來創建Java源代碼引用的類。在字符串的情況下,我很樂意填補空白或在稍後階段修復。我只是想讓這個工具去做一些無聊的事情,所以我不必手動進行翻譯。

在需要的類等的情況下,我會手動修復那些在後期階段,但會欣賞一個指標,至少得到了足夠的無聊的東西完成。

我再次想要翻譯源文件,而不是編譯器生成二進制文件。基本上我想採取一些Java的東西,並將其轉換爲C++,以供以後在其他項目中使用。

編輯 其他注意事項

很抱歉,如果我沒有在我以前對這個問題的部分清晰。我知道Java與C++非常不同。我有一些Java代碼,它大部分都是處理數組和位,並且幾乎沒有創建對象。在某種意義上說,它是非常獨立的,並且很少有其他類的調用。這些類似乎是轉換的主要候選對象;其他的東西將不得不重寫,但至少有一些部分是槓桿化的。

+0

如果您真的想從C++訪問您的Java實用程序,那麼您可以使用JNI而不是移植它們。 – 2012-04-12 02:20:54

+0

重複的可能答案:http://tangiblesoftwaresolutions.com/Product_Details/Java_to_CPlusPlus_Converter_Details.html - 但工具帶有許多警告,並不是免費的。 – 2012-04-12 02:27:12

+0

@ jesse如果即時通訊要求一個Java - > C++如何可以這是一個重複的YOR建議,這是另一種方式? – 2012-04-14 03:32:23

回答

11

j2c就是其中之一 - 它會將Java源代碼轉換爲粗略的C++等價物。

很明顯,有很多其他人提到的警告(垃圾回收,同步等),但它會提供一個很好的起點(並且它是開源的,因此您可以輕鬆地改進該點=)。

根據您的代碼庫的大小,自己編寫代碼也是有意義的 - 一旦您擁有Java AST可以工作,編寫代碼就不是那麼困難,因爲Java語法大部分是C++的子集,並且有很多庫會爲你解析Java代碼(例如,j2c使用Eclipse自帶的代碼)。手工進行轉換比爲其編寫工具更容易出錯。