2008-10-03 7 views
5

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

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

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

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

+0

Смотрите здесь для предложений по автоматизированной Java-к-C# конверсии: HTTP: // StackOverflow .com/questions/443010/where-can-i-find-a-java-to-c-sharp-converter – 2012-11-06 18:02:49

ответ

3

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

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

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

+0

Спасибо за ссылку - это отличный справочный материал для того, что я делаю. – Lee 2008-10-05 13:36:32

+0

«Измените все методы getter и setter в свойствах» - лучше подумайте об этом. Правильнее было бы сказать, измените свойства [как указано в руководствах MSDN] (https://msdn.microsoft.com/en-us/library/ms229054 (v = vs.100) .aspx). Мне просто пришлось вернуть кучу «свойств» обратно в методы, которые были 1) установлены без get 2) недетерминированные 3) возвращенные встроенные массивы ... что кто-то еще сделал. Слепо преобразование в свойства без учета того, что свойства должны действовать как поля, не является хорошей стратегией. Если у вас есть сомнения, держите его в порядке. – NightOwl888 2017-02-04 04:10:25

0

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

0

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

+0

Это действительно существует? Если да, то откуда вы узнали об этом? – 2012-11-06 18:03:45

+0

Извините, не могу найти его сейчас. Я считаю, что это было добавление для некоторого продукта (не бесплатный язык), но я должен был схватить ссылки. Heck, что было 4 года назад в любом случае - если бы это был продукт, он почти наверняка ушел сейчас! :( – 2012-11-10 23:41:03

1

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

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

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

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

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

  • Mono's IKVM также работает Java на СЕК, доступ к другим программам .NET .

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

1

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

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

Смежные вопросы