Перенос Java в C# для Xamarin.Android

Этот подход может быть интересным для организаций, которые:

  • Меняют стеки технологий с Java на C#.
  • Должны поддерживать версию C# и Java того же продукта.
  • Хотят иметь версию .NET популярной библиотеки Java.

Существует два способа переноса кода Java в C#. Первый способ — перенести код вручную. Для этого привлекаются опытные разработчики, которые имеют знания как о .NET, так и Java, а также правильных идиомах для каждого языка. Такой подход наиболее удобен для небольших объемов кода или для организаций, которые хотят полностью перейти с Java на C#.

Вторая методика переноса заключается в том, чтобы попытаться автоматизировать процесс с помощью преобразователя кода, например Sharpen. Sharpen — открытый конвертер от Versant, который изначально использовался для переноса кода db4o с Java на C#. db4o — это объектно-ориентированная база данных, которая была разработана Versant в Java, а затем перенесена в .NET. Использование преобразователя кода может быть полезным для проектов, которые должны существовать на обоих языках и которые нуждаются в некоторой четности между этими двумя языками.

Пример, когда инструмент автоматического преобразования кода имеет смысл, можно посмотреть в проекте ngit. Ngit — это порт проекта Java jgit. Сам Jgit является Java-реализацией системы управления исходным кодом Git. Для создания кода на C# из Java, программисты ngit используют специальную автоматизированную систему для извлечения кода Java из jgit, применяют некоторые патчи для размещения процесса конвертации, а затем запускают Sharpen, который генерирует код C#. Это позволяет проекту ngit использовать преимущества непрерывной, текущей работы, выполняемой в jgit.

Зачастую с начальной загрузкой инструмента автоматического преобразования кода связан нетривиальный объем работ, и это может оказаться препятствием к его использованию. Во многих случаях перенос Java на C# может быть проще легче вручную.