studio - ¿Cómo debería convertir el código de Java al código de C#?
ordenar codigo en visual studio code (6)
Estoy portando una biblioteca de Java a C #. Estoy usando Visual Studio 2008, así que no tengo el programa de Asistente de conversión de lenguaje Microsoft Java (JLCA).
Mi enfoque es crear una nueva solución con una estructura de proyecto similar a la biblioteca de Java, y luego copiar el código de java en un archivo de CA y convertirlo a un valor válido de c # línea por línea. Considerando que encuentro Java fácil de leer, las diferencias sutiles en los dos idiomas me han sorprendido.
Algunas cosas son fáciles de portar (espacios de nombres, herencia, etc.) pero algunas cosas han sido inesperadamente diferentes, como la visibilidad de los miembros privados en las clases anidadas, la anulación de los métodos virtuales y el comportamiento de los tipos incorporados. No entiendo completamente estas cosas y estoy seguro de que hay muchas otras diferencias que aún no he visto.
Tengo un largo camino por recorrer en este proyecto. ¿Qué reglas básicas puedo aplicar durante esta conversión para gestionar las diferencias de idioma correctamente?
No estoy seguro de si realmente es la mejor forma de convertir el código línea por línea, especialmente si los obstáculos se vuelven abrumadores. Por supuesto, el código de Java le da una pauta y la estructura básica, pero creo que al final lo más importante es que la biblioteca proporciona la misma funcionalidad que en Java.
Oí algo el otro día sobre una versión .net de Java. Si ese monstruo estuviera disponible, ¿podría compilar el origen de Java en las bibliotecas intermedias .net?
Si lo haces de la única manera que puedas ... la mayor ayuda será este documento de Dare Obasanjo que enumera las diferencias entre los dos idiomas:
http://www.25hoursaday.com/CsharpVsJava.html
Por cierto, cambie todos los métodos getter y setter en propiedades ... No es necesario que la biblioteca C # funcione de la misma manera que la biblioteca java a menos que busque una compatibilidad de interfaz perfecta.
Si tiene una cantidad pequeña de código, entonces una conversión línea por línea es probablemente la más eficiente.
Si tiene una gran cantidad de código, consideraría:
- Buscando un producto que haga la conversación por usted.
- Escribir un guión (Ruby o Perl podría ser un buen candidato) para hacer la conversión por usted, ¡al menos las cosas monótonas! Podría ser una simple búsqueda / reemplazo para las diferencias de palabras clave y el cambio de nombre de los archivos. Te da más tiempo / dedos para concentrarte en las cosas más difíciles.
Una idea más rápida y sucia: podría usar IKVM para convertir el jar de Java en un ensamblado .NET, luego usar Reflector --combinado con el complemento FileDisassembler-- para desensamblarlo en un proyecto de Visual C #.
(Por cierto, en realidad, no he usado IKVM, ¿a quién le importa que este proceso funcione?)
Otras opciones que vale la pena mencionar:
J # es la implementación del lenguaje Java de Microsoft en .NET. Puede acceder a las bibliotecas de Java (hasta la versión 1.4 *, de todos modos). * en realidad Java 1.1.4 para java.io/lang, y 1.2 para java.util + tenga en cuenta que J # fin de vida es ~ 2015-2017 para J # 2.0 redist
Mono IKVM también ejecuta Java en el CLR, con acceso a otros programas .NET.
Microsoft Visual Studio 2005 viene con un "asistente de conversión de lenguaje Java" que convierte los programas Java en programas C # automáticamente para usted.