2010-09-07 101 views
3

有沒有什麼好方法以非語言特定的方式定義接口/類層次結構,然後用指定語言生成相應的源代碼?特別是,我需要針對Java和C#來創建一個相當全面的API。我記得有一次在SF看到一篇文章,其中一個答案提到了一種「編譯」爲其他語言的編程語言 - 但我一直無法找到該文章。這種語言可能是我想要做的解決方案。針對多種編程語言/平臺

感謝,

安迪

+0

http://www.fogcreek.com/FogBugz/blog/category/Wasabi.aspx :-P – 2010-09-07 15:52:27

+0

看起來很整潔,但它不是我以前在SF上看到的語言。 – Andy 2010-09-07 16:08:20

回答

4

你有沒有考慮UML?很容易從UML中找到許多不同語言的代碼生成器(例如,this one可以生成C#,Java和VB.NET代碼),但是您可能需要仔細評估它是否是您的正確選擇。作爲一個標準,多年來它已經進入了大量的criticism

+0

我正在考慮使用UML,因爲我已經可以訪問許多UML工具。我曾希望有人會提出一些建議,允許在Java和C#中有共同的構造和基本庫的基礎代碼生成。 – Andy 2010-09-07 16:03:23

+0

@Andy:更新。 – Ani 2010-09-07 16:14:40

+1

我最喜歡的免費,開源的UML工具是ArgoUML(http://argouml.tigris.org/),它可以使用正確的插件爲Java和C#生成代碼。它也有批評幫助用戶製作更好的UML圖表。 – 2010-09-07 16:18:18

4

很多方法可以做你想做的事情。

例如,你可以看看使用接口定義語言(IDL)。 Corba的IDL允許您以一種與語言無關的方式聲明對象&接口。這些idl文件然後通過IDL編譯器運行,該編譯器爲您選擇的語言輸出適當的類,標題,存根,代理等。

例如IIOP.NET是Corba for C#的一個實現。我不知道它有多好,但它會有一個吐出C#類的IDL編譯器。 Java有一個名爲idlj的IDL編譯器作爲JDK的一部分。

理論上,您可以從相同的接口&類實現C#和Java。

做類似事情的另一種方法是利用一個UML工具,它可以從模型生成源代碼。

另一種選擇是使用類似WSDL/XSD的類來定義接口類型,並從中生成存根。

1

看看IKVM.NET。有了它,你可以用Java(或JVM語言)編寫程序並將其轉換爲.NET程序集。所以你將有一個JVM和一個.NET版本的程序。

+0

儘管這個鏈接可能回答這個問題,但最好在這裏包含答案的重要部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – Craigy 2012-08-20 15:36:41

+0

@Craigy:增加了一些信息... – 2012-08-20 17:29:36