Présentation
En anglaisRÉSUMÉ
Java est de plus en plus utilisé et la tendance pousse à son utilisation aussi dans les systèmes temps réel et embarqués. Toutefois les spécificités de ces systèmes temps réel et embarqués imposent certaines contraintes ou adaptations. Après avoir présenté les principales caractéristiques des systèmes embarqués et des langages de programmation dédié, cet article détaille les spécificités à appliquer à Java pour pouvoir l'utiliser dans ces systèmes.
Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.
Lire l’articleAuteur(s)
-
Xavier CORNU : Ingénieur de l’École supérieure d’électricité (Supélec) - Chef de projet, Trialog - Responsable du projet européen Applying Java to Automotive Control Systems (AJACS)
INTRODUCTION
L’utilisation de Java dans les systèmes embarqués et temps réel présente des particularités, par rapport à d’autres langages, qu’il convient d’analyser. Notamment, il faut porter une attention spéciale à ce qui lui manque pour répondre aux besoins des systèmes embarqués contraints, dans le but de présenter un certain nombre de recommandations.
Aussi bien les programmeurs Java qui s’orientent vers la programmation de systèmes embarqués que les programmeurs de systèmes embarqués qui s’apprêtent à inclure des modules écrits en Java seront intéressés. En effet, pour en faire une solution dédiée à l’embarqué et/ou au temps réel, le langage Java nécessite des adaptations, et parfois le programmeur doit adopter d’autres pratiques de programmation que pour une application Java « classique ».
Cet article trouve son origine dans les conclusions du projet européen AJACS (Applying Java to Automotive Control Systems) initié en février 2000 sur le constat suivant : Java a un succès grandissant dans les systèmes d’information et certains domaines de l’industrie, et intéresse de plus en plus la communauté des programmeurs temps réel et embarqué. Il est apparu que les conclusions de ce projet concernent l’ensemble des acteurs des systèmes temps réel et embarqués (aéronautique, ferroviaire, industrie, etc.). Plusieurs raisons sont à l’origine de cet engouement pour Java. En premier lieu, l’orientation objet facilite la conception de composants logiciels avec des interfaces définies strictement, jusqu’au code source. Ensuite, le langage Java est conçu pour être indépendant de la plate-forme, et donc satisfait aux exigences d’indépendance vis-à-vis du matériel, intéressantes dans une optique d’approvisionnement multisource. Enfin, sa facilité d’apprentissage (on trouve un grand nombre de programmeurs déjà formés) et sa robustesse contribuent à une meilleure productivité et à la réduction des défauts ; elles permettent à l’équipe de développement de se concentrer sur des activités plus « haut niveau » comme la définition des composants logiciels.
L’objectif d’AJACS était de définir une technologie ouverte, basée sur une structuration standard des logiciels embarqués pour l’automobile, qui saurait conserver tous les avantages mentionnés précédemment du langage Java tout en le renforçant sur les points importants que sont le temps réel, le déterminisme et l’adaptation à des milieux très contraints tels que l’on en trouve dans le milieu automobile (par exemple, une unité de contrôle électronique avec 256 ko de ROM et 16 ko de RAM). Ces points importants concernent l’environnement de développement, la programmation système, le « multithreading » et la synchronisation, les exceptions, le modèle d’initialisation des applications, la gestion de la mémoire et l’interface Java/natif. Si ces préoccupations sont encore très en amont pour la plupart des applications automobiles, elles concernent déjà certaines applications multimédias et télématiques dans les voitures et les applications de l’aéronautique ou du temps réel industriel, qui trouveront ici une description de la problématique d’un environnement Java dédié à l’embarqué et/ou au temps réel.
DOI (Digital Object Identifier)
CET ARTICLE SE TROUVE ÉGALEMENT DANS :
Accueil > Ressources documentaires > Automatique - Robotique > Automatique et ingénierie système > Supervision des systèmes industriels > Java dans les systèmes embarqués et temps réel > Support du mécanisme d’exception
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(239 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive
Présentation
5. Support du mécanisme d’exception
5.1 Exceptions en Java
Les exceptions sont une construction classique des langages de programmation. Elles permettent aux programmeurs de gérer les situations inattendues de manière unifiée. Les exceptions en Java sont très similaires à celles définies dans d’autres langages de programmation comme Ada ou C++.
En Java, les exceptions sont mises en œuvre en utilisant principalement les trois mots-clefs suivants :
-
try est utilisé pour définir le bloc où une exception peut avoir lieu : à cause d’une des instructions du bloc défini par try ou à l’intérieur d’une des procédures appelées depuis le bloc (appels imbriqués) ;
-
catch est utilisé pour définir le code du bloc appelé gestionnaire d’exception (exception handler) ;
-
throw est utilisé pour signaler qu’une exception se produit.
L’exemple suivant montre un bloc qui appelle une méthode C.MethodX(). C.MethodX contient le code qui produit l’exception ExceptionX. Cela entraîne le branchement du flot d’exécution vers le gestionnaire d’exception.
try {
C.MethodX ( ) ;
}
catch (ExceptionX e) { ... }
void MethodX throws ExceptionX {
...
throw new ExceptionX ( ) ;
...
}
Comme dans cet exemple, la production d’une exception inclut souvent la création d’un objet Java, instance d’une sous-classe de java.lang.Throwable. Cet objet renferme généralement de l’information sur l’exception, décrivant par exemple la cause de l’exception.
Lorsqu’une exception se produit, la machine virtuelle recherche dynamiquement le gestionnaire d’exception sur lequel brancher le flot d’exécution. C’est le bloc catch associé au bloc try où on est entré le plus récemment (et dont on n’est pas encore sorti) et qui peut gérer ce type d’exception, c’est-à-dire dont l’argument est de même type ou englobe l’exception qui vient de se produire. Si le bloc try possède plusieurs blocs catch compatibles, c’est le premier dans l’ordre du code source qui est choisi.
Le code, à travers la méthode main() qui englobe l’exécution du programme, possède généralement un ou plusieurs gestionnaires d’exception « par défaut » appelés ainsi car ils sont peu spécifiques (le bloc catch est par exemple associé au type Exception) et sont généralement...
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(239 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive
Support du mécanisme d’exception
BIBLIOGRAPHIE
-
(1) - GUPTA (R.) - Introduction to embedded systems - . UC Irvine (2002). http://www1.ics.uci.edu/~rgupta/ics212/w2002/intro.pdf
-
(2) - * - Spécifications OSEK/VDX. http://www.osek-vdx.org
-
(3) - GOSLING (J.), STEELE (G.), BRACHA (G.) - The Java Language Specification - . Addison-Wesley (2000).
-
(4) - LINDHOLM (T.), YELLIN (F.) - The Java Virtual Machine Specification - . Addison-Wesley (1997).
-
(5) - The Real-Time for Java Expert Group - JSR-000001 – The Real-Time Specification for Java - . Addison-Wesley (2001). http://www.rtj.org
-
(6) - J Consortium - Real-Time Core Extensions for the Java Platform - . Draft 1.0.14 (2000). http://www.j-consortium.org
-
...
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(239 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive