Pregunta

Con algunos cambios en la dotación de personal en la oficina, los niveles de C # experiencia ha caído precipitadamente y ahora hay más desarrolladores de Java. Se ha llegado al punto en que los de arriba están considerando mover un proyecto .NET existente escrito en C # en el mundo Java.

Aparte del problema obvio de comenzando desde cero ¿cuáles son las posibles formas en que esta empresa puede lograr un movimiento exitoso de desarrollo en un proyecto de .NET C # en Java?

¿Fue útil?

Solución

Estas son las cosas a tener en cuenta:

  • ¿Es este gran proyecto? En caso afirmativo, trate de cumplir con C #
  • ¿Es este proyecto de tamaño mediano con componentes? Si no, trate de cumplir con C #
  • ¿Es este pequeño proyecto destinado a ser desplegado en sólo ventanas? Si es así, trate de cumplir con C #
  • ¿Es este código fuente vieja? En caso afirmativo, trate de cumplir con C #
  • ¿Utiliza las API específicas del sistema operativo Windows? En caso afirmativo, trate de cumplir con C #
  • ¿Utiliza las API de terceros, sin contrapartida de Java? En caso afirmativo, trate de cumplir con C #
  • ¿Lo utiliza en .Net "profundos" (datos, controles de usuario, etc.) vinculantes? Si es así, trate de cumplir con C #
  • tiempo
  • La migración es más aceptable que conseguir nuevos / C # convertido chicos? Si no, trate de cumplir con C #
  • ¿Cree que los usuarios finales no serán receptivos a los cambios, si va a utilizar Java marco que va a cambiar la presentación? Si es así, trate de cumplir con C #
  • Control de entrada comerciales

Si decide convertir:

  • Vaya por componente
  • Ir por capa
  • Tienen un montón de pruebas
  • Comprobar si hay herramientas para ayudar (aunque sea pequeña ayuda puede ser) con la migración

Otros consejos

Sólo para añadir a Brian y opiniones de Eric, yo diría que recoger C # para un desarrollador de Java debe ser sencillo en mi opinión. Ellos son conceptualmente muy similares idiomas y sugeriría la formación de sus desarrolladores de Java para obtener algunos conocimientos de C # por lo que no se verá obligado a ir a la molestia de un proceso de migración.

Me suscribo a la opinión de que Joel una reescritura total es casi siempre un error . Otros carteles están en lo cierto: C # y Java son tan similares que cualquier desarrollador de Java competente debe ser capaz de ser competentes en C # en cuestión de semanas o meses. Eso no quiere decir que serán expertos. Para eso se necesita más tiempo, pero siempre y cuando usted tiene algunos desarrolladores de C # que pueden guiar el proceso, entonces debería estar bien.

Es difícil hacer comentarios sobre si o no dicha transición es una buena o mala idea sin conocer detalles de su aplicación:. Tamaño, tipo de aplicación, la industria y así sucesivamente

Me gustaría ser extremadamente reticentes a tal cambio, ya que, en mi humilde opinión, C # es ahora un lenguaje mucho más moderno que Java y lo digo a usted como alguien que ha sido un desarrollador de Java oFR más de una década (desde la 1.0.2 / 1.1 días).

Eso no quiere decir que Java es malo. No es. Sun tiene un colgante nube sobre ella y demostrado una falta de voluntad o incapacidad para conducir la plataforma hacia adelante en los últimos años.

A pesar de las lenguas implicadas, la gestión de esta empresa parece una locura. Para otra cosa que una aplicación trivial, ¿cómo puede ser económicamente razonable para volver a escribir toda una base de código desde cero en lugar de sólo la contratación de una sola persona con algunos conocimientos en el idioma correcto? ¿Es esta una empresa en ese problema bien conocido:?! Demasiado dinero extra

¿Cuánto tiempo ha sido el código existente en el desarrollo? Si se trata de apenas comenzó, podría entender esto. Si se ve un comunicado y cuenta con usuarios activos, será no tener sentido para tirarlo a la basura. Si usted donó el código C # para una puesta en marcha con los conocimientos adecuados, pensar en cuánto de una ventaja que tendrían sobre ti.

Antes de terminar de convertir el proyecto en .NET Java, todos los desarrolladores de Java que formaron parte del proyecto de conversión habrán aprendido C #. Así que entonces no es más que convertirlo a Java (y se puede tirar a la basura todo el código Java que se produjo en la conversión), porque ahora usted tiene un equipo de desarrollo que puede hacer ambas cosas Java y C #. Problema resuelto. : D

