2010-09-07 73 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