2010-09-07 19 views
3

Existe-t-il de bons moyens de définir des interfaces/hiérarchies de classes d'une manière non spécifique à une langue, puis de générer le code source correspondant dans des langues spécifiées? En particulier, j'ai besoin de cibler à la fois Java et C# pour une API assez complète que je crée. Je me souviens à un moment donné de voir un article ici sur SF où une réponse mentionnait un langage de programmation «compilé» vers d'autres langues - mais je n'ai pas réussi à trouver le message. Ce langage peut être une solution pour ce que j'essaie de faire.Cibler plusieurs langages/plates-formes de programmation

Merci,

Andy

+0

http://www.fogcreek.com/FogBugz/blog/category/Wasabi.aspx :-P –

+0

Cela semble bien, mais ce n'est pas la langue que j'ai vu précédemment sur SF. – Andy

Répondre

4

Avez-vous envisagé UML? Il est facile de trouver des générateurs de code à partir de UML pour un grand nombre de langages différents (par exemple, this one peut générer du code C#, Java et VB.NET), mais vous voudrez peut-être évaluer soigneusement si c'est le bon choix pour vous. En tant que norme, il est venu pour substantielle criticism au cours des années.

+0

Je pensais utiliser UML car j'ai déjà accès à un certain nombre d'outils UML. J'espérais que quelqu'un proposerait quelque chose qui permettrait une génération de code basique dans la mesure où Java et C# ont des constructions communes et des bibliothèques de base. – Andy

+0

@Andy: Mis à jour. – Ani

+1

Mon outil open source gratuit préféré pour UML est ArgoUML (http://argouml.tigris.org/) il peut générer du code pour Java et C# avec les bons plugins. Il a également des critiques pour aider les utilisateurs à faire de meilleurs diagrammes UML. –

4

Beaucoup de façons de faire quelque chose comme ce que vous voulez. Par exemple, vous pouvez utiliser un langage de définition d'interface (IDL). Le langage IDL de Corba vous permet de déclarer les objets & de façon neutre. Ces fichiers idl sont ensuite exécutés via un compilateur IDL qui génère les classes appropriées, les en-têtes, les talons, les proxies, etc. pour la langue de votre choix. Par exemple, IIOP.NET est une implémentation de Corba pour C#. Je n'ai aucune idée de comment c'est bon, mais il aurait un compilateur IDL qui crache les classes C#. Java a un compilateur IDL appelé idlj dans le cadre du JDK.

En théorie, vous pouvez donc avoir implémenté C# et Java à partir des mêmes classes &. Une autre façon de faire quelque chose de similaire serait d'utiliser un outil UML capable de générer du code source à partir d'un modèle. Une autre alternative serait d'utiliser quelque chose comme WSDL/XSD pour définir vos types d'interfaces, et de générer des stubs à partir de cela.

1

Jetez un oeil à IKVM.NET. Avec lui, vous pouvez écrire votre programme en Java (ou un langage JVM) et le transformer en un assemblage .NET. Vous aurez donc à la fois une version JVM et une version .NET de votre programme.

+0

Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et fournir le lien pour référence. Les réponses à lien uniquement peuvent devenir invalides si la page liée change. – Craigy

+0

@Craigy: ajouté un peu plus d'infos ... –