Introducere in Stiinta Calculatoarelor 2013 | Page 135
prelucrări (standard, pentru şiruri de caractere, pentru funcţii
matematice, etc.) şi se includ în programul obiect dacă au fost apelate
cu directivă preprocesor #include la începutul programului sursă. La
limbajul Java, subprogramele sunt de fapt clase predefinite, grupate în
pachete (package) cu o structură arborescentă şi incluse în programul
sursă prin directiva import.
Un tip de bibliotecă foarte utilizat este Interfaţa de Programare a
Aplicaţiilor (API), care conţine seturi de funcţii, proceduri, variabile şi
structuri de date ce pot fi folosite de către programator în aplicaţii ca
obiecte precompilate, apelate standard. Există API care fac parte din
sistemul de operare sau livrate ca pachet independent, API poate fi
proprietară (de exemplu, cea pentru PlayStation a firmei Sony) sau
poate fi distribuită gratuit (cum este cea de la Microsoft Windows).
Sistemele de operare precum Windows şi Linux folosesc legarea
dinamică la încărcarea programului executabil („loadtime”). Biblioteca
de legare dinamică este uzual denumită prin acronimul DLL (Dinamic
Link Library) la Windows şi bibliotecă partajată („shared library”,
ELF) la sisteme UNIX. Biblioteca conţine module executabile precompilate şi este stocată pe disc ca fişier separat. Atunci când mai multe
aplicaţii utilizează aceeaşi bibliotecă dinamică, sistemul de operare o
poate încărca pentru fiecare în parte. Un mare dezavantaj al legării
dinamice este faptul că programele executabile depind de existenţa
fişierelor bibliotecă pe sistemul pe care rulează, execuţia aplicaţiei
întrerupându-se când aceste fişiere lipsesc, sunt redenumite sau au altă
versiune.
La unele sisteme de operare legarea dinamică are loc pe durata execuţiei
programului („runtime”), astfel: programul executabil apelează o
Interfaţă de Programare a Aplicaţiilor (API „Application
Programming Interface”), furnizând numele fişierului bibliotecă, un
număr de funcţie şi parametrii acesteia; sistemul de operare rezolvă
importul de fişier (îl încarcă în memorie) şi face apelul funcţiei
solicitate, în contul aplicaţiei. Datorită operaţiilor suplimentare
executate la fiecare apel de funcţie, se poate ca execuţia programului să
fie foarte lentă, deci să afecteze performanţa aplicaţiei. De aceea legarea
135