Accueil
 Sommaire du cours
 1  Introduction à Java
 1.1  Vous avez dit Java ?
 1.2  Que recouvre le mot Java ?
 1.3  Caractéristiques
 1.3.1  Java un langage Objet
 1.3.2  Machine Virtuelle Java
 1.3.3  Robustesse
 1.4  Historique de l'API
 1.5  Environnements de développement
 1.6  En savoir plus
 Questions
 2  Concepts de bases de Java
 3  Classes et objets en Java
 4  Généralisation spécialisation en Java
 5  Organisation des sources Java
 6  API Java
 7  Exceptions en Java
 8  Concepts objets avancés en Java
 Bibliographie

 Contacts

W3C validator

Département INF  
 Conception et programmation orientées objet


1.3.3 Robustesse
  • Conçu pour du logiciel embarqué
  • Gestion de la mémoire avec ramasse miettes (en anglais, garbage collector)
  • Pas d’accès à la mémoire physique
  • Gestion des erreurs par exception (voir section 7 )
  • Contrôle des types à l’exécution
  • Compilateurs stricts et prévenants par exemple :
    • Avertissement lorsqu’une variable est affectée et non utilisée
    • Erreur à l’utilisation de variables non initialisées
    • Erreur lorsque les exceptions ne sont pas gérées

    précédent     suivant 


Le langage Java permet de réaliser des programmes robustes. Il a été conçu pour réaliser des logiciels embarqués. Il tend à pallier les difficultés dues à la gestion de la mémoire en C ou C++. Pour cela, le langage est doté d’un ramasse miettes. Les allocations d’objets sont dynamiques et la récupération de l’espace mémoire inutilisé est réalisée par ce ramasse miettes (Garbage Collector ou GC). Les langages modernes sont dotés de ramasse miettes. Le GC est déclenché lorsque la mémoire disponible de la JVM est faible ou périodiquement. Le GC est un processus qui consomme du temps et il doit être contrôlable pour permettre des applications de type temps réel. Contrairement au langage C, il n’est pas possible d’adresser directement une zone mémoire physique à partir d’un programme Java.

Comme nous le verrons dans la section 7, la gestion des erreurs est réalisée en utilisant un mécanisme qui permet de signaler l’erreur en un point du programme et de traiter cette erreur en un autre point. Le flot de contrôle des erreurs est matérialisé par des instructions de contrôle particulières que nous présentons dans la section 7.

Il n’existe pas d’équivalent à l’édition de liens pour produire un binaire exécutable. En Java, un programme est composé d’un ensemble de fichiers de bytecode interprétables par la JVM. La JVM charge ces fichiers, que l’on appelle aussi classes, à partir de leurs noms comme nous le décrirons dans la section 5.6. La JVM réalise des contrôles de type au même titre que le compilateur lorsqu’elle charge une classe. Les classes peuvent aussi être télé-chargées. Dans ce cas, elles sont vérifiées à partir d’une chaîne de certification. Les classes télé-chargées sont exécutées dans un environnement limité. Par exemple, elles ne peuvent pas accéder au système de fichiers.

Le compilateur Java est plus strict qu’un compilateur C. Par exemple, il n’autorise pas l’utilisation d’une variable si elle n’a pas été explicitement initialisée. Il émet des avertissements si une variable est affectée mais non utilisée. Il interdit aussi que les exceptions ne soient pas traitées.

Christian Bac, Denis Conan, Télécom SudParis, CSC 4002, Octobre 2015