IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

Différence entre le byte-code de Java et MSIL


Sujet :

Dotnet

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Mars 2010
    Messages : 23
    Points : 29
    Points
    29
    Par défaut Différence entre le byte-code de Java et MSIL


    Svp, quelle différence entre le byte code produit par le compilateur java et le Microsoft Intermediate language (MSIL) en ce qui concerne la dépendance du matériel et de la plateforme d'exécution.


  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Les deux machines virtuelles n'étant pas les mêmes, je suis pas sur qu'on puisse trop comparer

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Mars 2010
    Messages : 23
    Points : 29
    Points
    29
    Par défaut Je m'explique ..


    .Net et Java compilent leur code source dans un langage indépendant de tout système et de tout hardware
    alors pourquoi les environnements d'exécution de .NET se limitent à Windows alors que Java est portable sur d'autres environnements (Linux..)

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    Citation Envoyé par medamin27 Voir le message

    alors pourquoi les environnements d'exécution de .NET se limitent à Windows alors que Java est portable sur d'autres environnements (Linux..)
    Car Microsoft n'a jamais pris le temps ou vu l'interet de développer une machine virtuelle executant le MSIL.

    Faut dire que l'interoperabilité ca coûte cher et ca rapporte pas forcément. De toute facon, .NET n'est qu'une surcouche des api win32. Et Microsoft n'étant pas maitre des autres api, il serait difficile pour eux de s'y brancher. De base, .Net propose plus de fonctions couplés étroitement à Windows que Java.

  5. #5
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Il faut quand même noter qu'il y'a le projet mono qui avait été lancé dans le but de l'interop et le .net 2.0 a déjà été porté sur les plateformes linux, je n'ai jamais testé.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Mars 2010
    Messages : 23
    Points : 29
    Points
    29
    Par défaut
    Je n'ai toujours pas réussi à comprendre l'utilité, pour Microsoft, de fournir un système avec une couche intermédiaire de byte-code. Ce framework n'aurait-il vraiment pas pu être développé et fourni en natif directement ?

  7. #7
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 493
    Points
    5 493
    Par défaut
    D'abord il faut différencier la CLI (common language infrastructure) et le CLR (common language runtime).

    La CLI comporte toutes les biblios et est très liée à Windows (il suffit de penser aux API Windows Forms) ce qui a assuré son succès dans le développement des applis bureau (look'n' feel natif) mais la rend difficile à porter sur d'autres systèmes d'exploitation que Windows sans violer de brevets (Novell a obtenu à ce titre des garanties pour Mono).

    La CLR est l'environnement d'exécution lui-même ("machine virtuelle" même si MS n'utilise pas ce terme: sous le capot les choses sont différentes de Java) et il existe bien sur plusieurs processeurs : principalement x86 et ARM (smartphones: dotnet est la plateforme de référence pour Windows mobile). Il a aussi été porté par MS sur je ne sais plus quelle plateforme pour serveurs.

    A la base, ce fut surtout un outil marketing en l'absence de volonté de MS. Mais Novell fournit aujourd'hui des portages pour divers Unix, dont notamment Android.

    Mentionnons un dernier intérêt : fournir un code vérifiable, contrairement au code x86. Voir leurs recherches sur Singularity. On pourrait aussi ajouter la possibilité d'optimiser le code au chargement en fonction des sous-jeux d'instructions présents (songe à MMX et SSE) en plus du socle x86. Mais je ne crois pas que cette dernière possibilité soit utilisée.

  8. #8
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 082
    Points
    8 082
    Par défaut
    J'ai pas tilté à l'époque mais il n'y a pas que sur Windows que .Net existe. Sur Linux, l'implémentation n'est pas de Microsoft c'est Mono. Mais il y'a aussi les systèmes embarqués (Compact Framework, Windows Mobile, Windows Phone 7) et il y'a la Xbox.
    De plus l'interet d'un bytecode est que tout le monde peut écrire un compilateur vers ce bytecode (d'ou l'utilisation de C#, VB.Net, Python, Ruby pour faire du .Net)

  9. #9
    Expert confirmé Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Points : 5 493
    Points
    5 493
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    De plus l'interet d'un bytecode est que tout le monde peut écrire un compilateur vers ce bytecode (d'ou l'utilisation de C#, VB.Net, Python, Ruby pour faire du .Net)
    Plus précisément, pour l'OP : dans la mesure où le CLR définit un système flexible de types, plusieurs langages de nature très différente peuvent s'appuyer sur ce socle commun et dialoguer ensemble (possiblement d'utiliser naturellement en C# une biblio écrite en ironpython par ex, comme si elle avait elle-même été écrite en C#).

    Sinon bien vu, j'avais carrément oublié ce point !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Différence entre deux variables de type java.util.Date
    Par hetlar dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 30/08/2012, 07h04
  2. je vois pas la différence entre ces 2 codes
    Par membreComplexe12 dans le forum C++
    Réponses: 2
    Dernier message: 09/08/2011, 18h41
  3. Différence entre quelques Methodes Static en java
    Par Echap dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 14/03/2011, 15h01
  4. Différence entre J2EE 1.4 et Java EE 5
    Par walouch dans le forum Java EE
    Réponses: 1
    Dernier message: 07/02/2008, 16h55
  5. Réponses: 6
    Dernier message: 13/05/2007, 23h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo