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