2008-09-05 142 views
6

有沒有用於自動將非Java源代碼轉換爲Java源代碼的好工具?用於將非Java源代碼轉換爲Java源代碼的工具

我不期待有什麼完美的東西,只是爲了得到最糟糕的咕嚕作品。

我猜是有一個滑動的難度。 C#應該相對容易(只要你忽略所有的庫)。 (寫得很好)C++沒有那麼糟糕。 C需要做一點OO。 (靜態類型)函數式語言可能很容易理解。動態OO語言可能需要非本地分析。

回答

6

您可以嘗試的一件事是找到您正在談論的語言(有各種語言的JVM編譯器)的Java字節碼編譯器,然後使用反編譯器(如Jad)將字節碼反編譯回Java。

這是充滿危險。重新生成的代碼會吮吸並可能無法讀取。

3

Google:ANTLR

+0

好點,但取決於源語言,這將是一件大事。 – user181750 2009-10-14 09:47:29

-1

ADA to Java可以通過查找和替換完成!

+0

相反呢?我是一個想學習ADA的java傢伙 – WolfmanDragon 2008-12-12 18:45:58

+0

ADA並沒有太大的差別,模板都是類似的,包就像java靜態類,ADA類就像Java一樣。 標準IO在ADA 中是通用的。 唯一不可思議的是擴展包,並且文件樹和包名不像1:1那樣與1:1排隊。所以像C++ :) – 2009-01-12 06:16:07

0

如果你只是想使用一些傳統的C/Pascal代碼,你也可以使用JNI從Java調用它。

如果您想在Java applet或類似的受限環境中運行它,並且它不必非常高效,那麼您可以使用NestedVM(這是MIPS到Java字節碼轉換器)編譯器編譯爲MIPS)。但不要指望從中獲得可讀的Java代碼。

1

語言轉換相當簡單,但您會發現這些庫是不同的。 這很可能是您的大部分工作。

0

只有當您的非java代碼不夠大時,任何這些工具纔有用。

如果它的巨大的非java代碼,並且如果你想認真地將它翻譯成java,那麼很少有事情需要考慮,它不僅僅是數百行代碼,它下面有一個設計,很少有決定由代碼下的人員採取的,因爲某些問題可能已經解決,並且很少有事情在那裏工作。花時間在任何優秀的翻譯者身上都是不值得的,因爲它不會存在,它不僅僅是從一種語言到另一種語言的語法翻譯。

如果它的代碼量不是很大,那麼最好用java編寫代碼,因爲它包含了很多API包,所以這可能不是什麼大不了的,僱用幾個實習生可能會有所幫助。

5

源到源遷移屬於Program Transformation的保護範圍。 Program-Transformation.org跟蹤對語言識別,分析和轉換有用的bunch of tools。以下是幾個能夠進行源到源遷移的源代碼:

如果你花與開源工具之一任何時候,你會發現,即使他們包括源到作爲一項功能來源遷移,很難找到工作示例。我想這是因爲沒有一種適合所有人的遷移。每個項目/團隊都獨特地使用一種語言,並且可以根據所用的庫,類型的複雜性,習慣用法,樣式等而有所不同。每次遷移定義一些轉換是有意義的。這意味着在自動遷移之前項目必須達到一定臨界質量值得付出努力。

幾個相關文件: