Newsletter Developpez.com

Inscrivez-vous gratuitement au Club pour recevoir
la newsletter hebdomadaire des développeurs et IT pro

IKVM implémente Java pour .NET
Pour coder en Java avec .Net

Le , par Gordon Fowler, Expert éminent sénior
IKVM est une implémentation de Java pour .NET et Mono (le pendant open source de .NET).

Il inclut :

* A Java Virtual Machine implemented in .NET
* A .NET implementation of the Java class libraries
* Tools that enable Java and .NET interoperability

Le projet vis à remplacer JRE, la machine virtuelle de Sun Microsystems.
L'intérêt du couple IKVM et .NET est de pouvoir écrire et/ou de faire tourner des applications Java.
Idéal pour les développeurs qui souhaitent importer leurs anciens codes sur la plate-forme .NET, pour, par exemple, les réutiliser.

Parmi les améliorations récentes de l'implémentation, signalons le support de plus en plus efficace des librairies graphiques Swing et AWT.

IKVM est en téléchargement libre ainsi que sa documentation.

Source : Site d'IKVM.

Lire aussi sur Develeppez :

Les tutos, faq, actu de Java
Les tutos, faq, actu de .NET

Et vous ? :

Ce genre d'implémentation vous séduit-elle ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de robert_trudel robert_trudel - Membre éclairé https://www.developpez.com
le 27/08/2009 à 16:10
Citation Envoyé par gorgonite  Voir le message
certes, mais cela a-t-il réellement eu un impact sur le marché ?
si Sun voit des migrations massives de Java vers .Net, grâce à la possibilité de réutiliser l'existant en Java, est-ce qu'ils vont rester aussi cools ?

en mettant temps, depuis la naissance de .net que java est supposé faiblir... pourtant ils est toujours autant utilisé, les outils s'améliorer, une panoplie de librairie sortent....

avec toute la richesse que java possède... je doute fort que ça arrive
Avatar de lex2004 lex2004 - Membre régulier https://www.developpez.com
le 27/08/2009 à 16:15
Citation Envoyé par smyley  Voir le message
Dans un contexte pro on doit aussi prévoir le coût de maintenance à long terme [...] j'ai plus l'impression qu'il est plus rentable de convertir le code en .NET si on veux vraiment quitter la plateforme Java

D'accord. Mais vu que les délais sont parfois très courts, on pourrait envisager une double solution: dans un premier temps, on convertit rapidement du bytecode en code CIL pour une utilisation immédiate. Une fois que le soft est livré, on entreprend une réécriture complète du programme original en C# (ou un autre langage si l'on préfère). Comme ça, le client est satisfait et la maintenance est aisée.

Citation Envoyé par smyley  Voir le message
je me demande si on peut mettre un composant Java dans une UI C#

Ouais, même sans IKVM, c'est possible. D'ailleurs, on trouve des articles étonnants sur ce sujet sur codeproject.
Avatar de gorgonite gorgonite - Rédacteur/Modérateur https://www.developpez.com
le 27/08/2009 à 16:16
Citation Envoyé par smyley  Voir le message
Bah même. Dans un contexte pro on doit aussi prévoir le coût de maintenance à long terme de ce que l'on a produit et on se retrouvera à devoir maintenir un mix de code C#/Java.

encore une fois rien ne dit qu'une même équipe devra maintenir les deux codes... et les interactions sont peut-être si importantes que passer par des RPC & cie serait trop coûteux

après clairement, si on a du code spaghetti qui va utiliser un bout de Java et un bout de C# au lieu d'avoir une séparation très nette...
Avatar de gorgonite gorgonite - Rédacteur/Modérateur https://www.developpez.com
le 27/08/2009 à 16:18
Citation Envoyé par robert_trudel  Voir le message
en mettant temps, depuis la naissance de .net que java est supposé faiblir... pourtant ils est toujours autant utilisé, les outils s'améliorer, une panoplie de librairie sortent....

avec toute la richesse que java possède... je doute fort que ça arrive



il suffit que quelques projets phare migrent pour que Sun voit un effet négatif en terme d'image... et donc tente de réagir. Je n'ai pas dit que .Net allait bouffer Java, et que Sun tenterait de faire un procès à la SCO pour essayer de survivre financièrement
Avatar de el-belgounetos el-belgounetos - Futur Membre du Club https://www.developpez.com
le 28/08/2009 à 10:24
Bonjour à tous,

en lisant les commentaires j'ai un peu l'impression qu'une solution alternative serait de créer un logiciel de traduction entre les langages afin de faciliter la migration. Evidemment, ce genre d'outils serait compliqué à mettre en œuvre avec les dépendances, la nécessite du code source, l'évolutivité des langages etc etc. Mais je suis certain que pour migrer certains bouts d'applications vers un autre langage ça serait très utile. Ca permettrait d'avoir une bonne base pour la réécriture.

Eb
Avatar de gorgonite gorgonite - Rédacteur/Modérateur https://www.developpez.com
le 28/08/2009 à 10:56
Citation Envoyé par el-belgounetos  Voir le message
en lisant les commentaires j'ai un peu l'impression qu'une solution alternative serait de créer un logiciel de traduction entre les langages afin de faciliter la migration. Evidemment, ce genre d'outils serait compliqué à mettre en œuvre avec les dépendances, la nécessite du code source, l'évolutivité des langages etc etc. Mais je suis certain que pour migrer certains bouts d'applications vers un autre langage ça serait très utile. Ca permettrait d'avoir une bonne base pour la réécriture.


ça s'appelle UML... un sous-ensemble de tous les langages objets qui permet de regénérer la structure complète d'un projet dans n'importe quel langage supporté par donc outil. et en théorie la Conception orienté-objet ne s'arrêtant pas aux langages orientés-objets, on pourrait même envisager de genre de bascule pour générer du C, du fonctionnel (avec record à la Caml),etc
après on peut aussi trouver que le résultat sera TRES lourd

enfin quid de la rétro-ingénierie (code source -> UML, voir bytecode/binaire -> UML)
Avatar de lunatix lunatix - Rédacteur https://www.developpez.com
le 28/08/2009 à 15:42
finalement, ce qui serait bien, c'est que les deux communautés s'entendent sur un langage commun capable de compiler sur les deux plates formes. il y aurait des librairies communes, et d'autres dédiées aux spécificités des OS/environnements.
vous avez regardé scala ? (ou alors quelqu'un peut envisager de faire un compilo F# for java)
Avatar de el-belgounetos el-belgounetos - Futur Membre du Club https://www.developpez.com
le 28/08/2009 à 18:06
Citation Envoyé par gorgonite  Voir le message
ça s'appelle UML... un sous-ensemble de tous les langages objets qui permet de regénérer la structure complète d'un projet dans n'importe quel langage supporté par donc outil. et en théorie la Conception orienté-objet ne s'arrêtant pas aux langages orientés-objets, on pourrait même envisager de genre de bascule pour générer du C, du fonctionnel (avec record à la Caml),etc
après on peut aussi trouver que le résultat sera TRES lourd

enfin quid de la rétro-ingénierie (code source -> UML, voir bytecode/binaire -> UML)

Quelques remarques,
-A ma connaissance on ne peut pas générer tout un projet à partir d'UML. Seulement générer la structure globale des classes et pas les algorithmes qui devraient être définis dans un langage générique. Sinon je pense que ça serait plus largement utilisé. Si tu as un exemple d'un code 100% obtenu à partir d'UML je prends mais j'y crois pas trop.
-Au niveau de la rétro ingénierie c'est possible mais pose des soucis de droit d'auteur.
-Ca serait très lourd certainement mais le but est globalement de permettre de faciliter la réécriture et dans certains cas de pouvoir l'utiliser tel quel. Egalement de faciliter la maintenance en ne la faisant que dans 1 seul langage.
- Autre solution que les langages modernes utilisant un langage intermédiaire se mettent d'accord sur le langage intermédiaire (ce qui permettrait d'optimiser ce langage et que tout le monde en profite) et que tous les nouveaux langages se basent dessus mais là je pense qu'on rêve

eb
Avatar de maitredede maitredede - Membre du Club https://www.developpez.com
le 28/08/2009 à 18:12
Citation Envoyé par el-belgounetos  Voir le message
- Autre solution que les langages modernes utilisant un langage intermédiaire se mettent d'accord sur le langage intermédiaire (ce qui permettrait d'optimiser ce langage et que tout le monde en profite) et que tous les nouveaux langages se basent dessus mais là je pense qu'on rêve

Bien sûr, mais petit à petit, on y viens. Il n'y a qu'a regarder les langages qui fonctionnent sur la couche DLR : IronPython, IronRuby, JScript.NET...
Je pense que faire un IronJava serait pas mal... Ca permettrai de compiler du code source java en CIL, plutôt que du bytecode...

Mais bon, moi j'aimerai bien intégrer des points d'entré javascript dans mes applications, mais aujourd'hui, c'est soit j'utilise une dll native, soit j'appelle des classes obsolètes, soit je crée un javascript sur DLR, soit j'utilise Rhino+IKVM...

Verdicte ?
Avatar de jkakim jkakim - Membre régulier https://www.developpez.com
le 29/08/2009 à 12:37
Citation Envoyé par smyley  Voir le message
Sauf que avec la licence de Java on pourrai normalement créer une JVM en .NET qui respecterait l'implémentation de Java selon Sun (et c'est un peux le cas de IKVM vu qu'il permet d'exécuter du bytecode java au dessus du CLR).

Mais d'après ce que j'ai pu en voir son utilisation reste encore étrange, l'histoire d'utiliser à la fois la JVM et le CLR étant quand même hérétique ...

Sérieux, CLR et JVM c'est quand l'eau et l'huile, comment pouvoir les utiliser ensemble ? Pouvez vous vous expliquer en clair ?

Mais l'idée est sympa car s'il faut utiliser des classes Java directement en .NET gràce à IKVM, c'est cool. Mais franchement il serais, n'est ce pas mieux, si ces classes jugées manquantes sont rajoutées dans le Framework ?

Là, je me dis c'est juste de la politique Microsoft, pourvoir faire croire que on peut tous faire en .NET même ce qu'on faire chez SUN... Ce n'est pas mal !
Avatar de smyley smyley - Expert éminent https://www.developpez.com
le 29/08/2009 à 13:39
Citation Envoyé par jkakim  Voir le message
Là, je me dis c'est juste de la politique Microsoft, pourvoir faire croire que on peut tous faire en .NET même ce qu'on faire chez SUN... Ce n'est pas mal !

Juste pour être sur je me permet de préciser que le projet IKVM n'a absolument rien à voir avec Microsoft ...
Offres d'emploi IT
Architecte sécurité des systèmes d'information embarqués H/F
Safran - Ile de France - 100 rue de Paris 91300 MASSY
Data scientist senior H/F
Safran - Ile de France - Magny-les-Hameaux (Saclay)
Spécialiste systèmes informatiques qualité et référent procédure H/F
Safran - Ile de France - Colombes (92700)

Voir plus d'offres Voir la carte des offres IT
Responsables bénévoles de la rubrique Java : Mickael Baron - Robin56 -