Si hay algunos componentes que ya están aisladas o cualquiera de que utiliza una arquitectura orientada a servicios, que posiblemente podría migrar un componente a la vez (en la que cada componente individual es una reescritura) y todavía tiene los componentes hablan entre sí utilizando los mismos protocolos de red interoperables. Probablemente depende de qué tipo de aplicación que estamos hablando.

Asegúrese de que tiene toneladas de pruebas , ya que dicha migración va a morder donde se espera que por lo menos.

¿Tiene aplicaciones Java más .Net o más en la producción. Si tu ya tienen una importante inversión en servidores y aplicaciones .Net, ¿por qué no pedir voluntarios entre los desarrolladores de Java para mover a .Net? El lenguaje y la sintaxis es muy similar, por lo que la parte más difícil sería aprender el marco y, a menos que se pasan todo el tiempo haciendo el desarrollo de interfaz de usuario incluso aprender el marco no es tan difícil.

En nuestra oficina tenemos una serie de muy buenos desarrolladores que van y vienen entre Java y .Net, según sea necesario.

Con el fin de demostrar a la administración, que siempre hay que hablar en términos de retorno de la inversión y los números. Mostrarles que si se mueve estas aplicaciones, se tardará enorme cantidad de tiempo, recursos de control de calidad, y puede fácilmente tomar un asiento trasero si consigue lista de prioridades a debido a algún otro proyecto o nuevos desarrollos teniendo importancia.

he tenido é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 # menos que tengan algún bloqueo mental fundamental contra Technolgies Microsoft.

Tener un vistazo a Net2Java , que puports para ayudar en la conversión de su código de C # para Java. Dudo que va a ser perfecto, pero su única forma de eliminar una gran cantidad de trabajo pesado de la tarea, dejándole con las torceduras de llamadas marco incompatibles y características del lenguaje para limar.

Una vez que hayas hecho esto, su tarea es como cualquier otro gran proyecto de migración - prueba, prueba y prueba de nuevo. Las pruebas unitarias, pruebas de integración de sistemas, entonces las pruebas del usuario final. Usted debe havew esas pruebas ya en el lugar que se utiliza con la aplicación original, además de las pruebas de unidad, que seguirá siendo relevante.

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

1) ikvm ( http://www.ikvm.net/ ), que permite llevar a cabo código Java en un NET-tiempo de ejecución. Esto permite que el código Java para llamar al código C # y viceversa. A continuación, puede congelar el desarrollo de código C #, y poco a poco añadir la funcionalidad revisada a la parte de Java, manteniendo una aplicación funcional.

2) Mainsoft ( http://dev.mainsoft.com/Default.aspx ? tabid = 130 ) que le permite compilar NET-código de bytes en el código de bytes de Java. Tienen una versión de entrada libre. No tengo ninguna experiencia con el producto, pero que anuncian en gran medida de nuestra plataforma de Java, que sólo tiene disponible.

No soy un experto en Java, pero desde mi experiencia de trabajo con el código de Java, mientras que ser un ventilador # C, los siguientes son algunos de los posibles dolores de cabeza:

  • Los genéricos son implementados de manera diferente en Java y C #.
  • Boxeo / comportamientos Unboxing son diferentes entre Java y C #
  • Java clase de convención de nomenclatura + un montón de código C # genera
  • manipulación (es decir Unicode preocupaciones / ASCII) de cadena puede ser problemática dependiendo de la calidad de Java / C # código que está siendo portado.

En lo personal, no creo que escribir desde cero es una mala idea en absoluto. Puesto que usted ya tiene una arquitectura de trabajo.

Estoy un poco sorprendido nadie llegó a sugerir la idea de rechazar la migración.

No creo que un desarrollador de C # puede ser obligado a cambiar a Java (o viceversa), ya que se le dijo a (bueno, si él ha amenazado con una pistola a continuación, tal vez). I toma mucho tiempo, el ejercicio y la pasión de dominar al menos una pila de tecnología. Simplemente no se puede iniciar durante la noche con una nueva tecnología y esperan proporcionar la misma calidad.

Yo personalmente no molestaría hasta que se le iniciar la migración. En ese momento me diría que el director que estoy .NET chico y no voy a cambiar a otra tecnología simplemente porque 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 todas las últimas campanas y silbidos de .NET 3.5 han sido ampliamente en uso entonces la diferencia de idioma le dará un verdadero desafío.

Eso es sin duda una forma divertida, simplemente decide migrar aplicaciones de .NET a Java. Alguien tiene idea de la molestia que participan ...

Es posible que usted podría utilizar jni4net - puente de código abierto ? O una lista de otras opciones que conozco.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top