2010-02-05 23 views

Respuesta

11

Lamentablemente, generalmente hay un esfuerzo mucho mayor involucrado en proyectos tan grandes. Lo que es eficiente en un idioma puede no estar en otro, y lo más importante es que existe en un idioma y no en otro. NHibernate, por ejemplo, tomó años para realizar un cambio de puerto, y todavía lo están haciendo (aunque añadiendo funciones todo el tiempo, como Linq).

Por lo general, es una cuestión de emplazamiento y clases de portabilidad, una por una, optimizando cuando sea posible, cambiando las estructuras donde sea necesario. Cosas como genéricos, alias y boxeo cambian en el puerto. Luego, después de que todo termine, a menudo queda mucho por hacer (por supuesto, esto es opcional ...), tal vez sean eventos, tal vez sean estáticas y métodos de extensión, podría ser cualquier cosa que ofrezca su nueva plataforma/idioma. que el viejo no.

Piénselo de esta manera, ¿por qué lo está transfiriendo a .Net? Apostaría a decir que estás en una de dos situaciones, una estás atrapado usando .Net debido al trabajo (doh, lo siento!) O como .Net porque te ofrece alguna ventaja. En la segunda categoría, eso significa que lo eligió sobre Java, por lo que en la migración de puertos querría aprovechar las funciones que le hicieron elegir .Net en primer lugar.

+0

@Nick gracias por su respuesta. Afortunadamente, no transfiero nada de Java a .NET (o viceversa), pero siempre he tenido curiosidad sobre cómo se hizo. Lo obvio de su respuesta es que es un proceso largo con una gran inversión de tiempo y aquellos que realizan el traspaso de un idioma a otro merecen mucho más reconocimiento del que obtienen. – Kane

+0

@Kane - Hay otro factor en esa línea, ¿cuánto le importó ** a quien lo hizo ** y, hasta cierto punto, sabía sobre el marco de destino, cuanto más sabes mejor y más rápido puedes hacerlo? . Está el puerto rápido y sucio sin optimización, luego hay hermosos puertos que aprovechan al máximo el lenguaje/marco ... estos toman mucho más tiempo pero son tremendamente útiles para la comunidad. –

4

Como dijo Nick, dijo que no es tan simple. Se trata de mucho más que solo el código de portado, especialmente si la arquitectura de la aplicación que desea portar no es tan buena. Desea utilizar las características del idioma al que está realizando la migración y, a veces, son decisiones de diseño que puede cambiar porque no le parecen adecuadas. No voy a reiterar lo que dijo Nick, pero me gustaría agregar lo siguiente.

Recomendaría seguir el desarrollo de Noda Time, que es el intento de Jon Skeet para transferir Joda Time de Java a .Net. Jon es en realidad documentando la experiencia en el siguiente blog:

http://noda-time.blogspot.com/

recomendaría siguiendo el blog, la página de grupos de Google para este proyecto, y el proyecto de código de Google. Los grupos de google y los enlaces de la página de códigos se pueden encontrar en una de las publicaciones en el blog.

+0

+1 para John Skeet. Puede tomar sus palabras como la verdad del Evangelio. :) –

+0

Uno de los mejores ejemplos posibles, Jon conoce mejor el framework que la mayoría y puede ver cómo se ve un puerto adecuado, aprovechando las características del destino. +1 Waleed –

Cuestiones relacionadas