Component

In programmeer- en ingenieursdisciplines is een component een aanwijsbaar onderdeel van een groter programma of constructie. Gewoonlijk levert een component een bepaalde functie of een groep van verwante functies. In het programmeerontwerp wordt een systeem verdeeld in componenten die op hun beurt weer zijn opgebouwd uit modules. Component test betekent het testen van alle gerelateerde modules die als groep een component vormen, om er zeker van te zijn dat ze samenwerken.

In objectgeoriënteerd programmeren en gedistribueerde objecttechnologie is een component een herbruikbare programmabouwsteen die kan worden gecombineerd met andere componenten in dezelfde of andere computers in een gedistribueerd netwerk om een toepassing te vormen. Voorbeelden van een component zijn: een enkele knop in een grafische gebruikersinterface, een kleine rente calculator, een interface naar een database manager. Componenten kunnen op verschillende servers in een netwerk worden ingezet en met elkaar communiceren voor de benodigde diensten.

Sun Microsystems, wiens JavaBeans applicatieprogramma-interface definieert hoe een component moet worden gemaakt, definieert "een componentmodel" als een model dat gewoonlijk deze belangrijke soorten diensten levert:

  • Component-interface blootstelling en ontdekking. Zo kan een component tijdens het gebruik van de toepassing een andere component ondervragen om de kenmerken ervan te ontdekken en te weten te komen hoe ermee kan worden gecommuniceerd. Hierdoor kunnen verschillende bedrijven (eventueel onafhankelijke dienstverleners) componenten maken die kunnen samenwerken met de componenten van andere bedrijven, zonder dat een van beide van tevoren precies hoeft te weten met welke componenten het zal werken.
  • Componenteigenschappen. Hiermee kan een component zijn eigenschappen publiekelijk zichtbaar maken voor andere componenten.
  • Event handling. Hiermee kan een component aan een of meer andere componenten kenbaar maken dat een gebeurtenis (zoals een gebruiker die op een knop drukt) heeft plaatsgevonden, zodat de component daarop kan reageren. In Suns voorbeeld zou een component die een gebruikersinterface met knoppen voor een financiële toepassing biedt, een gebeurtenis oproepen wanneer de knop wordt ingedrukt, zodat een grafiekberekenende component de controle krijgt, een grafiek kan maken en deze aan de gebruiker kan tonen.
  • Persistentie. Hierdoor kan de toestand van componenten worden bewaard voor latere gebruikerssessies.
  • Application builder-ondersteuning. Een centraal idee van componenten is dat ze niet alleen gemakkelijk en flexibel kunnen worden ingezet in een gedistribueerd netwerk, maar dat ontwikkelaars gemakkelijk nieuwe componenten kunnen maken en de eigenschappen van bestaande componenten kunnen inzien.
  • Component packaging. Aangezien een component uit verschillende bestanden kan bestaan, zoals pictogrammen en andere grafische bestanden, bevat Sun's componentmodel een voorziening om de bestanden in een enkel bestandsformaat te verpakken dat gemakkelijk kan worden beheerd en gedistribueerd. (Sun noemt hun component package een JAR (Java Archive) bestandsformaat.)