[英]Moving heavily templatized C++ code to Java
我有一個用C ++編寫的應用程序(大量使用模板),我需要將它帶到Java ME平台。
我有兩個問題:
有沒有什么好的工具可以將C ++代碼轉換為Java - 做一些基本的東西,所以我有一個平台可以開始。 我找到了這個 - http://tangiblesoftwaresolutions.com/Product_Details/CPlusPlus_to_Java_Converter_Details.html 。 它至少可以消除對簡單但耗時的事情的需求,例如將類移動到不同的文件,命名空間到包等等。有人試過嗎? 或者知道更好的?
更大的問題是如何處理模板 - 代碼大量使用它們。 關於如何解決這個問題的任何建議? 有沒有任何工具來擴展模板,所以我有一個基本的基礎,然后我可以用Java編寫模塊?
任何幫助,將不勝感激。
對於Sun的所有營銷,Java不僅僅是一個更好的C ++,實際上並不支持C ++支持的許多習語和范例。 這使得自動翻譯變得困難。 您應該如何自動將多繼承層次結構轉換為Java的單繼承層次結構? (注意,我並不是說多繼承層次結構是好事,只是在C ++中明確允許它)。 更基本的是,您如何在Java中表示指向成員的函數? 或者處理Java和C ++重載決策之間的差異?
Java幾年前添加了泛型,但故意使它們不如C ++模板強大。 無論這是否是一個好主意,它限制了自動翻譯可以使用嚴格模板化的代碼。
除了使用一些可以將C ++轉換為Java字節碼的研究編譯器之外,我擔心你可能會被困在手工翻譯中。
您可以使用JNI並從新的Java代碼中調用舊的C ++代碼嗎?
我認為對於你的情況,一個非常簡單的工具是可能的,也許是值得的。 不過,可能是一個有趣的周末工作! 我的一個朋友曾經做過一個從C ++到Java的端口,他剛剛制作了一個正則表達式替換列表。 就像,他曾經出現過 - >被一個點代替。 等等。 這是幾年前的事了,所以我真的不想問他。
所以,你可以這樣做,收集一些簡單的替換,並可能在github上的某個地方發布它們?
我認為這不可能,尤其是 如果您的原始代碼嚴重模板化 - J2ME不支持泛型,AFAIK。
不幸的是,似乎這需要大量的手工工作來完成原始代碼並重寫它(我假設你的目標平台不支持JNI)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.