2009-04-11 26 views
10

Con algunos cambios en la dotación de personal en la oficina, los niveles de experiencia en C# se han reducido de manera precipitada y ahora hay más desarrolladores de Java. Ha llegado al punto en que los superiores están considerando mover un proyecto .NET existente escrito en C# al mundo Java.Migración de un proyecto de C# a Java

Además del problema obvio de starting completely from scratch, ¿cuáles son las posibles maneras en que esta empresa puede llevar a cabo un movimiento exitoso de desarrollo en un proyecto de .NET C# en Java?

Respuesta

18

Estas son las cosas a tener en cuenta:

  • Es este gran proyecto? En caso afirmativo, intente seguir con C#
  • ¿Este proyecto de tamaño mediano tiene componentes? Si es No, intente seguir con C#
  • ¿Este pequeño proyecto está destinado a implementarse solo en Windows? En caso afirmativo, intente seguir con C#
  • ¿Es este el código fuente anterior? Si es así, intente seguir con C#
  • ¿Utiliza API específicas de Windows OS? Si es así, intente seguir con C#
  • ¿Utiliza alguna API de terceros sin homólogo de Java? En caso afirmativo, intente seguir con C#
  • ¿Utiliza .Net en "profundidad" (enlace de datos, controles de usuario, etc.)? En caso afirmativo, intente seguir con C#
  • El tiempo de migración es más aceptable que obtener chicos C/nuevos/convertidos? Si no, intente seguir con C#
  • ¿Cree que los usuarios finales no serán receptivos a los cambios, si va a utilizar el framework Java que cambiará la presentación?Si es así, trate de cumplir con C#
  • Verificar comerciales

Si decide convertir:

  • Ir por componente
  • Ir por capa
  • tienen un montón de pruebas
  • Compruebe si hay herramientas para ayudar (aunque sea poca ayuda) con la migración
+0

por qué "# ¿Este pequeño proyecto está destinado a implementarse solo en Windows? En caso afirmativo, intente seguir con C#" ¿asunto? Creo que te perdiste: ¿es una GUI? intente seguir con C# – Egwor

+0

Si es un proyecto pequeño, entonces no vale la pena convertirlo a Java cuando todavía hay pocos programadores de C# disponibles. Pero si es necesario ejecutar en diferentes sistemas operativos, entonces vale la pena convertir. Creo que el punto de la GUI está cubierto por cambios en la presentación y gana llamadas API. – isntn

2

Si hay componentes que ya están aislados o alguno de ellos usa una arquitectura orientada a servicios, es posible que migre un componente a la vez (donde cada componente individual es una reescritura) y aún así los componentes se comunican con uno otro usando los mismos protocolos de red interoperables. Probablemente dependa del tipo de aplicación de la que estamos hablando.

2

Asegúrate de tener toneladas de pruebas, porque dicha migración te morderá donde menos lo esperas.

1

Tiene más .Net o más aplicaciones Java en producción. Si ya tiene una inversión sustancial en servidores y aplicaciones .Net, ¿por qué no pedir voluntarios entre los desarrolladores de Java para migrar a .Net? El lenguaje y la sintaxis son muy similares, por lo que la parte difícil sería aprender el marco y, a menos que dediquen todo su tiempo a desarrollar la interfaz de usuario, incluso aprender el marco no es tan difícil.

En nuestra oficina tenemos varios desarrolladores muy buenos que se mueven entre Java y .Net según sea necesario.

15

Solo para agregar a las opiniones de Brian y Eric, diría que elegir C# para un desarrollador de Java debería ser sencillo en mi opinión. En términos conceptuales, son idiomas muy similares y yo sugeriría que capacites a los desarrolladores de Java para que obtengan algunas habilidades de C#, por lo que no se verán obligados a pasar por la molestia de un proceso de migración.

0

No soy un experto en Java, pero desde mi experiencia de trabajo con código Java siendo a la vez un # ventilador C, los siguientes son algunos de los posibles dolores de cabeza:

  • genéricos se implementan de forma diferente en Java y C#.
  • boxeo/comportamientos Unboxing son diferentes entre Java y C#
  • Java convención de nombres de clase + un montón de código C#
  • manejo de cadenas (es decir Unicode preocupaciones/ASCII) puede ser problemático en función de la calidad de Java/C# código que se genera portado sobre.

Personalmente, no creo que escribir desde cero sea una mala idea. Ya que tienes una arquitectura funcional

1

Para demostrarle a la gerencia, siempre necesita hablar en términos de ROI y números. Demuéstrales que si mueves estas aplicaciones, tomará una gran cantidad de tiempo, recursos de control de calidad, y puede quedar atrás si se le quita prioridad debido a que otro proyecto o desarrollo nuevo toma importancia.

que tuvieron éxito cuando les mostré la líneas de tiempo, retorno de la inversión, trabajo en cuestión, dinero en juego, etc.

Así que ahora llegando al punto real, creo que los desarrolladores de Java serían capaces de soportar C# a menos que tengan algún bloqueo mental fundamental contra las tecnologías de Microsoft.

