Как переписать или преобразовать код C # в код Java? - PullRequest
4 голосов
/ 15 сентября 2008

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

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

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

Спасибо.

Ответы [ 8 ]

6 голосов
/ 15 сентября 2008

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

4 голосов
/ 15 сентября 2008

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

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

0 голосов
/ 16 сентября 2008

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

0 голосов
/ 15 сентября 2008

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

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

0 голосов
/ 15 сентября 2008

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

0 голосов
/ 15 сентября 2008

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

0 голосов
/ 15 сентября 2008

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

0 голосов
/ 15 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...