Таргетинг на несколько языков программирования / платформ - PullRequest
3 голосов
/ 07 сентября 2010

Существуют ли хорошие способы определения интерфейсов / иерархий классов не зависящим от языка способом, а затем генерировать соответствующий исходный код на указанных языках? В частности, мне нужно ориентироваться как на Java, так и на C # для создания довольно полного API, который я создаю. Я помню, как однажды увидел пост здесь на SF, где в ответе упоминался язык программирования, «скомпилированный» для других языков, но я не смог найти пост. Этот язык может быть решением для того, что я пытаюсь сделать.

Спасибо

Andy

Ответы [ 3 ]

4 голосов
/ 07 сентября 2010

Множество способов сделать что-то вроде того, что вы хотите.

Например, вы можете посмотреть на использование языка определения интерфейса (IDL).IDL Corba позволяет вам объявлять объекты и интерфейсы не зависящим от языка способом.Эти idl-файлы затем запускаются через компилятор IDL, который выводит соответствующие классы, заголовки, заглушки, прокси и т. Д. Для выбранного вами языка.

Например, IIOP.NET - это реализация Corba для C #.Я понятия не имею, насколько это хорошо, но он будет иметь компилятор IDL, который выплевывает классы C #.В Java есть компилятор IDL, называемый idlj, как часть JDK.

Теоретически, вы могли бы реализовать C # и Java из одних и тех же интерфейсов и классов.

Еще один способ сделать что-то подобноеиспользовать инструмент UML, который может генерировать исходный код из модели.

Другая альтернатива - использовать что-то вроде WSDL / XSD для определения ваших интерфейсов и типов и генерировать из них заглушки.

4 голосов
/ 07 сентября 2010

Рассматривали ли вы UML ? Легко найти генераторы кода из UML для множества разных языков (например, , этот может генерировать код на C #, Java и VB.NET), но вы, возможно, захотите тщательно оценить, является ли это правильным выбором для вы. Как стандарт, он подвергся существенной критике за эти годы.

1 голос
/ 07 сентября 2010

Взгляните на IKVM.NET . С его помощью вы можете написать свою программу на Java (или языке JVM) и преобразовать ее в сборку .NET. Так что у вас будет и JVM, и версия .NET вашей программы.

...