Comenzaremos un nuevo proyecto que incluirá la capacitación de todos los desarrolladores .net en Java (frameworks / sistema ECO, etc.). Tenemos mucho código escrito en C # y parece que todo esto se desperdiciará ya que tenemos que volver a escribirlo todo en Java. El problema que veo es que el primer año más o menos (probablemente 2 años) no tendremos nada que entregar, ya que pasaremos la mayor parte del tiempo reproduciendo lo que teníamos antes pero ahora en Java.
Dado que nuestro equipo está distribuido en diferentes oficinas en todo el mundo y tenemos una gran cantidad de desarrolladores de Java (20 a 30) y 10 desarrolladores que usan .net, queremos que todos los desarrolladores utilicen el mismo idioma / plataforma para que podamos comenzar a reutilizar componentes / módulos. Entonces puedo entender el punto de vista de la gestión.
Ayer me encontré con Scala y me preguntaba si sería mejor usar esto con el producto actual (que está escrito en C #) y luego al menos tendremos un producto que funcione en un año. También en un año tenemos módulos que se pueden usar en el mundo Java mientras migramos otras partes del producto.
¿Sería Scala una mejor opción que Java teniendo en cuenta lo que estamos tratando de lograr?
Respuestas:
Algunos puntos a considerar:
Dado todo esto, es posible que desee cubrir sus apuestas y optar por una estrategia mixta Java / Scala , es decir, migrar a la plataforma JVM y centrarse inicialmente en Java, pero mantenga abierta la opción de usar Scala cuando sus desarrolladores estén cómodos y / o Se ajusta al problema en cuestión.
Desde una perspectiva de gestión, esto tiene muchas ventajas:
La desventaja es que todavía tiene dos idiomas principales para admitir. Pero probablemente ya tenga muchos más que solo dos (scripts de shell, formatos XML específicos del dominio, archivos de configuración, motores de reglas, HTML, Javascript), por lo que podría argumentar que en realidad no es tan importante.
fuente
Agregaré una tercera opción. ¿Alguien en su organización ha analizado la interoperabilidad entre sus módulos C # y Java? ¿Cómo expones la funcionalidad de C #? ¿Los servicios web SOAP o RESTFul son una opción?
Una reescritura de 2 años puede ser una sentencia de muerte para una organización (solo pregunte a Netscape). Sin embargo, una migración gradual mientras el código existente juega bien entre sí tiene potencialmente menos impacto comercial.
fuente
Reescribir C # en Scala será tan difícil como reescribir en Java. En cuanto a qué idioma es "mejor", ese punto es discutible, cada idioma tiene sus propios puntos positivos y negativos.
No sé qué tan grande es su base de código, pero 2 años para 30 desarrolladores parece enorme para una simple reescritura. Aprender Java cuando sabes que C # es fácil. Me tomó un día o dos para sentirme cómodo con eso.
Mi consejo sería dejar que la administración se salga con la suya y disfrutar el hecho de que le pagan para ampliar su conjunto de habilidades.
fuente
Creo que la opción más fácil sería lograr que los desarrolladores de Java aprendan C #. Ambos lenguajes son muy similares en muchos aspectos y no le lleva mucho tiempo a un desarrollador de Java elegir C #. He trabajado con muchos desarrolladores de Java que aprendieron C # y generalmente es una transición sin problemas. La única área en la que podrían quedar atrapados por un tiempo es el modelo de programación de WebForms. Los desarrolladores de Java se ajustan mejor al paradigma MVC. De esta manera, no necesita esperar un año antes de comenzar a desarrollar nuevas funciones. En cuanto a Scala, me temo que eso introducirá un problema completamente nuevo con los 30 desarrolladores que intentan aprender un nuevo idioma.
fuente