46 votes

Pourquoi ne pas Soleil faire un C# Java byte code du compilateur?

Nous Voulons Exécuter Notre Code C# sur la JVM

Mon entreprise a un grand C# code de base. Plus de la moitié de ce code, c'est notre moteur pour la création, lecture, modification, le calcul et l'écriture des classeurs Excel. Nous avons souvent des questions provenant des clients et des clients potentiels en leur demandant si nous allons construire une version Java de notre moteur de - beaucoup d'entre eux ne sont pas du tout intéressés par l'INTERFACE utilisateur. Nous avons même quelques clients qui ont pris la peine d'utiliser notre .NET de la bibliothèque à partir de leurs applications Java.

Donc, nous souhaitons construire une version Java de notre moteur de base, idéalement sans entretien d'un code source Java de base.

Eric Évier décrit ce problème très bien. Je suis dans une situation similaire, sauf pour le fait que la licence de notre logiciel comprend libres de droits de déploiement de, faire Eric est le choix de Mainsoft un nonstarter pour nous.

J'ai été Googler les goûts de "c# pour jvm" tous les quelques mois depuis plusieurs années maintenant avec pas de joie. Après avoir passé ~7 ans en développement logiciel semblable pour Java, je suis convaincu que l' .NET Api que nous utilisons dans notre moteur de base pourrait facilement être encapsulés et nous avons pu accomplir tout ce que nous avons besoin de l'aide de l'bibliothèques Java. Donc, si nous n'avions que C# -> JVM compilateur nous avons pu construire notre moteur de base de Java et on n'ait plus à détourner les développeurs Java qui souhaitent l'utiliser.

Je ne demande pas pour les raisons techniques pour lesquelles le Soleil ne fait pas un compilateur C#. Je reconnais que Java n'a pas de propriétés ou d'un entier non signé de 64 bits de long, etc... Pour le plaisir de l'argument, il suffit de supposer que tous ces problèmes techniques ont pu être traitées par l'extension de la JVM et / ou par d'autres moyens.

Et je ne demande pas à un débat sur le pourquoi d'une langue / pile peut-être mieux que les autres. La réalité de notre entreprise est que il ya beaucoup de clients potentiels à l'aide de chacun.

Pourquoi le Soleil ne un Compilateur C#? (OMI bien sûr)

Ce qui facilite l'exécution de code C# sur la plateforme Java signifie plus de développeurs et de logiciels pour la plate-forme. Est-il rien de plus important pour le succès d'une plate-forme? Jonathan Schwartz est un logiciel de guy. Je laisse à d'autres plus intelligents que moi de décider si oui ou non il a pris sur une tâche impossible en tant que Président et chef de la direction du Soleil, mais ayant rencontré Jonathan, peu de temps après, il rejoint le Soleil j'ai l'impression qu'il comprend le logiciel et le besoin d'une large base de développeurs.

Alors Pourquoi Ne pas Soleil faire un Compilateur C#?

  1. NIH syndrome?
  2. Le fantôme de Scott McNealy?
  3. De trop nombreux développeurs Java de l'aversion ou de la méfiance de tout ce qui est lié à Microsoft?
  4. Ils ont convenu de ne pas dans le cadre de la prise de la big bucks?
  5. ???

Il doit y avoir une bonne raison. Je ne peux pas pour la vie de me comprendre ce que c'est...

38voto

Tim Points 585

Tout d'abord le Soleil zéro incitation à mettre en œuvre un compilateur C# sur la JVM parce qu'ils ont quelque chose de très similaire appelé le langage de programmation Java.

Sa n'est pas vraiment aussi simple que juste de la mise en œuvre d'un compilateur Java standard des bibliothèques de classe ne sont pas les mêmes que les .net Bibliothèques de classes de Base. Vous allez finir par avoir à modifier tous la .NET des appels API pour Java appels d'API.

