Как мне преобразовать код Java в код C #?
=========================================

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

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

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

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

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

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

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



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

Если у вас есть большой объем кода, я бы рассмотрел:

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

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



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



Пара других вариантов стоит отметить:

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

[Моно'с ИКВМ](https://www.mono-project.com/Java) также запускает Java на CLR с доступом к другим программам .NET.

Microsoft Visual Studio 2005 поставляется сПомощник по преобразованию языка Java » которая автоматически конвертирует Java-программы в программы на C #.



Еще одна быстрая идея: вы можете использовать[IKVM](http://www.ikvm.net/) преобразовать Java-jar в сборку .NET, а затем использовать[рефлектор](https://www.red-gate.com/products/reflector/index.htm)- в сочетании с[FileDisassembler](https://www.codeplex.com/reflectoraddins) Надстройка - чтобы разобрать его в проект Visual C #.

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