online net mejor c# java

c# - mejor - java vs.net 2018



¿Dónde puedo encontrar un convertidor de Java a C#? (9)

Necesitaba convertir una aplicación Java 1.5se a C # 2.0.

¿Alguien sabe de una herramienta (preferiblemente de fuente libre / abierta) para hacer esto?


¿Has probado XMLVM ? Tiene una opción para convertir automáticamente a C # de esta manera:

xmlvm --in=myjar.jar --out=output_dir --target=csharp


En este momento, estoy probando Tangible Solution (que no es gratis)

Convertidor de fuente tangible

Y agrega un Ayudante de clase. 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.


Incluso si existe una herramienta de este tipo, 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.




Si bien la sintaxis de los dos idiomas parece similar, la semántica es muy diferente. Por mencionar algunos lugares, los dos idiomas se extravían

  • Generics, Java compila todo para los objetos, C # conserva los tipos genéricos
  • Excepciones, Java ha verificado excepciones, C # no
  • Clases anónimas y clases internas, Java tiene clases anónimas y clases anidadas, C # no tiene ninguno. En cambio C # tiene delegados y eventos. El modelo de programación es por lo tanto muy diferente
  • delegados, C # tiene la noción de punteros de función que conduce a una forma diferente de programación.
  • eventos, C # tiene la noción de eventos y componentes que conduce a una forma diferente de programación.
  • API, dejando a un lado todas las diferencias semánticas, ambos langauges han asociado enormes API, ninguna de las cuales se convierte trivialmente.

En otras palabras, no podrá hacer esa 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.


Una buena herramienta para usar se llama Sharpen, que es de código abierto.

Esta herramienta ha sido bifurcada y actualizada por el equipo de Xamarin y la usaron para traducir las API de Android en C #. Su copia se puede encontrar aquí:


Asistente de conversión de lenguaje Java . Opcionalmente instalado con (al menos) Visual Studio 2005 Standard Edition.

Seleccione File / Open / Convert / Java Language Conversion Assistant.

Recuerde revisar el código manualmente luego. Tendrá muchos problemas.


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