Necesitaba convertir una aplicación Java 1.5se a C# 2.0.¿Dónde puedo encontrar un convertidor de Java a C#?
¿Alguien sabe de una herramienta (preferiblemente de fuente libre/abierta) para hacer esto?
Necesitaba convertir una aplicación Java 1.5se a C# 2.0.¿Dónde puedo encontrar un convertidor de Java a C#?
¿Alguien sabe de una herramienta (preferiblemente de fuente libre/abierta) para hacer esto?
Java Language Conversion Assistant. Opcionalmente instalado con (al menos) Visual Studio 2005 Standard Edition.
Seleccione Archivo/Abrir/Convertir/Asistente de conversión de idioma Java.
Recuerde revisar manualmente el código posteriormente. Tendrá muchos problemas.
¿Hay alguna otra alternativa en la conversión de Java a C#? He utilizado con éxito VS2005 para convertir código Java a C# sin demasiadas modificaciones a mano y realmente me gusta. – Gant
No solo tendrá problemas en el nivel de implementación, sino que no se diseñará de manera idiomática .NET. Nuevamente digo, portar a mano ... –
¡La herramienta es genial! Gracias – CSharpDevLondon
Incluso si existe una herramienta así, le recomiendo encarecidamente que realice la conversión a mano. Con frecuencia, los convertidores automáticos reproducirán fielmente el código, pero ignorarán las expresiones idiomáticas, porque sería muy, muy difícil hacerlo bien.
Además, las diferencias entre los genéricos en .NET y Java podrían llevar a decisiones muy diferentes en las dos bases de código.
Realmente, será mejor que lo hagas a mano.
Estoy de acuerdo. Miré el Asistente de conversión de lenguaje Java para un proyecto relativamente pequeño y el trabajo de limpieza necesario después de la conversión no fue significativamente menor que el trabajo necesario para una nueva escritura. –
Lo mismo, pero más de una vez a pesar de advertir enfáticamente a los clientes respectivos. –
Microsoft solía tener su propio Java a C# Converter - Microsoft Java Language Conversion Assistant 3.0
parece que no está disponible para su descarga? –
ikvm expone clases de Java en .NET. No es un convertidor, pero basado en mi experiencia lo recomendaría a cualquiera que haga la transición de Java a .NET
Si bien la sintaxis de los dos idiomas parece similar, la semántica es muy diferente. Por mencionar algunos lugares las dos lenguas que se extravíe
En otras palabras, no podrá realizar dicha transición automáticamente. Si la razón para cambiar a C# es poder traducir su código a un archivo .exe, también hay varias opciones en el mercado de Java.
C# tiene clases anidadas. Pensé que estabas equivocado, hice un poco de investigación y parece que las clases internas (una cosa de Java) son diferentes de las clases anidadas (presentes en ambos). Una sutileza interesante aunque oscura. –
Sí clases internas y clases anidadas no son lo mismo. –
Una buena herramienta para usar se llama Sharpen, que es de código abierto.
Esta herramienta ha sido bifurcada y actualizada por el equipo Xamarin y la usaron para traducir las API de Android en C#.Su copia se puede encontrar aquí:
En este momento, estoy probando solución tangible (que no es gratis)
Y añado una clase auxiliar . Pero fuera de eso, el resultado se ve bien.
Java: (original)
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;
C# (conversión)
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;
Es un caso fácil, pero funciona bien. Sin embargo, como dije antes, utiliza un Class Helper (StringHelperClass.StringSplit) que está bien, pero es innecesario. Fuera de él, el código de resultado es bastante claro.
¿Has probado XMLVM? Tiene una opción para convertir automáticamente a C# como esto:
xmlvm --in=myjar.jar --out=output_dir --target=csharp
androide Recientemente Xamarin han portado a mono usando afilar. Consulte el enlace this.
Se agregó Bounty porque el Asistente de conversión de idioma Java ya no está disponible. He encontrado a Sharpen, pero ¿hay otras herramientas para eso? – Residuum