Comparaison machines virtuelles Java/C#
Les machines virtuelles
Présentation des différentes Machines Virtuelles et de leurs utilisations:
Qu'est ce qu'une VM (Virtual Machine)
- Une Machine Virtuel au sens générale est une couche logicielle permettant de simuler l'architecture d'une machine physique. (c'est un software au dessus du hardware)
- Une VM pour un langage permet d'éxécuter du code managé dans un environnement controlé.
Le programme n'accède pas au l'ordinateur directement (pas d'accès direct au registres du processeurs ou d'utilisation de la mémoire), tous les appels passent par la VM ce qui rend son exécution plus sécurisé.
La VM s'occupe des gérer les objets alloués en mémoires (allocation et destruction par le garbage collector), ainsi que les Threads qui s'executent - Une même application peut être exécuté sur tous les systèmes pour lesquels une version de la VM à été développé.
Les VMs permettant d'executer du Java et du C# ne sont pas les mêmes:
Les différentes Machines virtuelles pour Java et C#
Chaque langage utilise une VM spécifiques:
- Java: La VM permettant d'éxécuter du code Java s'apelle la JVM (Java Virtual Machine)
- C#: Pour le C# il existe une VM pour l'environnement windows (CLR), et une VM pour les environnement Linux, Mac, ... (Mono)
Java et la JVM
Caractéristiques de la JVM de Java
- Son implémentation n'est pas définie: Sun donne seulement les spécification sur la JVM, les développeurs sur chaques systèmes choisisent comment l'implémenter
- Elle execute un byte code: Les set d'instructions qu'elle peut executer s'apelle le bytecode, il est contenu dans un fichier .class
C# et CLR
Caractéristiques du CLR/Mono du C#
- Deux VM dépendant du système:
- CLR: Développé par microsoft, il est uniquement utilisable sur un système Windows
- Mono: Développé par des développeurs indépendant (Microsoft participant tout de même au financement), c'est une VM libre permettant d'executer le C# sur d'autre plateformes (Linux, Mac, Android, ...)
- Elles executent un code intermédiaire MSIL (Microsoft intermediate Language)