Micrsoft a un produit appelé J#, qui était destinée à être pour que Java .NET de la conversion, mais à la fin, personne ne l'a utilisé que l'API a été limitée à pré Java 2 API de sorte qu'il était presque inutile. Il en serait de même si le Soleil mis en œuvre certaines parties de l' .NET BCL, que seul le cœur portons sont standardisés et libre de droit. Des pièces comme ASP.NET et WPF, WCF, etc ne font pas partie des normes ECMA et donc Soleil aurait besoin de Microsoft autorisation de mise en œuvre de ceux de l'API.

Si suffisamment de clients veulent une version de java pour faire des affaires pour le port de votre application java puis le faire, vous juste ne jamais obtenir toute aide de la part du Soleil par l'intermédiaire d'un C# pour la JVM compilateur.

21voto

Randolpho Points 36512

Joe Erickson a écrit:

Ce qui facilite l'exécution de code C# sur la La plate-forme Java signifie plus de développeurs et bien plus de logiciels pour la plate-forme.

C'est une fausse déclaration. L'exécution de code C# sur la JVM ne pas créer des programmeurs Java, il crée C#, programmeurs qui peuvent s'exécuter sur une machine virtuelle java. Il ne fait qu'élargir la portée de C#, en supposant que la JVM se traduit également tout microsoft appels spécifiques (c'est à dire win32) en quelque chose qui est plate-forme neutre. Donc, si le Soleil se traduit par de IL de Bytecode Java, le seul groupe il aide, c'est: Microsoft. Et, compte tenu de Soleil de l'histoire avec Microsoft au cours de l'original en C#Java schisme/Visual J++ poursuites...

De Plus, vous avez à faire face à la technique infaisabilité, que vous le vouliez ou non. Il existe des différences fondamentales dans la façon dont le bytecode sont exécutées et qui sont de loin les questions les plus importantes que de savoir si ou non il y a un entier non signé de type de données long.

Si vous devez être en C# sur un non-Microsoft, plate-forme, Mono

21voto

Chase Seibert Points 7609

Pourquoi ne pas Microsoft de faire un C# Java byte code du compilateur? Pourquoi ne pas vous le faire? Il y a des specs de chaque côté...

14voto

Matthew Flaschen Points 131723

"Donc, nous souhaitons construire une version Java de notre moteur de base, idéalement sans entretien d'un code source Java de base."

Fondamentalement, vous voulez compiler votre code C# non modifié, et l'exécuter dans une application Java-seulement de l'environnement.

IKVM est pas ce que vous voulez. IKVM est trois choses principales.

un. ikvm - CLI de la mise en œuvre d'une machine virtuelle Java (notez que cette fonction utilise Classpath (maintenant OpenJDK) pour la classe Java library).

b. ikvmc - Compile le bytecode java à la CLI du bytecode.

c. ikvmstub - Génère java stub classes d'appel de la CLI de code.

Notez que tous ces outils dépendent de la CLI à l'exécution. Ce que vous voulez, c'est exactement le contraire de IKVM, ce qui est évidemment MVKI (le Plus Vénérable Kompiler Intermédiaire) :):

un. mvki - Java mise en œuvre d'une CLI de la machine virtuelle (vraisemblablement ce serait une utilisation Mono ou DotGNU pour la bibliothèque de classe).

b. mvkic - Compile CLI bytecode Java bytecode.

c. mvkistub - Génère de la CLI de stub classes d'appel Java

Notez qu'aucune de ces nécessiterait une implémentation de l' .NET Framework lors de l'exécution, de sorte qu'ils devraient être satisfaisante à votre Java-seuls les clients.

Malheureusement, pour autant que je sais MVKI n'existe pas, vous feriez donc mieux de faire un manuel de port (ce qui ne manquera pas d'être plus propre, mais plus de travail).

Edit: sur la Base de la description de Mainsoft, il semble être similaire à MVKI, même si je ne suis pas sûr de ce qu'ils font pour la bibliothèque de classe, et à la différence de IKVM ce n'est pas les logiciels libres.

10voto

mcintyre321 Points 5393

http://jsc.sourceforge.net/ c# cross compilateur qui peut convertir .NET code pour Java (entre autres choses).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X