Как мне преобразовать код Java в код C #? - PullRequest
5 голосов
/ 04 октября 2008

Я портирую библиотеку Java на C #. Я использую Visual Studio 2008, поэтому у меня нет прекращенной программы Microsoft Java Language Conversion Assistant (JLCA).

Мой подход состоит в том, чтобы создать новое решение с аналогичной структурой проекта в библиотеке Java, а затем скопировать Java-код в файл c # и преобразовать его в действительный c # построчно. Учитывая, что я нахожу Java легким для чтения, тонкие различия в двух языках меня удивили.

Некоторые вещи легко переносить (пространства имен, наследование и т. Д.), Но некоторые вещи неожиданно изменились, например, видимость закрытых членов во вложенных классах, переопределение виртуальных методов и поведение встроенных типов. Я не до конца понимаю эти вещи, и я уверен, что есть много других отличий, которые я еще не видел.

У меня долгий путь в этом проекте. Какие практические правила я могу применить во время этого преобразования, чтобы правильно управлять языковыми различиями?

Ответы [ 6 ]

3 голосов
/ 04 октября 2008

Пара других опций, которые стоит отметить:

  • J # - это язык Java от Microsoft реализация на .NET. Вы можете доступ к библиотекам Java (до версии 1.4 *, в любом случае). * фактически Java 1.1.4 для java.io/lang, и 1.2 для java.util + имейте в виду, что J # конец жизнь ~ 2015-2017 для J # 2.0 redist

  • IKVM Mono также работает на Java CLR, с доступом к другим .NET программы.

  • Microsoft Visual Studio 2005 поставляется с "преобразованием языка Java помощник ", который преобразует Java программы на C # программы автоматически для вас.

3 голосов
/ 04 октября 2008

Вы делаете это единственно разумным способом, каким только можете ... самым большим подспорьем будет этот документ от Dare Obasanjo, в котором перечислены различия между двумя языками:

http://www.25hoursaday.com/CsharpVsJava.html

Кстати, измените все методы getter и setter на свойства ... Нет необходимости использовать библиотеку C # точно так же, как библиотеку java, если вы не хотите идеальной совместимости интерфейса.

1 голос
/ 04 октября 2008

Еще одна быстрая и грязная идея: вы можете использовать IKVM для преобразования jar-файла Java в сборку .NET, а затем использовать Reflector - в сочетании с FileDisassembler Надстройка - для разборки его в проект Visual C #.

(Кстати, я на самом деле не использовал IKVM - кто-нибудь хочет поручиться, что этот процесс будет работать?)

1 голос
/ 04 октября 2008

Если у вас небольшое количество кода, то построчное преобразование, вероятно, наиболее эффективно.

Если у вас большой код, я бы подумал:

  1. В поисках продукта, который подойдет для вас.
  2. Написание сценария (Ruby или Perl может быть хорошим кандидатом), чтобы сделать преобразование для вас - по крайней мере, однообразный материал! Это может быть простой поиск / замена различий в ключевых словах и переименование файлов. Дает вам больше времени / пальцев, чтобы сосредоточиться на более сложных вещах.
0 голосов
/ 04 октября 2008

Я что-то слышал на днях о .net версии Java. Если бы такой монстр был доступен, вы могли бы просто скомпилировать исходный код Java в промежуточные библиотеки .net?

0 голосов
/ 04 октября 2008

Я не уверен, что это действительно лучший способ конвертировать код построчно, особенно если препятствия становятся непреодолимыми. Конечно, Java-код дает вам руководство и базовую структуру, но я думаю, в конце самое важное, что библиотека предоставляет те же функции, что и в Java.

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