Где я могу найти конвертер Java в С#?
Мне нужно было преобразовать приложение Java 1.5se в С# 2.0.
Кто-нибудь знает инструмент (предпочтительно свободный/открытый источник) для этого?
Ответы
Ответ 1
Ассистент преобразования языка Java. Необязательно устанавливается с (по крайней мере) Visual Studio 2005 Standard Edition.
Выберите "File/Open/Convert/Java Language Conversion Assistant".
Не забудьте вручную перейти через код. У него будет много проблем.
Ответ 2
Даже если есть такой инструмент, я настоятельно рекомендую вам выполнить преобразование вручную. Автоматические преобразователи часто точно воспроизводят код, но игнорируют идиомы - потому что им действительно будет очень трудно получить право.
Кроме того, различия между генериками в .NET и Java могут привести к очень различным решениям в двух кодовых файлах.
Действительно, вам будет лучше делать это вручную.
Ответ 3
Хороший инструмент для использования называется Sharpen, который является открытым исходным кодом.
Этот инструмент был разветвлен и обновлен командой Xamarin, и они использовали его для перевода API-интерфейсов Android на С#. Их копию можно найти здесь:
Ответ 4
ikvm предоставляет классы Java в .NET. Это не конвертер, но, основываясь на моем опыте, я бы рекомендовал его любому, кто перешел с java на .NET.
Ответ 5
В то время как синтаксис двух языков кажется похожим, семантика сильно отличается. Чтобы упомянуть несколько мест, оба языка сбились с пути
- Generics, Java компилирует все объекты, С# сохраняет общие типы
- Исключения, Java проверяет исключения, С# не
- Анонимные классы и внутренние классы, Java имеет анонимные классы и вложенные классы, у С# нет ни одного. Вместо этого у С# есть делегаты и события. Таким образом, модель программирования отличается от других.
- делегаты, С# имеет понятие указателей функций, что приводит к другому способу программирования.
- события, С# имеет представление о событиях и компонентах, которые приводят к другому способу программирования.
- API, устанавливая все семантические различия в стороне, оба langauges обладают огромными API-интерфейсами, ни один из которых не преобразуется тривиально.
Другими словами, вы не сможете сделать такой переход автоматически. Если причиной перехода на С# является возможность перевода кода в файл .exe, на рынке Java существуют различные варианты.
Ответ 6
Сейчас я тестирую Tangible Solution (это не бесплатно)
Конвертер Tangible Source
И он добавит помощника класса. Но вне его результат выглядит отлично.
Java: (оригинал)
public class PackVariableArrays {
private ClassError myerror=new ClassError();
public VariableArrays unpack(String txt) {
VariableArrays pc = new VariableArrays();
Variable lc;
txt=txt.replace("\r\n","\n");
setMyerror(new ClassError());
if (txt==null) {
lc=new Variable();
lc.name="ERV-5: Empty values";
pc.addItem(lc);
return pc;
}
String[] linecode = txt.split(ClassUtil.SEPARATOR2);
int blen = 0;
int tmpint = 0;
int numelement = 9999;
С# (преобразование)
public class PackVariableArrays {
private ClassError myerror =new ClassError();
public virtual VariableArrays unpack(string txt) {
VariableArrays pc = new VariableArrays();
Variable lc;
txt=txt.Replace("\r\n","\n");
Myerror = new ClassError();
if (txt==null) {
lc=new Variable();
lc.name="ERV-5: Empty values";
pc.addItem(lc);
return pc;
}
string[] linecode = StringHelperClass.StringSplit(txt, ClassUtil.SEPARATOR2, true);
int blen = 0;
int tmpint = 0;
int numelement = 9999;
Это простой случай, но он отлично работает. Однако, как я сказал раньше, он использует помощник класса (StringHelperClass.StringSplit), который хорош, но он не нужен. Вне этого, код результата довольно ясен.
Ответ 7
Microsoft использовала свой собственный конвертер Java в С# - Microsoft Java Language Conversion Assistant 3.0
Ответ 8
Вы пробовали XMLVM?
У него есть возможность автоматически конвертировать в С#, как это:
xmlvm --in=myjar.jar --out=output_dir --target=csharp
Ответ 9
Недавно Xamarin портировал андроид на моно, используя sharpen. Проверьте эту ссылку.