Вопрос

У меня есть кодовая база среднего размера (25 тыс. строк кода, 25 тыс. строк тестов) в Java, и я хотел бы портировать ее для работы как в CLR, так и в JVM.

Только основной класс и несколько утилит тестирования каким-либо образом имеют дело с файловой системой или ОС.Остальная часть кода широко использует API-интерфейсы общих коллекций: java.util.regex, java.net (но не URL или URLConnection), java.io для кодирования/декодирования кодировки, java.text для нормализации Юникода и org.w3c. dom для манипуляций с XML.

Можно ли скомпилировать большую часть кодовой базы как под J#, так и под Java, а затем портировать остальное?

Если да, то с какими подводными камнями я могу столкнуться?

заранее спасибо, Майк

Это было полезно?

Решение

Посмотрите IKVM: http://www.ikvm.net/

Он позволяет запускать (специально скомпилированный) Java-код внутри .Net CLR.

Некоторые из моих коллег успешно использовали его с кодовой базой Java, насчитывающей более 1 миллиона строк кода.

Другие советы

Подводные камни:

  • Все подобное пугает меня до чертиков.Количество действительно незаметных ошибок, ожидающих своего появления, огромно.
  • J# поддерживает только Java 1.1.4 AFAIK – прощайте, дженерики и т. д.
  • Visual Studio 2008 не поддерживает J# — по сути, это мертвый проект.

Я подозреваю, что вам на самом деле будет проще переписать его на C# (включая изучение C#, если вы его еще не знаете - это радость).Таким образом, вы также получите более идиоматически .NET-подобную библиотеку, если это актуально:Если вы когда-нибудь захотите, чтобы другой .NET-разработчик использовал ваш код, он, скорее всего, будет гораздо более доволен «чистым» проектом .NET, чем проектом, использующим J#.

Обратной стороной является то, что в дальнейшем любые изменения также придется вносить в двух местах.Здесь, конечно, есть неудобства, но я действительно думаю, что вам будет удобнее использовать «обычный» .NET.

Как заметил Джон:J# довольно мертв.

Запуск вашего (обычного) кода Java в .NET с использованием ИКВМ хотя это может быть альтернативой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top