Question

Je commence à écrire une application client-serveur en utilisant .net (C #) pour le client et le serveur.

Malheureusement, mon entreprise refuse de payer la licence Windows sur le serveur, ce qui signifie que je dois réécrire mon code en Java ou utiliser la méthode Mono.

Existe-t-il un bon moyen de traduire le code C # en Java? L’application serveur n’utilisait aucune fonctionnalité spécifique .net, mais uniquement des outils inter-langues tels que Spring.net, Hibernate.net et log4net.

Merci.

Était-ce utile?

La solution

Je suggérerais de construire pour Mono. Vous allez rencontrer des zones d'ombre, mais dans l'ensemble, c'est génial. Toutefois, si vous souhaitez créer pour Java, vous pouvez consulter Sauterelle . C'est un produit commercial, mais il prétend pouvoir traduire CIL (la sortie du compilateur C #) en bytecodes Java.

Autres conseils

Outre les solutions possibles, la traduction directe de programmes écrits dans une langue dans une autre langue est généralement considérée comme une mauvaise idée & # 8482; - surtout si cette traduction est faite de manière automatisée. Même lorsque cela est fait par un "réel" Pour un programmeur, traduire une application ligne par ligne donne souvent un résultat final peu souhaitable, car chaque langue a ses propres idiomes, forces et faiblesses qui exigent que les choses soient faites d’une manière légèrement différente.

Aussi douloureux que cela puisse être, il est probablement dans votre intérêt et pour ceux qui doivent maintenir cette application de la réécrire en Java si c'est ce que votre employeur exige.

Je ne connais que l’autre sens. Dbo4 est développé en java et la version c # est générée automatiquement à partir des sources java.

Il n'y a pas de bonne façon. Ma recommandation est de recommencer en Java ou, comme vous l'avez dit, utilisez Mono.

Même si je pense que la première erreur a été de choisir un langage d'implémentation sans garantir un environnement de déploiement approprié, rien ne peut être fait pour le moment. Je pense que la méthode Mono serait préférable. Avoir à réécrire du code ne ferait qu'augmenter le coût du projet, surtout si vous avez déjà une bonne quantité de code écrite en C #. Personnellement, j'essaie d'éviter de réécrire le code dans la mesure du possible.

Java et C # sont assez proches en syntaxe et en sémantique. Le vrai problème, ce sont les petites différences. Ils vous mordront quand vous ne vous y attendez pas.

Grasshopper est vraiment la meilleure solution en ce moment, si la licence vous convient (la version gratuite a quelques limitations importantes). Il est entièrement basé sur les bibliothèques de la classe Mono (qui sont en fait plutôt bonnes), mais s’exécute sur les machines virtuelles Java standard. C’est bien car les ordinateurs virtuels Java sont généralement un peu plus rapides et plus stables que Mono, selon mon expérience. Il présente plus de faiblesses que Mono en ce qui concerne les API relatives aux formulaires / graphiques, car une grande partie de celles-ci n’a pas été portée en Java à partir de la machine virtuelle Mono.

Dans les cas où cela fonctionne, cela peut être merveilleux, cependant. Les performances sont parfois même meilleures que lorsque vous exécutez le même code sur la machine virtuelle de MS sous Windows. :)

Je dirais, du point de vue de la maintenance, réécrire le code. Cela augmentera le coût initial du projet, mais nécessitera moins de main-d'œuvre par la suite, peu importe le lecteur. Comme dans les précédentes affiches, rien de tel automatisé n’a autant de valeur qu'un travail "réel". le programmeur et la conversion ligne par ligne n’aideront pas beaucoup non plus. Vous ne voulez pas produire plus tard du code qui fonctionne mais qui est difficile à maintenir.

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