title: ArchJava
text: # ArchJava
  
  ArchJava est un langage de programmation par composant reposant sur une couche Java. Il est conçu avec l'idée de regrouper le formalisme d'un ADL (en)(c'est-à-dire la description d'une architecture logicielle de manière formelle) et l'implémentation réel du programme.
  
  ## Spécificités
  
  Contrairement aux autres langages ADL (en), ArchJava est basé sur le même langage de programmation que l'implémentation : Java. Ce fort couplage permet de régler le problème principal qui survient dans les autres langages ADL (en), à savoir l'incapacité à assurer complètement l'obéissance des contraintes architecturales et plus particulièrement les communications entre les composants décrits dans l'architecture. Ceci est dû au fait qu'il ne sont pas décrits dans le même langage, et donc ne peuvent exprimer correctement certaines subtilités d'un langage particulier. Ils s'en remettent alors à la bonne volonté des développeurs de suivre des lignes directrices afin de respecter les communications entre les composants de l'architecture.
  
  ## Exemple d'utilisation
  
  Ici nous avons un exemple de code en ArchJava d'un composant pour parser. Le composant Parser utilise deux ports (in et out) pour communiquer avec d'autres composants.
  
  Le composant Compiler ci-dessous contient trois sous-composants (Scanner, Parser et CodeGen). Ces composants sont connectés en séquence linéaire avec le port out connecté au port in de l'autre.
  
  