Présentation

Article

1 - SYSTÈMES EMBARQUÉS

2 - LANGAGES DE PROGRAMMATION POUR L’EMBARQUÉ

  • 2.1 - Langage C
  • 2.2 - Langages orientés objet
  • 2.3 - Java
  • 2.4 - Java et le temps réel

3 - DÉVELOPPEMENT DES APPLICATIONS EN JAVA

  • 3.1 - Environnement de développement
  • 3.2 - Programmation système

4 - SUPPORT DES APPLICATIONS TEMPS RÉEL

5 - SUPPORT DU MÉCANISME D’EXCEPTION

6 - MODÈLE D’INITIALISATION

  • 6.1 - Modèle habituel en Java
  • 6.2 - Comparaison avec le langage C
  • 6.3 - Pratiques courantes de l’embarqué
  • 6.4 - Initialisation d’entités Java pour l’embarqué

7 - GESTION DE LA MÉMOIRE

  • 7.1 - Utilisation de la mémoire en Java
  • 7.2 - Utilisation des objets
  • 7.3 - Téléchargement dynamique
  • 7.4 - Applications statiques : répartition ROM/RAM

8 - INTERFACE JAVA/NATIF

  • 8.1 - Description des possibilités
  • 8.2 - Utilisation dans les systèmes embarqués

9 - CONCLUSION

Article de référence | Réf : S8068 v1

Modèle d’initialisation
Java dans les systèmes embarqués et temps réel

Auteur(s) : Xavier CORNU

Date de publication : 10 juin 2004

Pour explorer cet article
Télécharger l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !

Sommaire

Présentation

RÉ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’article

Auteur(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.

Cet article est réservé aux abonnés.
Il vous reste 92% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

DOI (Digital Object Identifier)

https://doi.org/10.51257/a-v1-s8068


Cet article fait partie de l’offre

Automatique et ingénierie système

(140 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

ABONNEZ-VOUS

Lecture en cours
Présentation

6. Modèle d’initialisation

Nous analysons ici les caractéristiques de l’initialisation des programmes Java d’une part et des systèmes embarqués d’autre part, et expliquons comment concilier les deux approches. Pour clarifier les propos, il sera convenu de décrire l’exécution d’un composant logiciel suivant les trois phases suivantes :

  • phase de chargement : le logiciel est placé là où il doit être exécuté ;

  • phase de démarrage : les initialisations sont effectuées ;

  • phase active : les services sont disponibles et peuvent être exécutés sur demande.

6.1 Modèle habituel en Java

Un composant Java consiste en un ensemble de classes. Son initialisation doit donc permettre d’initialiser convenablement ces classes. Deux parties doivent être considérées :

  • une partie statique constituée des champs et méthodes dits « de classe ». Ils sont similaires aux variables globales et aux fonctions des langages non orientés objet, tels que C ;

  • une partie dynamique constituée d’objets, entités créées dynamiquement contenant leurs propres champs et méthodes. Les objets n’ont pas réellement de contrepartie dans un langage non orienté objet comme C.

L’initialisation d’un composant Java doit prendre en compte l’initialisation de ces deux parties :

  • le chargement se fait au niveau des classes à n’importe quel moment. Notons qu’il peut impliquer des traitements plus complexes qu’une simple copie de code et de données dans la mémoire : il peut inclure par exemple l’édition de liens dynamiques ou même la désérialisation de classes (reconstruire une classe depuis un flux) ;

  • les classes sont initialisées « à la première utilisation » ;

  • les objets sont créés et initialisés à tout moment.

Ainsi, l’initialisation d’un composant Java suit le schéma chargement – démarrage – actif de façon non classique, car certaines parties peuvent être déjà actives alors que d’autres sont en train d’être chargées ou initialisées.

Les paragraphes suivants décrivent succinctement l’initialisation des classes et objets dans un environnement Java classique.

Nota :

le...

Cet article est réservé aux abonnés.
Il vous reste 94% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

Cet article fait partie de l’offre

Automatique et ingénierie système

(140 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

ABONNEZ-VOUS

Lecture en cours
Modèle d’initialisation
Sommaire
Sommaire

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 est réservé aux abonnés.
Il vous reste 92% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

Cet article fait partie de l’offre

Automatique et ingénierie système

(140 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

ABONNEZ-VOUS