簡體   English   中英

將嚴格模板化的C ++代碼移植到Java

[英]Moving heavily templatized C++ code to Java

我有一個用C ++編寫的應用程序(大量使用模板),我需要將它帶到Java ME平台。

我有兩個問題:

  1. 有沒有什么好的工具可以將C ++代碼轉換為Java - 做一些基本的東西,所以我有一個平台可以開始。 我找到了這個 - http://tangiblesoftwaresolutions.com/Product_Details/CPlusPlus_to_Java_Converter_Details.html 它至少可以消除對簡單但耗時的事情的需求,例如將類移動到不同的文件,命名空間到包等等。有人試過嗎? 或者知道更好的?

  2. 更大的問題是如何處理模板 - 代碼大量使用它們。 關於如何解決這個問題的任何建議? 有沒有任何工具來擴展模板,所以我有一個基本的基礎,然后我可以用Java編寫模塊?

任何幫助,將不勝感激。

對於Sun的所有營銷,Java不僅僅是一個更好的C ++,實際上並不支持C ++支持的許多習語和范例。 這使得自動翻譯變得困難。 您應該如何自動將多繼承層次結構轉換為Java的單繼承層次結構? (注意,我並不是說多繼承層次結構是好事,只是在C ++中明確允許它)。 更基本的是,您如何在Java中表示指向成員的函數? 或者處理Java和C ++重載決策之間的差異?

Java幾年前添加了泛型,但故意使它們不如C ++模板強大。 無論這是否是一個好主意,它限制了自動翻譯可以使用嚴格模板化的代碼。

除了使用一些可以將C ++轉換為Java字節碼的研究編譯器之外,我擔心你可能會被困在手工翻譯中。

您可以使用JNI並從新的Java代碼中調用舊的C ++代碼嗎?

泛型是與C ++模板對應的Java功能,J2ME不支持它們。 您可以在框架的幫助下使用它們, 框架可能使用預處理來完成技巧。 (實際上Java中的泛型是一種編譯器功能--JVM對它們一無所知。)

無論如何,即使不是不可能自動將C ++代碼的一小部分自動移植到Java標准版也很困難 - 但J2ME的情況要糟糕得多。 Java Generics和C ++模板之間存在許多重要的差異。

我認為對於你的情況,一個非常簡單的工具是可能的,也許是值得的。 不過,可能是一個有趣的周末工作! 我的一個朋友曾經做過一個從C ++到Java的端口,他剛剛制作了一個正則表達式替換列表。 就像,他曾經出現過 - >被一個點代替。 等等。 這是幾年前的事了,所以我真的不想問他。

所以,你可以這樣做,收集一些簡單的替換,並可能在github上的某個地方發布它們?

我認為這不可能,尤其是 如果您的原始代碼嚴重模板化 - J2ME不支持泛型,AFAIK。

不幸的是,似乎這需要大量的手工工作來完成原始代碼並重寫它(我假設你的目標平台不支持JNI)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM