Question

Avec quelques changements dans la dotation en personnel au bureau, les niveaux d'expertise C # a chuté abruptement et il y a maintenant plus de développeurs Java. Il a obtenu au point où les dirigeantes envisagent le déplacement d'un projet .NET existant écrit en C # dans le monde Java.

Mis à part le problème évident de à partir complètement de zéro quels sont les moyens possibles que cette société peut accomplir un déménagement réussi de développement sur un projet de .NET C # en Java?

Était-ce utile?

La solution

Voici les choses à considérer:

  • Est-ce grand projet? Si oui, essayez de rester avec C #
  • Est-ce projet de taille moyenne avec des composants? Si non, essayez de rester avec C #
  • Est-ce petit projet destiné à être déployé sur les fenêtres seulement? Si oui, essayez de rester avec C #
  • Est-ce vieux code source? Si oui, essayez de rester avec C #
  • Utilisez-vous des API spécifiques OS Windows? Si oui, essayez de rester avec C #
  • Utilisez-vous des API tiers sans contrepartie Java? Si oui, essayez de rester avec C #
  • Utilisez-vous .Net dans « profondes » (liaison de données, les contrôles utilisateur, etc.)? Si oui, essayez de rester avec C #
  • Le temps de migration est plus acceptable que d'obtenir de nouveaux / converti les gars C #? Si non, essayez de rester avec C #
  • Pensez-vous que les utilisateurs finaux ne seront pas réceptifs des changements, si vous devez utiliser framework Java qui va changer la présentation? Si oui, essayez de rester avec C #
  • Vérifier publicités

Si vous décidez de convertir:

  • Go par composant
  • Go par couche
  • Avoir beaucoup de tests
  • Vérifiez s'il existe des outils pour aider (si petite aide peut être) avec la migration

Autres conseils

Il suffit d'ajouter à Brian et les avis d'Eric, je dirais que ramassant C # pour un développeur Java doit être simple à mon avis. Ils sont très similaires sur le plan conceptuel des langues et je suggère la formation de vos développeurs Java pour acquérir des compétences C # et vous ne serez pas obligé d'aller à la dispute d'un processus de migration.

Je souscris à l'opinion de Joel que une ré-écriture totale est presque toujours une erreur . D'autres affiches sont droite: C # et Java sont suffisamment similaires pour que tout développeur Java compétent devrait être en mesure de devenir compétent en C # en quelques semaines ou quelques mois. Cela ne veut pas dire qu'ils seront des experts. Cela prend plus de temps, mais aussi longtemps que vous avez des développeurs C # qui peuvent guider le processus, alors vous devriez être OK.

Il est difficile de dire si oui ou non une telle transition est une bonne ou mauvaise idée sans connaître des détails de votre application:. La taille, le type d'application, l'industrie et ainsi de suite

Je serais extrêmement réticente à un tel changement, car, à mon humble avis, C # est maintenant un langage beaucoup plus moderne que Java et je vous dis cela comme quelqu'un qui a été un OFR de développeur Java plus d'une décennie (depuis le 1.0.2 / 1.1 jours).

Cela ne veut pas dire que Java est mauvais. Ce n'est pas. Sun a une tenture nuage au-dessus et fait preuve d'un manque de volonté ou de l'incapacité à conduire la plate-forme avant ces dernières années.

Quelles que soient les langues concernées, la gestion de cette société semble fou. Pour tout autre qu'une application triviale, comment peut-il être économiquement judicieux de réécrire à la place d'une base de code à partir de zéro de simplement embaucher une seule personne avec des compétences dans la bonne langue? Est-ce une entreprise avec ce problème bien connu:! Trop d'argent disponible

Depuis combien de temps le code existant est en développement? Si elle est à peine commencé, je pouvais comprendre. Si on a vu un communiqué et a d'utilisateurs actifs, il jamais judicieux de le jeter. Si vous avez donné le code C # pour une start-up avec les compétences requises, pensez à quel point un bon départ qu'ils ont sur vous.

Avant de terminer la conversion du projet .NET en Java, tous les développeurs Java qui faisaient partie du projet de conversion aura appris C #. Alors vous ne plus besoin de le convertir en Java (et vous pouvez jeter tout le code Java qui a été produit dans la conversion), parce que maintenant vous avez une équipe de développement qui peut faire Java et C #. Problème résolu. : D

S'il y a des éléments qui sont déjà isolés ou tout il utilise une architecture orientée services, vous pourriez peut migrer un composant à un moment (où chaque composant est une ré-écriture) et ont encore les composants parlent les uns aux autres en utilisant les mêmes protocoles réseau interopérables. Probablement dépend de ce type d'application dont nous parlons.

Assurez-vous que vous avez tonnes de tests , parce qu'une telle migration vous mordre où vous attendez le moins.

Avez-vous plus .Net ou plusieurs applications Java dans la production. Si votre ont déjà un investissement substantiel dans les serveurs et les applications .Net, pourquoi ne pas demander à des volontaires parmi les développeurs Java de se déplacer vers .Net? La langue et la syntaxe est très similaire, si la partie dure apprendrions le cadre et à moins qu'ils passeraient tout leur temps à faire du développement de l'interface utilisateur d'apprentissage, même le cadre est pas difficile.

Dans notre bureau, nous avons un certain nombre de très bons développeurs qui vont et viennent entre Java et .Net au besoin.

Afin de prouver à la direction, vous a toujours besoin de parler en termes de retour sur investissement et des chiffres. Montrez que si vous déplacez ces applications, il faudra énormément de temps, les ressources d'assurance qualité, et peut facilement prendre un siège arrière si elle est de-priorisé en raison d'un autre projet ou nouveaux projets d'aménagement d'importance.

J'ai eu le succès quand je leur ai montré les délais, le retour sur investissement, le travail en jeu, argent impliqué, etc.

Alors maintenant venir au point actuel, je ne pense que les développeurs Java seraient en mesure de soutenir C # à moins qu'ils aient un certain blocage mental fondamental contre Microsoft technolgies.

Jetez un oeil à Net2Java qui puports pour aider à convertir votre code de C # à Java. Je doute que ce sera parfait, mais sa seule façon de supprimer beaucoup de travail pénible de la tâche, vous laissant avec les petits défauts d'appels cadres incompatibles et les caractéristiques linguistiques fer à.

Une fois que vous avez fait cela, votre tâche est comme tout autre grand projet de migration - test, tester et tester à nouveau. Les tests unitaires, tests d'intégration du système, puis les tests de l'utilisateur final. Vous devriez havew ces tests sont déjà en place que vous avez utilisé avec l'application d'origine, à l'exception des tests unitaires, ils seront toujours pertinents.

Si on décide de le faire, vous bénéficierez probablement d'une approche hybride où vous pouvez essentiellement mélanger C # et Java dans la même application, car il changera le scénario d'une conversion en cascade à une migration progressive. Ici, je connais deux possibilités:

1) ikvm ( http://www.ikvm.net/ ) qui vous permettent d'exécuter code Java dans un runtime .NET. Cela permet au code Java pour appeler le code C # et vice versa. Ensuite, vous pouvez geler le développement de code C #, et ajouter lentement la fonctionnalité révisée à la partie Java tout en gardant une application fonctionnelle.

2) Mainsoft ( http://dev.mainsoft.com/Default.aspx ? tabid = 130 ) qui vous permet de compiler .NET bytecode en bytecode Java. Ils ont une version d'entrée gratuite. Je n'ai aucune expérience avec le produit, mais ils beaucoup de publicité sur notre plate-forme qui a seulement Java disponible.

Je ne suis pas un expert Java, mais de mon expérience de travail avec le code Java tout en étant fan de C #, les éléments suivants sont quelques-uns des maux de tête possibles:

  • Génériques sont mises en œuvre différemment en Java et C #.
  • Boxe / comportements Unboxing sont différents entre Java et C #
  • classe Java convention de nommage + lots C # généré code
  • manipulation chaîne (à savoir les préoccupations Unicode / ASCII) peut être problématique en fonction de la qualité du code Java / C # en cours de portage sur.

Personnellement, je ne pense pas que l'écriture à partir de zéro est une mauvaise idée du tout. Puisque vous avez déjà une architecture de travail.

Je suis un peu surpris Noone a même suggéré l'idée de rejeter la migration.

Je ne crois pas un développeur C # peut être forcé de passer à Java (ou vice versa) parce qu'il a été dit (enfin, s'il est menacé d'une arme à feu alors peut-être). Je prend beaucoup de temps, l'exercice et la passion pour maîtriser au moins une pile technologique. Vous ne pouvez pas commencer du jour au lendemain avec une nouvelle technologie et nous prévoyons offrir la même qualité.

Je personnellement pas pris la peine jusqu'à ce que dit de commencer la migration. À ce moment-là je dis au directeur que je suis type .NET et ne passer à une autre technologie simplement parce qu'ils ont décidé de.

En ce qui concerne le côté technique, ce n'est pas la syntaxe du langage qui diffère, mais plutôt les bibliothèques et leurs caractéristiques. Bien sûr, si toutes les dernières cloches et de sifflets de .NET 3.5 ont été largement utilisées, alors la différence de langue vous fournira un véritable défi.

C'est certainement une drôle de façon, tout simplement décider de migrer des applications .NET de Java. Quelqu'un n'a aucune idée des tracasseries liées aux ...

Peut-être que vous pouvez utiliser jni4net - pont opensource ? Ou liste des autres options que je connais.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top