1

Eche un vistazo a Net2Java, que puede ayudar a convertir su código de C# a Java. Dudo que sea perfecto, pero es una manera de eliminar una gran cantidad de tareas pesadas de la tarea, dejándote con las fallas de las llamadas marco incompatibles y las características del lenguaje para resolver.

Una vez que haya hecho eso, su tarea es como cualquier otro gran proyecto de migración: probar, probar y probar nuevamente. Pruebas unitarias, pruebas de integración del sistema, luego pruebas del usuario final. Debe tener esas pruebas que ya utilizó y que utilizó con la aplicación original, además de las pruebas unitarias, seguirán siendo relevantes.

0

Estoy algo sorprendido de que nadie haya sugerido la idea de rechazar la migración.

No creo que un desarrollador de C# se vea obligado a cambiar a Java (o viceversa) porque le dijeron que (bueno, si lo amenazan con un arma, entonces tal vez). Me toma mucho tiempo, ejercicio y pasión para dominar al menos una pila de tecnología. Simplemente no puede comenzar de la noche a la mañana con una nueva tecnología y espera proporcionar la misma calidad.

Personalmente no me molesté hasta que me dijeron que comenzara la migración. En ese momento, le diría al gerente que soy .NET y que no cambiaré a otra tecnología simplemente porque así lo decidieron.

En cuanto a la parte técnica, no es la sintaxis del lenguaje que difiere, sino más bien las bibliotecas y sus características. Por supuesto, si todos los últimos detalles de .NET 3.5 han sido ampliamente utilizados, la diferencia de idioma le proporcionará un verdadero desafío.

Eso es ciertamente una manera divertida, solo decide migrar aplicaciones de .NET a Java. Alguien no tiene idea de la molestia involucrada ...

+0

hace lo que le dice su jefe, hay un montón de desarrolladores desempleados dispuestos a codificar lo que sea necesario. Si fuera el dueño del negocio, sería diferente. – gbjbaanb

3

Independientemente de los idiomas involucrados, la gestión de esta empresa parece una locura. Para cualquier otra cosa que no sea una aplicación trivial, ¿cómo puede ser económicamente sensato reescribir una base de código completa desde cero en lugar de simplemente contratar a una sola persona con algunas habilidades en el idioma correcto? ¿Es esto un negocio con ese problema bien conocido: demasiado dinero extra?

¿Cuánto tiempo lleva el código existente en desarrollo? Si apenas ha comenzado, podría entender esto. Si se ve un lanzamiento y tiene usuarios activos, será nunca tiene sentido tirarlo. Si donó el código C# a una empresa emergente con las habilidades correctas, piense qué ventaja podrían tener sobre usted.

3

Antes de terminar de convertir el proyecto .NET en Java, todos los desarrolladores de Java que formaron parte del proyecto de conversión habrán aprendido C#. Entonces ya no es necesario convertirlo a Java (y puedes descartar todo el código Java que se produjo en la conversión), porque ahora tienes un equipo de desarrollo que puede hacer tanto Java como C#. Problema resuelto. : D

5

Me suscribo a la opinión de Joel que a total rewrite is almost always a mistake. Otros carteles son correctos: C# y Java son lo suficientemente similares como para que cualquier desarrollador competente de Java pueda ser competente en C# en cuestión de semanas o meses. Eso no quiere decir que serán expertos. Eso lleva más tiempo, pero mientras tengas algunos desarrolladores de C# que puedan guiar el proceso, entonces deberías estar bien.

Es difícil comentar si esa transición es una buena o mala idea sin conocer los detalles de su aplicación: tamaño, tipo de aplicación, industria, etc.

Sería extremadamente reticente a este tipo de cambio porque, en mi humilde opinión, C# is now a much more modern language than Java y le digo esto como alguien que ha sido desarrollador de Java por más de una década (desde el 1.0.2/1.1 días).

Eso no quiere decir que Java sea malo. No es. Sun tiene una nube suspendida sobre él y demostró una falta de voluntad o incapacidad para impulsar la plataforma en los últimos años.

1

Si se decide hacer esto, lo más probable es que se beneficie de un enfoque híbrido donde básicamente puede mezclar C# y Java en la misma aplicación, ya que cambiará el escenario de una conversión de cascada a una migración gradual. Aquí conozco dos posibilidades:

1) ikvm (http://www.ikvm.net/) que le permiten ejecutar código Java en .NET-runtime. Esto permite que el código Java llame al código C# y viceversa. Luego puede congelar el desarrollo del código C# y agregar lentamente la funcionalidad revisada a la parte Java mientras mantiene una aplicación funcional.

2) Mainsoft (http://dev.mainsoft.com/Default.aspx?tabid=130) que le permite compilar .NET-bytecode en bytecode de Java. Tienen una versión de entrada gratuita. No tengo experiencia con el producto, pero se anuncian mucho en nuestra plataforma, que solo tiene Java disponible.

+0

Parece que Mainsoft es completamente gratis ahora. –

Cuestiones relacionadas