Как переписать или преобразовать код C# в код Java?

StackOverflow https://stackoverflow.com/questions/65058

  •  09-06-2019
  •  | 
  •  

Вопрос

Я начинаю писать клиент-серверное приложение, используя .net (C#) как для клиентской, так и для серверной стороны.

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

Есть ли хороший способ перевести код C# на Java?Серверное приложение не использовало никаких специфических функций .net, а использовало только межъязыковые инструменты, такие как Spring.net, Hibernate.net и log4net.

Спасибо.

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

Решение

Я бы предложил построить для Mono.Вы столкнетесь с некоторой серой зоной, но в целом это здорово.Однако, если вы хотите построить для Java, вы можете проверить Кузнечик.Это коммерческий продукт, но он утверждает, что способен транслировать CIL (выходные данные компилятора C#) в байт-коды Java.

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

Помимо возможных решений, прямой перевод программ, написанных на одном языке, на другой язык обычно считается плохой идеей™, особенно если этот перевод выполняется каким-либо автоматическим способом.Даже если это делает «настоящий» программист, построчный перевод приложения часто приводит к нежелательному конечному результату, поскольку каждый язык имеет свои собственные идиомы, сильные и слабые стороны, которые требуют, чтобы все было сделано немного по-другому.

Как бы болезненно это ни было, вероятно, в ваших интересах и в интересах тех, кто должен поддерживать это приложение, переписать его на Java, если этого требует ваш работодатель.

Я знаю только другой путь. Дбо4 разработан на Java, а версия C# автоматически генерируется из исходных кодов Java.

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

Хотя я думаю, что первой ошибкой был выбор языка реализации без обеспечения подходящей среды развертывания, сейчас с этим ничего нельзя поделать.Я думаю, что способ Mono будет лучше.Необходимость переписывать код только увеличит стоимость проекта, особенно если у вас уже есть большой объем кода, написанного на C#.Лично я стараюсь по возможности избегать переписывания кода.

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

Grasshopper — действительно лучшее решение на данный момент, если вас устраивает лицензирование (бесплатная версия имеет некоторые существенные ограничения).Он полностью основан на библиотеках классов Mono (которые на самом деле довольно хороши), но работает поверх стандартных виртуальных машин Java.Это хорошо, поскольку, по моему опыту, виртуальные машины Java обычно немного быстрее и стабильнее, чем Mono.У него больше недостатков, чем у Mono, когда дело касается API-интерфейсов, связанных с формами/графикой, однако большая часть этого не была перенесена на Java из виртуальной машины Mono.

Хотя в тех случаях, когда это работает, это может быть замечательно.Иногда производительность даже лучше, чем при запуске того же кода на виртуальной машине MS в Windows.:)

Я бы сказал, с точки зрения обслуживания, перепишите код.Это увеличит первоначальную стоимость проекта, но впоследствии будет менее трудоемким для тех, кто смотрит на код.Как и в предыдущих плакатах, говорилось, что что-либо автоматизированное, подобное этому, не может выполнять работу так же хорошо, как «настоящий» программист, и построчное преобразование тоже не сильно поможет.Вы не хотите позже создавать код, который работает, но поддерживать его — ад.

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